谁有矩阵求逆程序(C++) 急!急!在线等待! 谁有矩阵求逆程序(C++) 急!急!在线等待! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 求矩阵逆,行列式值#include <stdio.h>#include <stdlib.h>double det(double* a,int n);double rem(double* a,int i,int j,int n);void inv(double* a,double* b, int n);int main(int argc, char* argv[]){ int i,j; double a[3*3]= { 103.0, 100.0, 204.0, 199.0, 200.0, 395.0, 301.0, 300.0, 600.0 }; double b[3*3]; inv(a,b,3); printf("\n\n The Matrix is A=\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%8.2lf",a[i*3+j]); printf("\n"); } printf("\n\n The Inversed Matrix of A =\n"); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf("%8.2lf",b[i*3+j]); printf("\n"); } return 0;}double rem(double* a,int i,int j,int n){ int k,m; double *pTemp=new double[(n-1)*(n-1)]; for(k=0;k<i;k++) { for(m=0;m<j;m++) pTemp[k*(n-1)+m]=a[k*n+m]; for(m=j;m<n-1;m++) pTemp[k*(n-1)+m]=a[k*n+m+1]; } for(k=i;k<n-1;k++) { for(m=0;m<j;m++) pTemp[k*(n-1)+m]=a[(k+1)*n+m]; for(m=j;m<n-1;m++) pTemp[k*(n-1)+m]=a[(k+1)*n+m+1]; } double dResult=(((i+j)%2==1)?-1:1)*det(pTemp,n-1); delete[] pTemp; return dResult;}double det(double* a,int n){ if(n==1) return a[0]; double sum=.0; for(int j=0;j<n;j++) sum+=a[0*n+j]*rem(a,0,j,n); return sum;}void inv(double* a,double* b, int n){ double deta=det(a,n);cout<<deta<<endl; for(int i=0;i<n;i++) for(int j=0;j<n;j++) b[i*n+j]=rem(a,j,i,n)/deta;} 自定义类对象做全局变量的问题 编译错误 山寨兔子党2011纳新开始了~~~~~~~~~~~~ ihtmldocument2如何转化成string? CSocket::OnSend()的问题 如何禁止其他进程运行 请问,关闭一个窗口用什么函数?急呀!!!谢谢啦!! 怎样才能把 ASP COM 的字符串返回值赋给ASP的变量? 什么函数可以退出应用程序? 如何在VC++中实现对ACCESS中的图片的存储与读出 COM中变量和函数的规划问题,我头大了,请帮帮我^_^ 菜单的问题
#include <stdlib.h>double det(double* a,int n);
double rem(double* a,int i,int j,int n);
void inv(double* a,double* b, int n);int main(int argc, char* argv[])
{
int i,j;
double a[3*3]=
{
103.0, 100.0, 204.0,
199.0, 200.0, 395.0,
301.0, 300.0, 600.0
};
double b[3*3];
inv(a,b,3);
printf("\n\n The Matrix is A=\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++) printf("%8.2lf",a[i*3+j]);
printf("\n");
}
printf("\n\n The Inversed Matrix of A =\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++) printf("%8.2lf",b[i*3+j]);
printf("\n");
}
return 0;
}double rem(double* a,int i,int j,int n)
{
int k,m;
double *pTemp=new double[(n-1)*(n-1)];
for(k=0;k<i;k++)
{
for(m=0;m<j;m++) pTemp[k*(n-1)+m]=a[k*n+m];
for(m=j;m<n-1;m++) pTemp[k*(n-1)+m]=a[k*n+m+1];
}
for(k=i;k<n-1;k++)
{
for(m=0;m<j;m++) pTemp[k*(n-1)+m]=a[(k+1)*n+m];
for(m=j;m<n-1;m++) pTemp[k*(n-1)+m]=a[(k+1)*n+m+1];
}
double dResult=(((i+j)%2==1)?-1:1)*det(pTemp,n-1);
delete[] pTemp;
return dResult;
}
double det(double* a,int n)
{
if(n==1) return a[0];
double sum=.0;
for(int j=0;j<n;j++) sum+=a[0*n+j]*rem(a,0,j,n);
return sum;
}void inv(double* a,double* b, int n)
{
double deta=det(a,n);cout<<deta<<endl;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
b[i*n+j]=rem(a,j,i,n)/deta;
}