ImageVerifierCode 换一换
格式:DOCX , 页数:9 ,大小:60.92KB ,
资源ID:22874602      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22874602.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言求矩阵的逆矩阵Word文件下载.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言求矩阵的逆矩阵Word文件下载.docx

1、#define N 9 /默认行列式最大输入阶数为9float Fun(int n, float aNN ); /定义行列式计算程序,n为行列式阶数,a为矩阵a/*主程序*/ int main(void) int n ; /定义阶数n int i, j, i1, j1,i2 ,j2 ; /定义循环变量 float aNN , bNN , cNN; /定义数组,a为原始录入数组,b为中间变量数组,用于提取与计算余子式,c为输出结果数组 float d; /定义a的行列式值 printf(Input the order of matrix a:); /输入a的阶数 scanf(%d,&n); In

2、put matrix a:n /输入矩阵a for( i = 0; i n; i+) for( j = 0; j j+) scanf(%f, &aij); d=Fun( n, a ); /计算a的行列式 if(fabs(d)1e-6) /判断a的行列式值是否为0 printf(The determinant is not invertible! /输出“行列式值为0,不可逆 ” elseThe determinant of a is %f,d); /非0继续运算 if(n=1) /阶数为1的情况 c00=1/d; else /阶数大于1的情况 for( i = 0;=n-1; i+) for(

3、 j = 0;= n-1; for(i1=0, i2=0; i2n-1; i1+, i2+) for(j1=0, j2=0; j2 j1+, j2+) if(i1 = i) i1+; if(j1 = j) j1+; bi2j2=ai1j1; /提取aij所对应的余子式到矩阵b中 cji=pow( -1 , i + j ) * Fun( n - 1 , b)/d; /计算aij对应的代数余子式,存入矩阵c中并完成转置 /输出结果 for(i=0;in;i+) for(j=0;jj+) printf(%10f,cij); printf( /*求行列式*/float Fun( int n, floa

4、t aNN ) /定义求矩阵行列式的程序,采用逐步降阶求值 float bNN; /定义矩阵b int i = 0, j = 0; /定义循环变量i,j float sum = 0; /定义行列式运算结果sum int c = 0,p = 0; /定义辅助变量c,p if(n = 1) /行列式阶数为1函数直接返回a00值 return a00; for(i = 0;i i+) /针对行列式第一列展开 for(c = 0;c n-1; c+) for(j = 0;j if (c i) /判断录入数组b时行数值,如果c大于i,则在执行录入数组a时行数下移一行,否则不执行数+1的操作 p = 0;

5、 p = 1; bcj = ac+pj+1; /取出aij第一列每个元素对应的余子式存入数组b中 sum += ai0 * Fun(n - 1, b ) * pow(- 1 , i ); /求出a第一列每个元素代数余子式之和,其中嵌套Fun进行逐步降阶完成高阶行列式计算 return sum;方法二:用行初等变换来求矩阵的逆/应用矩阵初等变换的方法求逆矩阵/参数说明:/naturalmat原矩阵num矩阵的阶数InvMat求解结果,逆矩阵boolMatrix_Inv(double*naturalmat,intnum,double*InvMat)inti,j,k;double*MatEnhanc

6、ed;/增广矩阵(A|E) MatEnhanced=(double*)malloc(num*sizeof(double*);for(i=0;num;MatEnhancedi(double*)malloc(2*num*sizeof(double);*temp;tempxishu=1;/初等变换时系数,设初值为1i+)/增广矩阵赋值,前半部分for(j=0;MatEnhancedijnaturalmatij;/增广矩阵赋值,后半部分for(j=num;2*num;0;/先将后半部分全部赋值为0MatEnhancedii+num1;/再将其对角线部分赋值为1/接下来进行初等行变换if(MatEnha

7、ncedii=0)/如果前半部分的对角线上的元素为0,此时进行行变换if(inum-1)/如果是最后一行,那么说明该矩阵不可returnfalse;/对第i行以后的各行进行判断,找到第i个元素不为零的行,并与第i行进行交换for(j=i;if(MatEnhancedji!0)kj;/记住该行的行号 break;/退出循环/接下来对第i行和第k行进行交换MatEnhancedk;/第k行MatEnhancedkMatEnhancedi;temp;/初等变换j+)/对其他行的所有列进行计算if(ji)/本行不参与计算0)/只有当其不为零时进行计算,否则不计算xishuMatEnhancedji/MatEnhancedii;for(k=i;kk+)/对后面的所有列进行计算MatEnhancedjk-=xishu*MatEnhancedik;/将本行所有列都除以对角线上的值,将前半部分化成单位矩阵MatEnhancedii;if(xishu/=xishu;/计算完成后,后半部分即为原矩阵的逆矩阵,将其赋值给InvMat.InvMatijMatEnhancedij+num;/内存释放free(MatEnhanced);free(temp);true;/返回

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1