c语言 作业 程序-用适当的方法求逆矩阵,给出判别条件,编写程序。

问题描述

用适当的方法求逆矩阵,给出判别条件,编写程序。 150C
作业要求用适当的方法求逆矩阵,给出判别条件,编写程序。我在网上找的程序、但是看不懂、求高手帮我看看这个程序用的是什么方法、再帮我画出NS流程图、感激不尽

#include #include void main( void ){ float buffer*p; //定义数组首地址指针变量 short int rownum; //定义矩阵行数row及矩阵元素个数 short int ij; float determ; //定义矩阵的行列式 float comput_D(float *pshort int n); //求矩阵的行列式 float Creat_M(float *p short int mshort int nshort int k); //求代数余子式 void Print( float *pshort int n); //打印n×n的矩阵 printf(""nPlease input the number of rows: ""); scanf(""%d""&row); num=2 * row * row; buffer = (float *)calloc(num sizeof(float)); //分配内存单元 p=buffer; if(p != NULL) { for(i=0;i<row;i++) //输入各单元值 { printf(""Input the number of %d row ""i+1); for(j=0;j<row;j++) { scanf(""%f""p++); } } } else printf( ""Can't allocate memoryn"" ); printf(""nThe original matrix is:n""); Print(bufferrow); //打印该矩阵 determ=comput_D(bufferrow); //求整个矩阵的行列式 p=buffer + row * row; if (determ != 0) { for (i=0;i<row; i++) //求逆矩阵 for (j=0; j<row; j++) *(p+j*row+i)= Creat_M(bufferijrow)/determ; printf(""The determinant is %Gn""determ); p=buffer + row * row; printf(""nThe inverse matrix is:n""); Print(prow); //打印该矩阵 } else printf(""The determnant is 0 and there is no inverse matrix !n""); free( buffer );}//--------------------------------------------------------//功能:求矩阵 n X n 的行列式//入口参数:矩阵首地址 p;矩阵行数 n//返回值:矩阵的行列式值//--------------------------------------------------------float comput_D(float *pshort int n) { short int ijm; //i--row; j--column short int lop=0; float result=0; float mid=1; if (n!=1) { lop=(n==2)?1:n; //控制求和循环次数,若为2阶,则循环1次,否则为n次 for(m=0;m<lop;m++) { mid=1; //顺序求和 for(i=0j=m;i<n;i++j++) mid = mid * ( *(p+i*n+j%n) ); result+=mid; } for(m=0;m<lop;m++) { mid=1; //逆序相减 for(i=0j=n-1-m+n; i<n; i++j--) mid=mid * ( *(p+i*n+j%n)); result-=mid; } } else result=*p; return(result);}//----------------------------------------------------//功能:求k×k矩阵中元素A(mn)的代数余子式//入口参数:k×k矩阵首地址;元素A的下标mn; 矩阵行数 k//返回值: k×k矩阵中元素A(mn)的代数余子式//----------------------------------------------------float Creat_M(float *p short int mshort int nshort int k){ short int len; short int ij; float mid_result=0; short int quo=1; float *p_creat*p_mid; len=(k-1)(k-1); p_creat = (float )calloc(len sizeof(float)); //分配内存单元 p_mid=p_creat; for(i=0;i<k;i++) for(j=0;j<k;j++) { if (i!=m && j!=n) *p_mid++ = (p+i*k+j); } // Print(p_creatk-1); quo = (m + n) %2==0 ? 1:-1; mid_result = (float ) quo * comput_D(p_creatk-1); free(p_creat); return(mid_result);}//-------------------------------------------//功能:打印n×n的矩阵//入口参数:n×n矩阵的首地址;该矩阵的行数 n//返回值: 无//-------------------------------------------void Print( float *pshort int n) { int ij; for (i=0;i<n;i++) { for (j=0; j<n;j++) printf(""%10G ""*p++); printf(""n""); } printf(""--------------n"");}

解决方案

你这个代码太混乱了,我们一般用double*来保存矩阵,利用矩阵分解来求逆。

时间: 2024-11-10 01:27:58

c语言 作业 程序-用适当的方法求逆矩阵,给出判别条件,编写程序。的相关文章

c语言 发彩信 模块-PC直接控制GPRS模块,用VC6.0编写程序发送彩信,简单就行,有的大侠拜托了

问题描述 PC直接控制GPRS模块,用VC6.0编写程序发送彩信,简单就行,有的大侠拜托了 电脑连接一个 GPRS模块,要求用C语言编程控制GPRS模块发送彩信,应该包含彩信封装等内容,希望能有人帮帮忙,可以的话程序发我邮箱:Lzm11211109@163.com.并告知使用的硬件是什么, 谢谢各位大侠了. 解决方案 http://download.csdn.net/download/qianshuyuankk/4800261 解决方案二: 短信猫如何发彩信? 短信猫可以发彩信吗? 这个,得看短

