• 大小: 221KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: 其他
  • 标签:

资源简介

该程序实现了两矩阵相乘、矩阵转置和求逆矩阵的功能,是非常实用的,特别是求逆矩阵的算法,非常到位!

资源截图

代码片段和文件信息

// Array.cpp : Defines the entry point for the console application.
//说明:该程序实现了矩阵a和b相乘、矩阵转置、求矩阵逆矩阵   By YeHanhan

#include “stdafx.h“
#include 

const int M = 3; //数组维数根据实际需要定
const int N = 5;
const int K = 4;

void Array_Multipy(int a[][N] int b[][K] int ab_multipy[][K]);
void Array_Transpose(int a[][N] int a_transpose[][M]);
void Array_Inverse(int c[][M] int c_inverse[][M]);


int main(int argc char* argv[])
{
//1、两矩阵 a(M*N) 和 b(N*K) 相乘 前提条件是a的列数必须和b的行数一致;c的第i行第j列元素等于a的第i行元素与b的第j列元素对应乘积之和
int a[M][N] = {654103  23154  75161};
int b[N][K] = {1539  10574  3456  8926  5496};
int ab_multipy[M][K] = {0};
Array_Multipy(abab_multipy);

cout<<“a与b矩阵的乘积ab_multipy为:“< for (int i=0; i {
for (int j=0; j {
cout< }
cout< }
cout<
//2、a矩阵转置
int a_transpose[N][M];
Array_Transpose(aa_transpose);

cout<<“a矩阵的转置矩阵a_transpose为:“< for (i=0; i {
for (int j=0; j {
cout< }
cout< }
cout<
//3、求c矩阵逆矩阵
int c[M][M] = {251  425  679};
int c_inverse[M][M] = {0};
Array_Inverse(cc_inverse);

cout<<“c矩阵的逆矩阵c_inverse为:“< for (i=0; i {
for (int j=0; j {
cout< }
cout< }
cout<
return 0;
}

//两矩阵相乘
void Array_Multipy(int a[][N] int b[][K] int ab_multipy[][K])
{
int ijt;
int temp = 0;
int a1 = M a2 = N b2 = K; //数组维数

for(i = 0; i < a1; i++)
{
for(j = 0; j < b2; j++)
{
temp = 0;   
for(t = 0; t < a2; t++)
{   
temp += a[i][t] * b[t][j];   
}   
ab_multipy[i][j] = temp;   
}   

}

//矩阵转置
void Array_Transpose(int a[][N] int a_transpose[][M])
{
int ij;
for (i = 0; i < N; i++)
{
for (j = 0; j < M; j++)
{
a_transpose[i][j] = a[j][i];
}
}
}


int js(int c[][M] int n);
void n_1(int c[][M]int c_inverse[][M]int n);
//求矩阵的逆矩阵
void Array_Inverse(int c[][M] int c_inverse[][M])
{
int zj; 
int r temp; 

r=js(cM);                     /*调用js()函数计算原矩阵的行列式值*/ 
// printf(“\n原矩阵行列式值为:|C|==%d\n“r);    

if (r==0) 
printf(“因为|C|==0,则原矩阵无逆矩阵!“);  /*判断条件:若|A|==0,则原矩阵无逆矩阵,反之则存在逆矩阵*/ 
else
{
n_1(cc_inverseM);                                       /*调用n_1()函数,得到原矩阵各元素对应的“余子式“存放在数组b[N][N]中*/ 
for(z=0;z {
for(j=0;j {
if((z+j)%2!=0 && c_inverse[z][j]!=0) 
c_inverse[z][j]=-c_inverse[z][j]; 
}

}
for(z=0;z {
for(j=z+2;j {
temp=c_inverse[z][j]; 
c_inverse[z][j]=c_inverse[j][z]; 
c_inverse[j][z]=temp; 
}
}

//  printf(“因为|C|!==0,则原矩阵存在逆矩阵!\n“); 
// 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      53760  2011-04-14 22:07  Array\Array.opt

     文件       5080  2011-04-14 22:07  Array\Array.cpp

     文件        769  2011-04-14 20:12  Array\StdAfx.h

     文件        292  2011-04-14 20:12  Array\StdAfx.cpp

     文件       1202  2011-04-14 20:12  Array\ReadMe.txt

     文件       4524  2011-04-14 20:12  Array\Array.dsp

     文件        535  2011-04-14 20:12  Array\Array.dsw

     文件      50176  2011-04-14 22:07  Array\Array.ncb

     文件      50176  2011-04-14 22:05  Array\Debug\vc60.idb

     文件     213872  2011-04-14 20:12  Array\Debug\Array.pch

     文件      69632  2011-04-14 22:05  Array\Debug\vc60.pdb

     文件       2191  2011-04-14 20:12  Array\Debug\StdAfx.obj

     文件     208979  2011-04-14 22:05  Array\Debug\Array.exe

     文件     525312  2011-04-14 22:05  Array\Debug\Array.pdb

     文件     237232  2011-04-14 22:05  Array\Debug\Array.ilk

     文件      13166  2011-04-14 22:05  Array\Debug\Array.obj

     文件       1348  2011-04-14 22:05  Array\Array.plg

     目录          0  2011-04-14 20:12  Array\Debug

     目录          0  2011-04-14 20:12  Array

----------- ---------  ---------- -----  ----

              1438246                    19


评论

共有 条评论

相关资源