• مشکی
  • سفید
  • سبز
  • آبی
  • قرمز
  • نارنجی
  • بنفش
  • طلایی
تعداد مطالب : 1
تعداد نظرات : 0
زمان آخرین مطلب : 6436روز قبل
آموزش و تحقيقات
 معکوس ماتریکس: 

#include <iostream.h>
int getn();
double **buildMatrix(int n);
void readMatrix(double **matrix,int n);
void writeMatrix(double **matrix,int n);
double determinant(double **m,int n);
double kahad(double **m1,int n,int i,int j);
double **varoon(double **matrix,int n);
int main()
{
double **matrix;
double **inv;
int n;
n=getn();
matrix=buildMatrix(n);
inv=buildMatrix(n);
readMatrix(matrix,n);
cout<<determinant(matrix,n)<<endl;
inv=varoon(matrix,n);
writeMatrix(inv,n);
return 0;
}

int getn()
{
int n;
cin>>n;
return n;
}

double **buildMatrix(int n)
{
double **matrix;
int i;
matrix=new double *[n];
for(i=0;i<n;i++)
matrix[i]=new double[n];
return matrix;
}

void readMatrix(double **matrix,int n)
{
int i,j;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
cin>>matrix[i][j];
}

void writeMatrix(double **matrix,int n)
{
int i,j;
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
cout<<matrix[i][j]<<" ";
cout<<endl;
}
}

double determinant(double **m,int n)
{
double det=0;
int i=0,j;
if(n==1)
return m[0][0];
for(j=0;j<n;j++)
det+=m[i][j]*kahad(m,n,i,j);
return det;
}

double kahad(double **m1,int n,int i,int j)
{
double **m2;
int counter1,counter2;
int sign=1;
for(int power=1;power<=j+i+2;power++)
sign*=-1;
m2=buildMatrix(n-1);
for(counter1=0;counter1<n;counter1++)
for(counter2=0;counter2<n;counter2++)
{
if(counter1<i && counter2<j)
m2[counter1][counter2]=m1[counter1][counter2];
else if(counter1>i && counter2<j)
m2[counter1-1][counter2]=m1[counter1][counter2];
else if(counter1<i && counter2>j)
m2[counter1][counter2-1]=m1[counter1][counter2];
else if(counter1>i && counter2>j)
m2[counter1-1][counter2-1]=m1[counter1][counter2];
}
return sign*determinant(m2,n-1);
}

double **varoon(double **matrix,int n)
{
double **result;
double det;
det=determinant(matrix,n);
result=buildMatrix(n);
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
result[j][i]= (kahad(matrix,n,i,j)/det);
return result;
}

<<good louk>>
شنبه 9/9/1387 - 14:40
مورد توجه ترین های هفته اخیر
فعالترین ها در ماه گذشته
(0)فعالان 24 ساعت گذشته