矩阵求逆算法及程序实现(C++)

在做课题时,遇到了求多项式问题,利用了求逆方法。矩阵求逆一般使用简单的算法,还有快速算法 如全选主元高斯-约旦消元法,但本文程序主要写了简单的矩阵求逆算法定义法之伴随矩阵求逆公式如下,其中A可逆:                 A^{-1}=\frac{A^*}{|A|},其中A^*是A的伴随矩阵。。   1.给定一个方阵,非奇异(不是也可,程序有考虑);   2.由矩阵得到其行列式,求其值如|A|;   3.求其伴随矩阵A^*;   4.得到其逆矩阵。 主要函数如下: 复制代码 1 //得到给定矩阵src的逆矩阵保存到des中。 2 bool GetMatrixInverse(double src[N][N],int n,double des[N][N]) 3 { 4 double flag=getA(src,n); 5 double t[N][N]; 6 if(flag==0) 7 { 8 return false; 9 } 10 else 11 { 12 getAStart(src,n,t); 13 for(int i=0;i=i)?k+1:k]; 18 19 } 20 } 21 double t = getA(temp,n-1); 22 if(i%2==0) 23 { 24 ans += arcs[0][i]*t; 25 } 26 else 27 { 28 ans -= arcs[0][i]*t; 29 } 30 } 31 return ans; 32 } 复制代码计算伴随矩阵: 复制代码 1 //计算每一行每一列的每个元素所对应的余子式,组成A* 2 void getAStart(double arcs[N][N],int n,double ans[N][N]) 3 { 4 if(n==1) 5 { 6 ans[0][0] = 1; 7 return; 8 } 9 int i,j,k,t; 10 double temp[N][N]; 11 for(i=0;i=i?k+1:k][t>=j?t+1:t]; 20 } 21 } 22 23 24 ans[j][i] = getA(temp,n-1); 25 if((i+j)%2 == 1) 26 { 27 ans[j][i] = - ans[j][i]; 28 } 29 } 30 } 31 } 复制代码  这三个函数组成了求逆矩阵的步骤,笔者调用并成功运用,无错,在此共勉。如有问题,请留言。谢谢   另有其他矩阵求逆好算法及代码请大家共享。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值