C语言求矩阵的逆矩阵

C语言求矩阵的逆矩阵

ID:47427216

大小:32.90 KB

页数:11页

时间:2020-01-10

C语言求矩阵的逆矩阵_第页
预览图正在加载中,预计需要20秒,请耐心等待
资源描述:

《C语言求矩阵的逆矩阵》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C语言求矩阵的逆矩阵班级:自动化1604小组成员:潘孝枫金豆2017年4月作业要求:1.用C语言编程;2.查阅相关资料,至少了解三种以上的求矩阵的逆的方法;3.俩人一组,提交大作业报告,含源代码。方法一:用伴随矩阵求矩阵的逆矩阵(潘孝枫)求矩阵的逆求伴随矩阵求矩阵的行列式功能模块输入矩阵最主要的问题就是求解矩阵的逆矩阵,而且是一个动态矩阵1.求解矩阵的伴随矩阵,套用求行列式的函数解决问题的关键是如何运用一个循环递归将求行列式的函数反复嵌套函数的分块1.求矩阵的行列式的函数2.求余子式的函数3.求

2、逆的函数#include#include#defineN9//默认行列式最大输入阶数为9floatFun(intn,floata[N][N]);//定义行列式计算程序,n为行列式阶数,a为矩阵a/*主程序*/intmain(void){intn;//定义阶数ninti,j,i1,j1,i2,j2;//定义循环变量floata[N][N],b[N][N],c[N][N];//定义数组,a为原始录入数组,b为中间变量数组,用于提取与计算余子式,c为输出结果数组flo

3、atd;//定义a的行列式值printf("Inputtheorderofmatrixa:");//输入a的阶数scanf("%d",&n);printf("Inputmatrixa:");//输入矩阵afor(i=0;i

4、");//输出“行列式值为0,不可逆”}else{printf("Thedeterminantofais%f",d);//非0继续运算if(n==1)//阶数为1的情况{c[0][0]=1/d;}else//阶数大于1的情况{for(i=0;i<=n-1;i++){for(j=0;j<=n-1;j++){for(i1=0,i2=0;i2

5、[i2][j2]=a[i1][j1];//提取a[i][j]所对应的余子式到矩阵b中}}c[j][i]=pow(-1,i+j)*Fun(n-1,b)/d;//计算a[i][j]对应的代数余子式,存入矩阵c中并完成转置}}}printf("");//输出结果for(i=0;i

6、程序,采用逐步降阶求值{floatb[N][N];//定义矩阵binti=0,j=0;//定义循环变量i,jfloatsum=0;//定义行列式运算结果sumintc=0,p=0;//定义辅助变量c,pif(n==1)//行列式阶数为1函数直接返回a[0][0]值{returna[0][0];}for(i=0;i

7、组a时行数下移一行,否则不执行数+1的操作{p=0;}else{p=1;}b[c][j]=a[c+p][j+1];//取出a[i][j]第一列每个元素对应的余子式存入数组b中}}sum+=a[i][0]*Fun(n-1,b)*pow(-1,i);//求出a第一列每个元素代数余子式之和,其中嵌套Fun进行逐步降阶完成高阶行列式计算}returnsum;}方法二:用行初等变换来求矩阵的逆//应用矩阵初等变换的方法求逆矩阵//参数说明://        naturalmat 原矩阵//       

8、 num 矩阵的阶数//        InvMat 求解结果,逆矩阵bool Matrix_Inv(double **naturalmat,int num,double **InvMat){      int i,j,k;      double **MatEnhanced;//增广矩阵(A

9、E)     MatEnhanced = (double**)malloc(num*sizeof(double*));      for(i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。