資源簡介
該程序實現了兩矩陣相乘、矩陣轉置和求逆矩陣的功能,是非常實用的,特別是求逆矩陣的算法,非常到位!

代碼片段和文件信息
//?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? {
for(j?=?0;?j? {
temp?=?0;???
for(t?=?0;?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? {
for?(j?=?0;?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
評論
共有 條評論