在做课题时,遇到了求多项式问题,利用了求逆方法。矩阵求逆一般使用简单的算法,还有快速算法 如全选主元高斯-约旦消元法,但本文程序主要写了简单的矩阵求逆算法定义法之伴随矩阵求逆公式如下,其中A可逆:

                ,其中伴随矩阵。。

  1.给定一个方阵,非奇异(不是也可,程序有考虑);

  2.由矩阵得到其行列式,求其值如|A|;

  3.求其伴随矩阵

  4.得到其逆矩阵。

主要函数如下:

 //得到给定矩阵src的逆矩阵保存到des中。
bool GetMatrixInverse(double src[N][N],int n,double des[N][N])
{
double flag=getA(src,n);
double t[N][N];
if(flag==)
{
return false;
}
else
{
getAStart(src,n,t);
for(int i=;i<n;i++)
{
for(int j=;j<n;j++)
{
des[i][j]=t[i][j]/flag;
} }
} return true; }

计算|A|:

 //按第一行展开计算|A|
double getA(double arcs[N][N],int n)
{
if(n==)
{
return arcs[][];
}
double ans = ;
double temp[N][N]={0.0};
int i,j,k;
for(i=;i<n;i++)
{
for(j=;j<n-;j++)
{
for(k=;k<n-;k++)
{
temp[j][k] = arcs[j+][(k>=i)?k+:k]; }
}
double t = getA(temp,n-);
if(i%==)
{
ans += arcs[][i]*t;
}
else
{
ans -= arcs[][i]*t;
}
}
return ans;
}

计算伴随矩阵:

 //计算每一行每一列的每个元素所对应的余子式,组成A*
void getAStart(double arcs[N][N],int n,double ans[N][N])
{
if(n==)
{
ans[][] = ;
return;
}
int i,j,k,t;
double temp[N][N];
for(i=;i<n;i++)
{
for(j=;j<n;j++)
{
for(k=;k<n-;k++)
{
for(t=;t<n-;t++)
{
temp[k][t] = arcs[k>=i?k+:k][t>=j?t+:t];
}
} ans[j][i] = getA(temp,n-);
if((i+j)% == )
{
ans[j][i] = - ans[j][i];
}
}
}
}

  这三个函数组成了求逆矩阵的步骤,笔者调用并成功运用,无错,在此共勉。如有问题,请留言。谢谢

  另有其他矩阵求逆好算法及代码请大家共享。

最新文章

  1. GJM : C#语言学习笔记
  2. 在centos5开启telnet服务并验证
  3. 带不带protype的区别
  4. OLAP 模型
  5. 谈JavaScript组合拼接字符串的效率 --转载
  6. 【Linux学习笔记】用nc实现两台主机间的文件传输(不需要输密码)
  7. 如何系统地学习JavaScript
  8. ListView控件详解
  9. Spring+SpringMVC+MyBatis深入学习及搭建(八)——MyBatis查询缓存
  10. CSS揭秘(三)形状
  11. AOP从静态代理到动态代理 Emit实现
  12. PHP 2个比较经典的加密解密函数
  13. 洛谷 P1706 全排列问题
  14. Rest模式get,put,post,delete含义与区别
  15. Vim设计
  16. 环境准备——之Jdk安装
  17. spring 入门demo
  18. Python(十) Python 中的 *args 和 **kwargs
  19. spring学习 五 依赖注入的方式
  20. 关于C3P0容错和自动重连特性的研究

热门文章

  1. yii2 如何在页面底部加载css和js
  2. 基于Attribute的Web API路由设置
  3. 【转发】网易邮箱前端技术分享之javascript编码规范
  4. Maven详细介绍
  5. 关于GUID的相关知识
  6. java 把一个文件夹里图片复制到另一个文件夹里
  7. Idea15/16 配置Tomcat
  8. node js学习(二)——REPL(交互式解释器)
  9. BI软件搞不定业务管理报表的需求
  10. [转]在EntityFramework6中执行SQL语句