根据代数里面的知识,可以使用伴随矩阵也可以使用初等行变换来解求解,但是这样如果矩阵的维数较大的时候,使用这种方法,矩阵的维数变大时,计算量急剧的变大,计算时间和使用内存也会按着指数急剧上升,这样的算法的生命力不行。

使用以下这种算法的计算量和使用内存不会发生急剧的变化,特别是矩阵在维数大的时候。

高斯-约旦法(全选主元)求逆的步骤如下:

首先,对于 k 从 0 到 n - 1 作如下几步:

从第 k 行、第 k

列开始的右下角子阵中选取绝对值最大的元素,并记住次元素所在的行号和列号,在通过行交换和列交换将它交换到主元素位置上。这一步称为全选主元。

m(k, k) = 1 / m(k, k)

m(k, j) = m(k, j) * m(k, k),j = 0, 1, ..., n-1;j != k

m(i, j) = m(i, j) - m(i, k) * m(k, j),i, j = 0, 1, ..., n-1;i, j !=

k

m(i, k) = -m(i, k) * m(k, k),i = 0, 1, ..., n-1;i != k

最后,根据在全选主元过程中所记录的行、列交换的信息进行恢复,恢复的原则如下:在全选主元过程中,先交换的行(列)后进行恢复;原来的行(列)交换用列(行)交换来恢复。

#include"stdio.h"

#include"malloc.h"

#include"math.h" //数学函数

void main()

