اینم برنامه ماتریس معكوس شاید برای شما بازدید کننده عزیز مفید باشه
این برنامه توسط خودم نوشته شده اگه یه موقع اشكال داشت پیشاپیش عذرخواهی می کنم
/* Matrix Reverse */
#include
#include
#include
#include
#include
int p=1;
float det(int i1,int j1,int i4,int j4,int n,float x[10][10]);
int hams(int i1,int j1,int n,float x[10][10]);
int main()
{
float x[10][10],det1,y[2][2]; int n,r=1;
cout<<"Enter n for Matrix n*n: "; cin>>n;
if(n==1) cout<<"there is not matrix.";
else {
cout<<"\nEnter "<
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) cin>>x[i][j];
det1=det(1,1,n,n,n,x);
cout<<"Determinan x is : "<
cout<<"\nMatrix Reverse Is :"<
if(n==2) { y[1][1]=x[2][2]; y[2][2]=x[1][1]; y[1][2]=-x[1][2]; y[2][1]=-x[2][1];
for(i=1;i<=2;i++)
for(int j=1;j<=2;j++) {
cout<
if(j==2) cout<
else {
for(i=1;i<=n;i++)
for(int j=1;j<=n;j++) { cout<
if(j==n) cout<
return 0;}
/*in ghesmat determinane x ra hesab mikonad */
float det(int i1,int j1,int i4,int j4,int n,float x[10][10]) {
if(n==2) {int i2,i3,j2,j3; i2=i1; j2=j4; i3=i4; j3=j1; return x[i1][j1]*x[i4][j4]-x[i2][j2]*x[i3][j3];}
float sum=0;
for(int k=j1;k<=j4;k++) {
if(k==j1) sum+=p*x[i1][k]*det(i1+1,j1+1,i4,j4,i4-i1,x);
else if(k==j4) sum+=p*x[i1][k]*det(i1+1,j1,i4,j4-1,i4-i1,x);
else sum+=p*x[i1][k]*det(i1+1,j1,i4,j4,i4-i1,x);
p*=-1; }
return sum; }
/* in ghesmat hamsaze x ra hesab mikonad */
int hams(int i1,int j1,int n,float x[10][10]) {
float z[10][10]; int k=1,l=1,s;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) {
if(i!=i1 && j!=j1) { z[k][l]=x[i][j];
if(l==n-1) {++k; l=0;}
++l; } }
s=det(1,1,n-1,n-1,n-1,z);
return s;
}

روش کیلی-همیلتون میدهد:
• وارون ماتریس ۳×۳
وارون یک ماتریس ۳×۳ بدین صورت محاسبه میشود:
که در آن دترمینان A چنین بدست میآید:
اگر دترمینان غیر صفر باشد، ماتریس وارونپذیر است.
• بدست آوردن وارون یا معکوس یک ماتریس

#include
#include
#include
#include
#include
int p=1;
float det(int i1,int j1,int i4,int j4,int n,float x[10][10]);
int hams(int i1,int j1,int n,float x[10][10]);
int main()
{
float x[10][10],det1,y[2][2]; int n,r=1;
cout<<"Enter n for Matrix n*n: "; cin>>n;
if(n==1) cout<<"there is not matrix.";
else {
cout<<"\nEnter "<
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) cin>>x[i][j];
det1=det(1,1,n,n,n,x);
cout<<"Determinan x is : "<
cout<<"\nMatrix Reverse Is :"<
if(n==2) { y[1][1]=x[2][2]; y[2][2]=x[1][1]; y[1][2]=-x[1][2]; y[2][1]=-x[2][1];
for(i=1;i<=2;i++)
for(int j=1;j<=2;j++) {
cout<
if(j==2) cout<
else {
for(i=1;i<=n;i++)
for(int j=1;j<=n;j++) { cout<
if(j==n) cout<
return 0;}
/*in ghesmat determinane x ra hesab mikonad */
float det(int i1,int j1,int i4,int j4,int n,float x[10][10]) {
if(n==2) {int i2,i3,j2,j3; i2=i1; j2=j4; i3=i4; j3=j1; return x[i1][j1]*x[i4][j4]-x[i2][j2]*x[i3][j3];}
float sum=0;
for(int k=j1;k<=j4;k++) {
if(k==j1) sum+=p*x[i1][k]*det(i1+1,j1+1,i4,j4,i4-i1,x);
else if(k==j4) sum+=p*x[i1][k]*det(i1+1,j1,i4,j4-1,i4-i1,x);
else sum+=p*x[i1][k]*det(i1+1,j1,i4,j4,i4-i1,x);
p*=-1; }
return sum; }
/* in ghesmat hamsaze x ra hesab mikonad */
int hams(int i1,int j1,int n,float x[10][10]) {
float z[10][10]; int k=1,l=1,s;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++) {
if(i!=i1 && j!=j1) { z[k][l]=x[i][j];
if(l==n-1) {++k; l=0;}
++l; } }
s=det(1,1,n-1,n-1,n-1,z);
return s;
}


توضیحات مختصری در مورد معکوس ماتریس N*N
• وارون ماتریس ۲×۲
وارون یک ماتریس ۲×۲ چنین محاسبه میشود:

روش کیلی-همیلتون میدهد:

• وارون ماتریس ۳×۳
وارون یک ماتریس ۳×۳ بدین صورت محاسبه میشود:

که در آن دترمینان A چنین بدست میآید:

اگر دترمینان غیر صفر باشد، ماتریس وارونپذیر است.
• بدست آوردن وارون یا معکوس یک ماتریس

پنجشنبه هجدهم اسفند ۱۳۹۰ | 13:16