Javascript异步编程的4种方法让你写出更出色的程序_javascript技巧

你可能知道,Javascript语言的执行环境是"单线程"(single thread). 所谓"单线程",就是指一次只能完成一件任务.如果有多个任务,就必须排队,前面一个任务完成,再执行后面一个任务,以此类推.  这种模式的好处是实现起来比较简单,执行环境相对单纯:坏处是只要有一个任务耗时很长,后面的任务都必须排队等着,会拖延整个程序的执行.常见的浏览器无响应(假死),往往就是因为某一段Javascript代码长时间运行(比如死循环),导致整个页面卡在这个地方,其

Ubuntu系统调整iPhone应用程序图标顺序的方法

现在的 http://www.aliyun.com/zixun/aggregation/13835.html">Ubuntu 已经支持同步 iPhone 上的图片和音乐文档了,很多童鞋在看了 OwnLinux.cn 之前发布的在 Ubuntu 上同步 iPhone 的音乐和照片一 文之后表示还不够给力.除了同步音乐和照片还能干点别的吗?OwnLinux.cn 也会进一步和大家分享 Ubuntu 上操作 iPhone 的信息.在 iPhone 安装好了 大量的应用软件之后,图标的分类和排序就

编写程序输入一句话,统计26个字母出现的个数

问题描述 编写程序输入一句话,统计26个字母出现的个数 编写程序输入一句话,统计26个字母出现的个数 主程序输入一句话,使用一个函数tongji实现 解决方案 参考:http://zhidao.baidu.com/link?url=L3_0LQOlle5leQIk1Nhoxc7kl3qjCS4ytx_6jCHAGU2U0VlNlBoa0iJ_GU6CM8vP-A4aXwN6G6nLG5GSAfqlgq 解决方案二: //按Ctrl+Z结束英文输入.#includevoid main(){ int

数据-在C#里使用SharpPCap对程序进行抓包,求大神解答

问题描述 在C#里使用SharpPCap对程序进行抓包,求大神解答 可以监测指定程序.指定端口上所有的信息流量.最后以十六进制形式来显示数据内容,并保存数据信息的.话说这个可以通关sharpcap实现么,求大神指导.QAQ 解决方案 参考http://www.cnblogs.com/therock/articles/3572119.htmlhttp://www.360doc.com/content/11/0519/14/6889381_117894489.shtml 解决方案二: 最好是有程序的

VC WinExec打开指定程序或者文件的方法_C 语言

⑴ 函数原型: UINT Win Exec(LPCSTR lpCmdLine, UINT uCmdShow); ⑵ 参数: lpCmdLine:指向一个空结束的字符串,串中包含将要执行的应用程序的命令行(文件名加上可选参数). uCmdShow:定义Windows应用程序的窗口如何显示,并为CreateProcess函数提供STARTUPINFO参数的wShowWindow成员的值. ⑶ 返回值: 若函数调用成功,则返回值大于31.若函数调用失败,则返回值为下列之一: ① 0:系统内存或资源已耗

无线标记语言(WML)基础之WML编程方法

编程 元素和标签是WML的主要语法,它们决定了WML编程的基本原则.本章我们将从WML的元素.标签.属性等方面详细讲解WML的编程方法.学习本章知识之前,读者应当了解WML元素与标签的区别.WML的元素通常有一个首标签.内容.其它元素及一个尾标签组成.也就说,单独的标签是一个元素,成对出现的标签与其包含的内容也构成一个元素.由于元素牵涉及标签,标签又涉及属性. 3.1 卡片.卡片组及其属性 我们前面介绍了WML的卡片与卡片组,主要从概念和相互关系的角度进行了分析.我们这里则从卡片.卡片组的组成.

各种语言执行入口的传参方法

在操作系统中,执行程序时可以由系统传入参数,就是在执行的时候,附带上参数.比如: 1 ping www.kryptosx.info 后面跟着的网址就是ping的参数. Linux和windows的shell都遵循这个参数传入方式.这里列一下各种语言的执行入口传参方法.主要分为两类,一种是有main函数的语言,一种是没有main函数的. 在执行命令的时候,linux系统会先对命令行进行分解.通常是以空格分解,如果有双引号,双引号内的也是认为是一个参数,无论里面有无空格. C类语言的执行入口传参:

全面优化ASP应用程序的性能的方法_应用技巧

                                          ASP 本身并不是一种脚本语言,它只是提供了一种使镶嵌在 HTML 页面中的脚本程序得以运行的环境,而在ASP中最常用的脚本语言就是VBScript了.虽然ASP的脚本语言很简单,但是要想让一个ASP程序能够最优化的运行也不是一件简单的事情.  现在国内的网络带宽很有限,网络十分拥挤,如何使得自己的ASP应用程序能够快速的运行就成为了每一个ASP程序员的梦想了.那就跟随我来一同加速你的ASP程序吧!  一. 有关