本程序主要实现了一个方阵的求逆与实现了逆矩阵和原矩阵的乘积为单位矩阵
2016-03-03 20:20
465 查看
#include<stdio.h> #define M 10 int main() { void chengji(int n); float a[M][M*2]; float b[M][M*2]; float c[M][M*2]; float d[M][M];//存储原矩阵 float t,x; int k,T,i,j,n; printf("输入方阵的维数(小于M):\n"); //请输入方阵,即行和列相等的矩阵。 scanf("%d",&T); n=T; printf("请输入矩阵:\n"); for(i=0; i<T; i++) for (j=0; j<T; j++) { scanf("%f",&b[i][j]); d[i][j]=b[i][j]; } printf("原矩阵为:\n"); for (i=0; i<T; i++) { for (j=0; j<T; j++) printf("%10.3f",b[i][j]); printf("\n"); } for(i=0; i<T; i++) for(j=0; j<(2*T); j++) { if(j<T) a[i][j]=b[i][j]; else if (j==T+i) a[i][j]=1.0; else a[i][j]=0.0; } for(i=0; i<T; i++) { for(k=0; k<T; k++) { if(k!=i) { t=a[k][i]/a[i][i]; for(j=0; j<(2*T); j++) { x=a[i][j]*t; a[k][j]=a[k][j]-x; } } } } for(i=0; i<T; i++) { t=a[i][i]; for(j=0; j<(2*T); j++) a[i][j]=a[i][j]/t; } int y=1; for(i=0; i<T; i++) y=y*a[i][i]; if(y==0) printf("对不起,您输入的矩阵没有逆矩阵,请重新输入。\n"); else { for(i=0; i<T; i++) for(j=0; j<T; j++) b[i][j]=a[i][j+T]; printf("逆矩阵为:\n"); for (i=0; i<T; i++) { for (j=0; j<T; j++) printf("%10.3f",b[i][j]); printf("\n"); } } printf("原方阵与逆方阵的积:\n"); k=0; //int l=0; //int i,j; for(i=0; i<n; i++) { for(j=0; j<n; j++) { c[i][j]=0; for(k=0; k<n; k++) { c[i][j]+=d[i][k]*b[k][j]; //printf("%g ",c[i][j]); } } } for (i=0; i<n; i++) { for(j=0; j<n; j++) { printf("%g ",c[i][j]); } puts(""); } puts(" "); return 0; }
相关文章推荐
- 好记性不如烂笔头
- Linux Makefile伪目标
- NLTK学习笔记——Classify模块(3)
- iOS多线程知识总结
- struts2头像上传练习及其注意事项
- Mybatis分页插件-PageHelper的使用
- DNS服务原理及bind98的应用
- [LeetCode]Self Crossing
- 2016/3/3
- 同步I/O sync、fsync和fdatasync函数
- 设计模式——装饰者模式
- NLTK学习笔记——Classify模块(2)
- 蓝桥杯六7牌型种类
- 安卓类似于微信朋友圈功能,集合了Gson,PhotoView,android-universal-image-loader这些用法
- 多阶段决策模板(2059)
- c语言常出错误
- 使用wireshark常用的过滤命令
- granfan inflxDB zabbix
- kaptcha验证码
- Masonry自动布局学习博客网址