반응형

c++ 프로그래밍 역행렬 구하기 (역행렬 구하는 프로그램)

<버전1>

using namespace std;

#include<iostream.h>
void main()
{int a[100][100],i,j;
 float determinant=0;
 cout<<"역행렬 구하기 \n";
 cout<<"100x100 행렬 입력:\n";
 for(i=0;i<100;i++)
 {
  for(j=0;j<100;j++)
  {
  cin>>a[i][j];
  }
 }
 cout<<"\n행렬 입력:\n";
 for(i=0;i<100;i++)
 {
  for(j=0;j<100;j++)
  {
  cout<<a[i][j]<<"  ";
  }
  cout<<"\n";
 }
 for(i=0;i<100;i++)
 {
  determinant = determinant + (a[0][i]*(a[1][(i+1)%100]*
  a[2][(i+2)%100] - a[1][(i+2)%100]*a[2][(i+1)%100]));
 }
 if(determinant==0)
 {
  cout<<"역행렬이 존재하지않음 (Determinant=0).\n";
 }
 else
 {
  cout<<"\역행렬: \n";
 }
 for(i=0;i<100;i++)
 {
  for(j=0;j<100;j++)
  {
  cout<<(a[(i+1)%100][(j+1)%100] *
  a[(i+2)%100][(j+2)%100]) - (a[(i+1)%100][(j+2)%100]*
  a[(i+2)%00][(j+1)%100]))/ determinant<<"\t";
  }
  cout<<"\n";
  }
}

위에는 100 by 100 행렬 프로그램입니다.




아래 소스는 임의의 행렬의 역행렬을 구할수 있는 프로그램입니다.


<버전2>

#include<iostream>
using namespace std;
int main()
{
   int i,j,k,n;
   float a[100][200],t;
   cout<<"몇차 행렬입니까-";
   cin>>n;
   cout<<"행렬 입력"<<endl;
   for(i=0;i<n;i++)
      for(j=0;j<n;j++)
         cin>>a[i][j];
   for(i=0;i<n;i++)
   {
      for(j=n;j<2*n;j++)
      {
          if(i==j-n)
             a[i][j]=1;
         else
             a[i][j]=0;
       }
   }
   for(i=0;i<n;i++)
   {
      t=a[i][i];
      for(j=i;j<2*n;j++)
          a[i][j]=a[i][j]/t;
      for(j=0;j<n;j++)
      {
         if(i!=j)
         {
            t=a[j][i];
            for(k=0;k<2*n;k++)
                a[j][k]=a[j][k]-t*a[i][k];
          }
      }
   }
   cout<<"\n\n역행렬\n\n";
   for(i=0;i<n;i++)
   {
      for(j=n;j<2*n;j++)
         cout<<"\t"<<a[i][j];
      cout<<"\n";
    }
return 0;
}





반응형
,


Please Enable JavaScript!
Mohon Aktifkan Javascript![ Enable JavaScript ]