矩阵求逆(实矩阵)



具体的C实现:

#include "stdlib.h"#include "math.h"#include "stdio.h"int rinv(a,n)int n;double a[];{ int *is,*js,i,j,k,l,u,v;double d,p;is=malloc(n*sizeof(int));js=malloc(n*sizeof(int));for (k=0; k<=n-1; k++){ d=0.0;for (i=k; i<=n-1; i++)for (j=k; j<=n-1; j++){ l=i*n+j; p=fabs(a[l]);if (p>d) { d=p; is[k]=i; js[k]=j;}}if (d+1.0==1.0){ free(is); free(js); printf("err**not inv\n");return(0);}if (is[k]!=k)for (j=0; j<=n-1; j++){ u=k*n+j; v=is[k]*n+j;p=a[u]; a[u]=a[v]; a[v]=p;}if (js[k]!=k)for (i=0; i<=n-1; i++){ u=i*n+k; v=i*n+js[k];p=a[u]; a[u]=a[v]; a[v]=p;}l=k*n+k;a[l]=1.0/a[l];for (j=0; j<=n-1; j++)if (j!=k){ u=k*n+j; a[u]=a[u]*a[l];}for (i=0; i<=n-1; i++)if (i!=k)for (j=0; j<=n-1; j++)if (j!=k){ u=i*n+j;a[u]=a[u]-a[i*n+k]*a[k*n+j];}for (i=0; i<=n-1; i++)if (i!=k){ u=i*n+k; a[u]=-a[u]*a[l];}}for (k=n-1; k>=0; k--){ if (js[k]!=k)for (j=0; j<=n-1; j++){ u=k*n+j; v=js[k]*n+j;p=a[u]; a[u]=a[v]; a[v]=p;}if (is[k]!=k)for (i=0; i<=n-1; i++){ u=i*n+k; v=i*n+is[k];p=a[u]; a[u]=a[v]; a[v]=p;}}free(is); free(js);return(1);}

下面是一个例子:
下面是具体代码,trmul.c表示全选全选主元高斯-约当消去法的代码

解答如下:

void trmul(a,b,m,n,k,c)int m,n,k;double a[],b[],c[];{ int i,j,l,u;for (i=0; i<=m-1; i++)for (j=0; j<=k-1; j++){ u=i*k+j; c[u]=0.0;for (l=0; l<=n-1; l++)c[u]=c[u]+a[i*n+l]*b[l*k+j];}return;}
#include "stdio.h"#include "4rinv.c"#include "4trmul.c"main(){ int i,j;static double a[4][4]={ {0.2368,0.2471,0.2568,1.2671},{1.1161,0.1254,0.1397,0.1490},{0.1582,1.1675,0.1768,0.1871},{0.1968,0.2071,1.2168,0.2271}};static double b[4][4],c[4][4];for (i=0; i<=3; i++)for (j=0; j<=3; j++)b[i][j]=a[i][j];i=rinv(a,4);if (i!=0){ printf("MAT A IS:\n");for (i=0; i<=3; i++){ for (j=0; j<=3; j++)printf("%13.7e ",b[i][j]);printf("\n");}printf("\n");printf("MAT A- IS:\n");for (i=0; i<=3; i++){ for (j=0; j<=3; j++)printf("%13.7e ",a[i][j]);printf("\n");}printf("\n");printf("MAT AA- IS:\n");trmul(b,a,4,4,4,c);for (i=0; i<=3; i++){ for (j=0; j<=3; j++)printf("%13.7e ",c[i][j]);printf("\n");}}}

