c语言实现矩阵的加减乘除求逆运算.doc

上传人:豆**** 文档编号:23961573 上传时间:2022-07-02 格式:DOC 页数:24 大小:141KB
返回 下载 相关 举报
c语言实现矩阵的加减乘除求逆运算.doc_第1页
第1页 / 共24页
c语言实现矩阵的加减乘除求逆运算.doc_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《c语言实现矩阵的加减乘除求逆运算.doc》由会员分享,可在线阅读,更多相关《c语言实现矩阵的加减乘除求逆运算.doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-datec语言实现矩阵的加减乘除求逆运算c语言实现矩阵的加减乘除求逆运算#include#include#define col 3#define row 3class matrix/类的定义private:double mcolrow;/矩阵设置为私有的,public:matrix()/无参数的构造函数matrix(double acolrow);/有参数的构造函数matri

2、x Add(matrix &b);/加法运算声明matrix Sub(matrix &b);/减法运算声明matrix Mul(matrix &b);/乘法运算声明matrix Div(matrix &b);/除法运算声明matrix Inverse();/求逆运算声明matrix();/析构函数声明void display();/显示函数声明;matrix:matrix(double acolrow)/构造函数的定义int i,j;for(i=0;icol;i+)for(j=0;jrow;j+)mij=aij;matrix matrix:Add(matrix &b)/加法运算int i,j;

3、matrix*c=(matrix*)malloc(sizeof(matrix);for(i=0;icol;i+)for(j=0;jmij=mij+b.mij;return(*c);matrix matrix:Sub(matrix &b)/减法运算int i,j;matrix*c=(matrix*)malloc(sizeof(matrix);for(i=0;icol;i+)for(j=0;jmij=mij-b.mij;return *c;matrix matrix:Mul(matrix &b)/乘法运算int i,j,k;double sum=0;matrix*c=(matrix*)malloc

4、(sizeof(matrix);for(i=0;icol;i+)for(j=0;jrow;j+)for(k=0;kmij=sum;sum=0;return(*c);matrix matrix:Div(matrix &b)/除法运算/除法直接求解,参见主函数matrix c;return(c);matrix matrix:Inverse()/求逆运算 /参考博客:int i,j,k,M=col,N=2*col;double bcolcol*2;matrix*c=(matrix*)malloc(sizeof(matrix);for(i=0;iM;i+) /赋值 for(j=0;jM;j+) bij

5、=mij; for(i=0;iM;i+) /扩展 for(j=M;jN;j+) if(i=(j-M) bij=1; else bij=0; /*下面进行求逆运算*/for(i=0;iM;i+) if(bii=0) for(k=i;kM;k+) if(bki!=0) /作者的博客里面此处为bkk,貌似是不正确的, /因为这对比如说是0,0,1,1,0,1,0,1,1的矩阵就会判断为不可逆, /而实际上该矩阵是可逆的,这里应该是作者笔误,待进一步求证 for(int j=0;j=i;j-) bij/=bii; for(k=0;kM;k+) if(k!=i) double temp=bki; for

6、(j=0;jN;j+) bkj-=temp*bij; /*导出结果*/for(i=0;iM;i+) for(j=3;jmij-3=bij; return (*c);matrix:matrix()void matrix:display()int i,j;for(i=0;icol;i+)for(j=0;jrow;j+)printf(%f ,mij);printf(n);void main()double a33=1,0,1,0,1,1,0,3,1;double b33=0,0,1,1,0,1,0,1,0;matrix ma(a),mb(b),mc;int flag;printf(-n请选择要进行的

7、操作:n1、打印t2、加法);printf(t3、减法n4、乘法t5、除法t6、求逆n7、退出n);printf(-n);scanf(%d,&flag);while(flag=1)|(flag=2)|(flag=3)|(flag=4)|(flag=5)|(flag=6)|(flag=7)if(flag=1)printf(矩阵a为:n);ma.display();printf(矩阵b为:n);mb.display();if(flag=2)/矩阵加法运算printf(矩阵加法运算结果:n);mc=ma.Add(mb); mc.display();else if(flag=3)/矩阵减法运算prin

8、tf(矩阵减法运算结果:n);mc=ma.Sub(mb); mc.display();else if(flag=4)/矩阵乘法运算printf(矩阵乘法运算结果:n);mc=ma.Mul(mb);mc.display();else if(flag=5)/矩阵除法运算printf(矩阵除法运算结果:n);printf(矩阵的除法分成两类:n 1、AB=inverse(A)*B n 2、B/A=B*inverse(A)n);printf(采用第1类,则ab的结果为:n);mc=ma.Inverse();mc=mc.Mul(mb);mc.display();printf(采用第2类,则a/b的结果为:n);mc=mb.Inverse();mc=ma.Mul(mc);mc.display();else if (flag=6)/矩阵求逆运算printf(矩阵a求逆运算结果为:n);mc=ma.Inverse();mc.display();printf(矩阵b求逆运算结果为:n);mc=mb.Inverse();mc.display();else exit(0);printf(-n请选择要进行的操作:n1、打印t2、加法);printf(t3、减法n4、乘法t5、除法t6、求逆n7、退出n);printf(-n);scanf(%d,&flag);-

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