{ int inv(double *p,int n);

double

a[4][4]={{1,2,0,0},{2,5,0,0},{0,0,3,0},{0,0,0,1}},*ab;

ab=a[0];

int n=4,i=0,j;

i=inv(ab,n); //调用矩阵求逆

if(i!=0) //如果返回值不是0

for(i=0;i

{ putchar('\n');

for(j=0;j

printf("%f ",a[i][j]);

}

}

int inv(double *p,int n)

{

void swap(double *a,double *b);

int *is,*js,i,j,k,l;

for(i=0;i

{ putchar('\n');

for(j=0;j

printf("%f ",*(p+i*n+j));

}

puts("\n\n\n\n");

double temp,fmax;

is=(int *)malloc(n*sizeof(int));

js=(int *)malloc(n*sizeof(int));

for(k=0;k

{

fmax=0.0;

for(i=k;i

for(j=k;j

{ temp=fabs(*(p+i*n+j));//找最大值

if(temp>fmax)

{ fmax=temp;

is[k]=i;js[k]=j;

}

}

if((fmax+1.0)==1.0)

{ free(is);free(js);

printf("no inv");

return(0);

}

if((i=is[k])!=k)

for(j=0;j

swap(p(k*n+j),p(i*n+j));//交换指针

if((j=js[k])!=k)

for(i=0;i

swap(p(i*n+k),p(i*n+j)); //交换指针

p[k*n+k]=1.0/p[k*n+k];

for(j=0;j

if(j!=k)

p[k*n+j]*=p[k*n+k];

for(i=0;i

if(i!=k)

for(j=0;j

if(j!=k)

p[i*n+j]=p[i*n+j]-p[i*n+k]*p[k*n+j];

for(i=0;i

c语言中的矩阵求逆程序,C语言矩阵求逆相关推荐

  1. c语言中常用的程序,C语言一些常用语句

    一 break 1. break语句形式: break; 2. break语句功能: A. switch语句中,break语句会终止其后语句的执行,退出switch语句. B. 使一个循环立即结束,也 ...

  2. c语言中用户验证程序,C语言用户登录系统账户密码比对

    满意答案 kcuapra 2018.08.14 采纳率:49%    等级:9 已帮助:465人 #include #include typedef struct account{ char name ...

  3. c语言程序设计 徐庆生,C语言中循环结构程序课的教学设计与探讨.doc

    C语言中循环结构程序课的教学设计与探讨 摘要:循环结构的程序设计是面向过程的程序设计课程的核心部分,掌握好循环结构的程序设计技术对学好此类课程至关重要.本文重点介绍了"C语言程序设计&quo ...

  4. verilog语言中的@什么意思 verilog语言中的@什么意思

    verilog语言中的@什么意思 verilog语言中的@什么意思 2012-05-27 22:47 在英语中@ 读at,也就是在--的时候,这个小学应该学过,对吧.verilog中@ 的含义就是触发 ...

  5. c加加属于面向对象的程序设计语言吗,下列语言中属于面向对象的程序设计语言是______。A、Visual BasicB、PASCALC、CD、FORTRAN...

    下列语言中属于面向对象的程序设计语言是______.A.Visual BasicB.PASCALC.CD.FORTRAN 更多相关问题 经纬仪如存在指标差,将使观测结果出现( ). 德治的约束作用主要 ...

  6. c语言微秒级延迟程序,C语言中生产随机数及计算运行时间(微秒级)

    java中要生产随机数的 话 直接 new一个 Random就 可以 了 ,c语言中的话会稍微麻烦一点点. 计算运行时间 在比较算法运行效率中 要 用到 . #include #include #in ...

  7. c语言算正方形面积和周长,c语言中编写一程序计算正方形的周长和面积

    C语言 编写程序,从键盘输入一个正数,计算该数的平方根. #include#includeintmain(){\x09doublex;\x09scanf("%lf",&x) ...

  8. 浅谈c语言中怎么让程序直接结束(待补充)

    1.可以选择用return 如果是int main,就直接写return 0 如果是void main,就直接写return 2.goto-label(不建议使用) 即利用goto强制性跳转 直接应用 ...

  9. c语言中如何用程序判断double型的浮点数能精确到几位小数,C语言中浮点数double/float相等判断...

    #include #include /* fabs */ #ifdef _WIN32 // #include #endif //输出的数值不断递增,即使将10改成10.0,循环也没有中止,为什么? v ...

  10. c语言中合法转义字符,判断c语言合法转义字符

    满意答案 UniTubeStar 2018.01.11 采纳率:45%    等级:12 已帮助:5850人 单独一个 \ 不是合法转义字符. 转义字符 就是指 反斜杠后面的字符,不按原意 解释,而要 ...

最新文章

  1. 圆弧周长公式_建筑工程施工,最常用计算公式 (大全)
  2. C语言鸡尾酒排序cocktail sort算法(附完整源码)
  3. 第三章:3.2  get 请求
  4. PERL 实现微信登录
  5. Spring : Spring AOP 中的增强(Advice)或者通知
  6. 两级压缩机行业调研报告 - 市场现状分析与发展前景预测
  7. Spring Boot 默认数据源 HikariDataSource 与 JdbcTemplate 初遇
  8. Python3.6+selenium2.53.6自动化测试_禅道新增BUG(一)(本地禅道)
  9. mmdetection tools工具梳理
  10. edgy trees_在Ubuntu Edgy上安装TrueCrypt
  11. win10语音助手服务器,深入了解“小娜”Win10语音助手详解
  12. loadRunner通过谷歌浏览器代理录制脚本
  13. JAVA生成安卓签名证书
  14. VS2019 MFC模式下如何调用控制台并用cprintf在控制台打印
  15. Java黑皮书课后题第2章:2.4(将磅转换为千克)编写程序,将磅数转换为千克数。程序提示用户输入磅数,然后转换为千克并显示结果。1磅等于0.454千克
  16. pycharm平台下的Django教程(初学者的最爱)
  17. OSChina 周四乱弹 ——老板:把骨头统统交出来
  18. c语言花卉销售与管理系统,花卉销售与管理系统
  19. 等号(=),双等号(==)还有三等号(===)的使用与区别
  20. 阿里云IOT-C-SDK系列(4)SDK配置选项理解

热门文章

  1. 无线路由dns服务器地址,tplink无线路由器怎么设置DNS服务器地址
  2. vue中使用阿里字体图标库
  3. python绘制社会关系网络图_python画社交网络图
  4. 华为防火墙忘记密码,使用console口更改密码
  5. Linux格式化磁盘并挂载分区
  6. 网站备案 应该找域名商还是空间商备案
  7. ios 隔空投安装ipa_ios打ipa包安装到真机进行测试
  8. UNCODE 与 ANSI 编码互相转换
  9. iphone换android手机铃声,为什么大多数苹果手机用户只使用默认铃声,从不更换?原因很现实...
  10. 三星 android 调试模式设置,三星galaxy s4 usb调试在哪里 s4 usb调试模式设置方法详解...