矩阵求逆的算法
2008-02-23 05:33:25来源:互联网 阅读 ()
操作系统: win98 编程工具: vc 6 问题: 矩阵求逆的算法 水平: 中级(王钦军) | |
矩阵求逆一般使用Gauss-Jordan消去法。具体程式能够参考徐士良编的《C语言常用算法程式集》(清华大学出版社出版,ISBN 7-302-02290-9)或Template Numerical Toolkit(http://math.nist.gov/tnt/index.html)。 自由马的意见: 假如是对称正定矩阵,采用ldl分解更为快速有效。 askye的意见: 用C写的,做成DLL使用很方便。 double * MatrixOpp(double A[],int m,int n) /*矩阵求逆*/ { int i,j,x,y,k; double *SP=NULL,*AB=NULL,*B=NULL,X,*C; SP=(double *)malloc(m*n*sizeof(double)); AB=(double *)malloc(m*n*sizeof(double)); B=(double *)malloc(m*n*sizeof(double)); X=Surplus(A,m,n); X=1/X; for(i=0;i<m;i ) for(j=0;j<n;j ) {for(k=0;k<m*n;k ) B[k]=A[k]; {for(x=0;x<n;x ) B[i*n x]=0; for(y=0;y<m;y ) B[m*y j]=0; B[i*n j]=1; SP[i*n j]=Surplus(B,m,n); AB[i*n j]=X*SP[i*n j]; } } C=MatrixInver(AB,m,n); return C; } double * MatrixInver(double A[],int m,int n) /*矩阵转置*/ { int i,j; double *B=NULL; B=(double *)malloc(m*n*sizeof(double)); for(i=0;i<n;i ) for(j=0;j<m;j ) B[i*m j]=A[j*n i]; return B; } double Surplus(double A[],int m,int n) /*求矩阵行列式*/ { int i,j,k,p,r; double X,temp=1,temp1=1,s=0,s1=0; if(n==2) {for(i=0;i<m;i ) for(j=0;j<n;j ) if((i j)%2) temp1*=A[i*n j]; else temp*=A[i*n j]; X=temp-temp1;} else 标签: 版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 上一篇: 如何能在VC 7.0中使用新标准的流 下一篇: (c )两个类相互包含引用的问题
相关文章
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设 网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源 网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它 服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护 软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash 热门词条
最新资讯
热门关注
热门标签
|