矩阵求逆(全选主元高斯-约当消去法)相关推荐

  1. 全选主元matlab,全选主元高斯-约当法实矩阵求逆及传统方法求逆

    /* 算法没有做过什么改动,加上了内存释放的部分. 算法介绍 矩阵求逆在3D程序中很常见,主要应用于求Billboard矩阵.按照定义的计算方法乘法运算,严重影响了性能.在需要大量Billboard矩 ...

  2. C#,码海拾贝(24)——求解“复系数方程组”的“全选主元高斯-约当消去法”之C#源代码

    using System; namespace Zhou.CSharp.Algorithm {     /// <summary>     /// 求解线性方程组的类 LEquations ...

  3. 数值作业:Guass全选主元消去法之C语言代码

    全选主元的基本思想:当变换到第K步时,从系数矩阵的右下角(n-k+1)阶子阵中选取绝对值最大的元素,然后通过行变换与列变换将它交换到主元素a[k][k]的位置上.行变换是不影响最后求解的结果的,但是列 ...

  4. 数值计算(一)之解线性方程组(高斯消去法,列选主元消去法,全选主元消去法,杜立特尔分解,克洛特分解,乔里斯基分解)

    解线性方程组即解一个多元一次方程组,例如 目录 消去法 分解法 消去法 原理 没有学过高级的解法也没关系,凭借我们初高中的知识足以解决这个问题 这是一个多元一次方程组,拥有n个未知量,也有n方程 我们 ...

  5. Matlab实现 LU分解法解线性方程组(全选主元列选主元)

    选主元LU分解 实验内容:列选主元LU分解和全选主元LU分解求解线性方程组 计算方法: 全选主元消元法 1.1 初始化 根据参数A.b,记录下矩阵.右端项的尺寸n: 以得到的尺寸n初始化解向量x: 同 ...

  6. 数值分析(一):全选主元高斯消元法的C++实现

    编程最重要的就是要有很强的目的性,面对绝对真诚的计算机时,如果自己还模棱两口,那又如何让计算机明白我们要做的事情呢?所以在编程之前,规划好绝对是磨刀不误砍柴工.笔者基于已有的编程知识,正好又在学习&l ...

  7. 全选主元高斯消去法 matlab程序,[VB]全选主元高斯消去法求解线性方程组

    功能:  使用全选主元高斯消去法求解线性方程组 '  参数    n     - Integer型变量,线性方程组的阶数 ' dblA   - Double型 n x n 二维数组,线性方程组的系数矩 ...

  8. 全选主元的Gauss-Jordan消元法

    选主元的高斯-约当(Gauss-Jordan)消元法在很多地方都会用到,例如求一个矩阵的逆矩阵.解线性方程组(插一句:LM算法求解的一个步骤),等等.它的速度不是最快的,但是它非常稳定(来自网上的定义 ...

  9. 全选主元高斯消去法 matlab程序,编译无误的全选主元高斯消去法

    算法来源于<>   徐士良 著 但,我发现他的算法在传递二维数组时,怎么也不能把数据传入.可能是我的水平有限,没有搞明白为什么.但问题总得解决,所以我做了一点点小小的改动.能通过编译,我用 ...

最新文章

  1. 用JavaScript写Session的两种方法
  2. CSS background-position 用法详细介绍
  3. ie9浏览器两个ajax请求同步不兼容_浏览器拦截问题
  4. IBM-JAVA面试题
  5. matlab xlsread参数_利用MATLAB批量完成科研数据处理
  6. .net remoting 与webservice
  7. Ubuntu下修改file descriptor
  8. uni-app 组件中的canvas转化为图片报错:errMsg:“canvasToTempFilePath:fail canvas is empty”
  9. gerrit Cannot Merge
  10. 对口升学计算机知识重点,对口升学信息技术(计算机)类2017年专业课考试大纲...
  11. numpy文件读写的三对函数
  12. 21天Jmeter打卡Day11配置元件之CSV数据文件配置
  13. 四、处理表单数据 (基础教程4)
  14. 顶点计划:寝室作息讨论
  15. python实现百度翻译
  16. 远程桌面连接只有2个会话活动
  17. js 京东关闭广告 pink
  18. PAKDD 2019 AutoML 挑战赛圆满落幕,中国队伍包揽前三...
  19. 视频转GIF+GIF录制
  20. 斗地主不算花色算大小王,起初发到的17张牌有多少种?

热门文章

  1. 狗东API接口,item_get - 获得JD商品详情
  2. iOS开发:关于UILabel、UIButton、UITextField文字下划线的设置方法(涉及到富文本的知识)
  3. 作为一名大数据工程师你需要掌握Spark深度学习
  4. 消防安全监测模块,筑牢工厂消防安全屏障
  5. SSD ECC中的LDPC编解码原理
  6. 习惯七 不断更新---平衡的自我提升原则
  7. 关于文档中的背景水印无法去除的解决办法
  8. 混凝土与水泥制品行业运行分析
  9. OpenGL2与ImGui整合入门教程
  10. TCP连接的建立与终止