资源简介
该程序实现了两矩阵相乘、矩阵转置和求逆矩阵的功能,是非常实用的,特别是求逆矩阵的算法,非常到位!
代码片段和文件信息
// 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
评论
共有 条评论