求矩阵的矩阵求逆运算法则。

线性代数抽象矩阵求逆怎么做【考研吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:3,350,602贴子:
线性代数抽象矩阵求逆怎么做收藏
看看这道题
考研辅导,南京文都考研,专业师资辅导团队,面授小班+全程督学+测评模考+专项辅导,班型多样,课程全面,高含金量复习资料,高效复习,直击名校!
哈哈哈哈哈哈哈和哈哈哈哈哈哈哈和哈哈哈哈哈哈哈和
哈哈哈哈哈哈哈和哈哈哈哈哈哈哈和和
凑咯,凑AB=E
哦,提a把三e挪过去,把负三除过去
登录百度帐号很久没有写过C语言,今天写了一个关于矩阵的算法
完整代码如下:
#include&atlstr.h&
#include&iostream&
#include&string&
using namespace
//创建矩阵
float **Creat(int n)
float **array=new float*[n];
for(int i=0;i&n;i++)
array[i]=new float[n];
printf("请输入矩阵:\n");
for(int i=0;i&n;i++)
for(int j=0;j&n;j++)
cin&&array[i][j];
//求行列式的值:
float Value(float **array,int n)
float Result=0;
if(n==1) return array[0][0];
float **temp=new float*[n-1];
for(int i=0;i&n-1;i++)
temp[i]=new float[n-1];
for(int i=0;i&n;i++)
for(int j=0;j&n-1;j++)
for(int k=0;k&n-1;k++)
else flag=1;
temp[j][k]=array[j+flag][k+1];
int flag2=-1;
if(i%2==0) flag2=1;
Result+=flag2*array[i][0]*Value(temp,n-1);
//求逆矩阵: 伴随矩阵行列式的值除以行列式的值
float **GetMarin(float **array,int n)
float **resultMarin=
float resultSum=Value(array,n);
float **temp=new float*[n-1];
for(int i=0;i&n-1;i++)
temp[i]=new float[n-1];
for(int i=0;i&n;i++)
for(int j=0;j&n;j++)
for(int k=0;k&n-1;k++)
for(int m=0;m&n-1;m++)
int flag1=0;
int flag2=0;
if(k&i) flag1=0;
else flag1=1;
if(m&j) flag2=0;
else flag2=1;
temp[k][m]=array[k+flag1][m+flag2];
int flag3=-1;
if((i+j)%2==0) flag3=1;
resultMarin[j][i]=(float)flag3*Value(temp,n-1)/resultS
return resultM
//矩阵加减
float **GetAdd(float **array1,float **array2,int rowCount,int columCount,float v)
float **result=new float*[rowCount];
for(int i=0;i&rowCi++)
result[i]=new float[columCount];
for(int i=0;i&rowCi++)
for(int j=0;j&columCj++)
result[i][j]=array1[i][j]+v*array2[i][j];
//倍法矩阵
float **Matrixk(float **arry,int rowCount,int columCount,int k)
float **result=new float*[rowCount];
for(int i=0;i&rowCi++)
result[i]=new float[columCount];
for(int i=0;i&rowCi++)
for(int j=0;j&columCj++)
result[i][j]=k*(arry[i][j]);
//矩阵数乘
float **MatrixCheng(float **arry1,float **arry2,int rowCount1,int columCount1,int rowCount2,int columCount2)
if(columCount1!=rowCount2)
return NULL;
float **result=new float*[rowCount1];
for(int i=0;i&rowCount1;i++)
result[i]=new float[columCount2];
//数乘运算
for(int i=0;i&rowCount1;i++)
for(int j=0;j&columCount2;j++)
float temp=0;
for(int k=0;k&columCount1;k++)
temp+=arry1[i][k]*arry2[k][j];
result[i][j]=
/***********下面进行测试,为了方便,全部采用的方阵**********/
void OutPut(float **array,int n)
printf("运算结果:\n");
for(int i=0;i&n;i++)
for(int j=0;j&n;j++)
printf("%f ",array[i][j]);
printf("\n");
void test()
printf("请输入你想进行的运算:\n1.求行列式值\n2.求逆矩阵\n3.矩阵加减运算\n4.矩阵数乘运算\n");
int choise=0;
if(choise==1)
printf("请输入你想输入矩阵的阶数:");
float **array=Creat(n);
float Result=Value(array,n);
printf("行列式的值=%f\n",Result);
else if(choise==2)
printf("请输入你想输入矩阵的阶数:");
float **array=Creat(n);
float Result=Value(array,n);
if(Result==0)
printf("该矩阵没有逆矩阵\n");
float **resultMarin=GetMarin(array,n);
OutPut(resultMarin,n);
else if(choise==3)
printf("请输入你想输入矩阵1的阶数:");
float **array1=Creat(n1);
printf("请输入你想输入矩阵2的阶数:");
float **array2=Creat(n2);
printf("请输入运算系数:");
float opreation=0;
float **resultMarin=GetAdd(array1,array2,n1,n1,opreation);
OutPut(resultMarin,n1);
else if(choise==4)
printf("请输入你想输入矩阵1的阶数:");
float **array1=Creat(n1);
printf("请输入你想输入矩阵2的阶数:");
float **array2=Creat(n2);
float **resultMarin=MatrixCheng(array1,array2,n1,n1,n2,n2);
OutPut(resultMarin,n1);
printf("------------");
void main()
#include&atlstr.h&#include&iostream&#include&string&//创建矩阵float **Creat(int n){& & float **array=new float*[n];& & for(int i=0;i&n;i++)& & {& & & & array[i]=new float[n];& & }& & printf("请输入矩阵:\n");& & for(int i=0;i&n;i++)& & {& & & & for(int j=0;j&n;j++)& & & & {& & & & & & cin&&array[i][j];& & & & }& & }& &}//求行列式的值:float Value(float **array,int n){& & float Result=0;& & if(n==1) return array[0][0];& & float **temp=new float*[n-1];& & for(int i=0;i&n-1;i++)& & {& & & & temp[i]=new float[n-1];& & }& & for(int i=0;i&n;i++)& & {& & & & for(int j=0;j&n-1;j++)& & & & {& & & & & & for(int k=0;k&n-1;k++)& & & & & & {& & & & & & & && & & & & & & & if(j&i) &flag=0;& & & & & & & & else flag=1;& & & & & & & & temp[j][k]=array[j+flag][k+1];& & & & & & }& & & & }& & & & int flag2=-1;& & & & if(i%2==0) flag2=1;& & & & Result+=flag2*array[i][0]*Value(temp,n-1);& & }& & return R}//求逆矩阵: 伴随矩阵行列式的值除以行列式的值float **GetMarin(float **array,int n){& & float **resultMarin=& & float resultSum=Value(array,n);& & float **temp=new float*[n-1];& & for(int i=0;i&n-1;i++)& & {& & & & temp[i]=new float[n-1];& & }& & for(int i=0;i&n;i++)& & {& & & & for(int j=0;j&n;j++)& & & & {& & & & & & for(int k=0;k&n-1;k++)& & & & & & {& & & & & & & & for(int m=0;m&n-1;m++)& & & & & & & & {& & & & & & & & & & int flag1=0;& & & & & & & & & & int flag2=0;& & & & & & & & & & if(k&i) flag1=0;& & & & & & & & & & else flag1=1;& & & & & & & & & & if(m&j) flag2=0;& & & & & & & & & & else flag2=1;& & & & & & & & & & temp[k][m]=array[k+flag1][m+flag2];& & & & & & & & }& & & & & & }& & & & & & int flag3=-1;& & & & & & if((i+j)%2==0) flag3=1;& & & & & & resultMarin[j][i]=(float)flag3*Value(temp,n-1)/resultS& & & & }& & }& & return resultM}//矩阵加减float **GetAdd(float **array1,float **array2,int rowCount,int columCount,float v){float **result=new float*[rowCount];for(int i=0;i&rowCi++){result[i]=new float[columCount];}for(int i=0;i&rowCi++){for(int j=0;j&columCj++){ result[i][j]=array1[i][j]+v*array2[i][j];}}}//倍法矩阵float **Matrixk(float **arry,int rowCount,int columCount,int k){float **result=new float*[rowCount];for(int i=0;i&rowCi++){result[i]=new float[columCount];}for(int i=0;i&rowCi++){for(int j=0;j&columCj++){ result[i][j]=k*(arry[i][j]);}}}//矩阵数乘float **MatrixCheng(float **arry1,float **arry2,int rowCount1,int columCount1,int rowCount2,int columCount2){if(columCount1!=rowCount2){return NULL;}float **result=new float*[rowCount1];for(int i=0;i&rowCount1;i++){result[i]=new float[columCount2];}//数乘运算for(int i=0;i&rowCount1;i++){for(int j=0;j&columCount2;j++){float temp=0;for(int k=0;k&columCount1;k++){temp+=arry1[i][k]*arry2[k][j];}result[i][j]=}}}/***********下面进行测试,为了方便,全部采用的方阵**********/void OutPut(float **array,int n){& & printf("运算结果:\n");& & for(int i=0;i&n;i++)& & {& & & & for(int j=0;j&n;j++)& & & & {& & & & & & printf("%f ",array[i][j]);& & & & }& & & & printf("\n");& & }}void test(){printf("请输入你想进行的运算:\n1.求行列式值\n2.求逆矩阵\n3.矩阵加减运算\n4.矩阵数乘运算\n");int choise=0;cin&&if(choise==1){ & printf("请输入你想输入矩阵的阶数:"); &cin&&n; &float **array=Creat(n); float Result=Value(array,n);& printf("行列式的值=%f\n",Result);}else if(choise==2){ & printf("请输入你想输入矩阵的阶数:"); &cin&&n; &float **array=Creat(n); float Result=Value(array,n);& & if(Result==0)& & {printf("该矩阵没有逆矩阵\n"); & }else{ &float **resultMarin=GetMarin(array,n); &OutPut(resultMarin,n);}}else if(choise==3){ &printf("请输入你想输入矩阵1的阶数:");int n1; &cin&&n1; &float **array1=Creat(n1); & & printf("请输入你想输入矩阵2的阶数:");int n2; &cin&&n2; &float **array2=Creat(n2); &printf("请输入运算系数:"); &float opreation=0; &cin&& &float **resultMarin=GetAdd(array1,array2,n1,n1,opreation); & &OutPut(resultMarin,n1);}else if(choise==4){ & printf("请输入你想输入矩阵1的阶数:");int n1; &cin&&n1; &float **array1=Creat(n1); & & printf("请输入你想输入矩阵2的阶数:");int n2; &cin&&n2; &float **array2=Creat(n2); &float **resultMarin=MatrixCheng(array1,array2,n1,n1,n2,n2); & &OutPut(resultMarin,n1);}else{printf("------------");}& & test();}void main(){& & test();}
阅读(...) 评论()[转载]Matlab实现矩阵的求逆运算
1、逆矩阵定义
A为一个n阶方阵,若存在另一个n阶矩阵B,使得: AB=BA=E。
则称B是A的逆矩阵,而A则被称为可逆矩阵。
2、求逆矩阵的方法:初等行变换法
将一n阶可逆矩阵A和n阶单位矩阵I写成一个n x
2n的矩阵,计为B矩阵。对B施行初等行变换,即对A与I进行完全相同的若干初等行变换,目标是把A化为单位矩阵。当A化为单位矩阵的同时,B的右一半矩阵同时化为了A的逆矩阵。
function A_inv = matrix_inverse(A)
对矩阵进行初等行变换求其逆
[row, col] =
B为单位矩阵
for i = 1 :
依次将对角行的元素归一化
& & div_i = A(i,
& & for j = 1 :
& A(i, j) = A(i, j) / div_i;
& B(i, j) = B(i, j) / div_i;
& & for ii = 1 :
& tmp_ii = - A(ii, i) / A(i, i);
& if i == ii
& & & tmp_ii =
& % 初等行变换
& for jj = 1 : col
& & & A(ii, jj)
= A(ii, jj) + tmp_ii * A(i, jj);
& & & B(ii, jj)
= B(ii, jj) + tmp_ii * B(i, jj);
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。豆丁微信公众号
君,已阅读到文档的结尾了呢~~
3--1,2矩阵的基本运算、逆矩阵,逆矩阵的运算法则,逆矩阵的运算,逆矩阵的运算性质,逆矩阵运算,逆矩阵运算法则,逆矩阵运算公式,逆矩阵的求法,求逆矩阵的方法,矩阵的逆矩阵
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
3--1,2矩阵的基本运算、逆矩阵
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 矩阵的逆运算法则 的文章

 

随机推荐