首页 > 编程知识 正文

矩阵求逆 c语言,c++求逆矩阵

时间:2023-05-05 02:12:30 阅读:264147 作者:2291

矩阵求逆的C/C++源程序

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 4
double AmldqbN]mldqbN]={{1,3,2,13},{7,2,1,-2},{9,15,3,-2},{-2,-2,11,5}};
inline void swap(double &a,double &b){double c=a;a=b;b=c;}; {
 int i,j,k;
 double d;
 int JSmldqbN],ISmldqbN];
 for (k=0;k<n;k++)
 {
  d=0;
  for (i=k;i<n;i++)
   for (j=k;j<n;j++)
  {
   if (fabs(Amldqbi]mldqbj])>d)
   {
    d=fabs(Amldqbi]mldqbj]);
    ISmldqbk]=i;
    JSmldqbk]=j;
   }
  }
  if (d+1.0==1.0) return 0;
  if (ISmldqbk]!=k)
   for (j=0;j<n;j++)
    swap(Amldqbk]mldqbj],AmldqbISmldqbk]]mldqbj]);
  if (JSmldqbk]!=k)
   for (i=0;i<n;i++)
    swap(Amldqbi]mldqbk],Amldqbi]mldqbJSmldqbk]]);
  Amldqbk]mldqbk]=1/Amldqbk]mldqbk];
  for (j=0;j<n;j++)
   if (j!=k) Amldqbk]mldqbj]=Amldqbk]mldqbj]*Amldqbk]mldqbk];
  for (i=0;i<n;i++)
   if (i!=k)
    for (j=0;j<n;j++)
     if (j!=k) Amldqbi]mldqbj]=Amldqbi]mldqbj]-Amldqbi]mldqbk]*Amldqbk]mldqbj];
  for (i=0;i<n;i++)
   if (i!=k) Amldqbi]mldqbk]=-Amldqbi]mldqbk]*Amldqbk]mldqbk];
 }
 for (k=n-1;k>=0;k--)
 {
  for (j=0;j<n;j++)
   if (JSmldqbk]!=k) swap(Amldqbk]mldqbj],AmldqbJSmldqbk]]mldqbj]);
  for (i=0;i<n;i++)
   if (ISmldqbk]!=k) swap(Amldqbi]mldqbk],Amldqbi]mldqbISmldqbk]]);
 }
 for (i=0;i<n;i++)
 {
  for (j=0;j<n;j++)
   printf("  %1.4f",Amldqbi]mldqbj]);
  puts("");
 }
}
void main()
{
 DinV(A,4);
 getch();
}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。