shirin71
08-06-2011, 08:39 PM
نوشته شده در++c
اينم برنامه ماتريس معكوس شايد براي كسي مفيد باشه
خودم نوشتم اگه يه موقع اشكال داشت ببخشيد
ضمنا كليك راست كرده و از قسمت Encoding گزينه left to right document را بزنيد.
/*Matrix Reverse */
#include <math.h>
#include <iomanip.h>
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
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 "<<n*n<<" number.\n";
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 : "<<det1<<endl;
cout<<"\nMatrix Reverse Is :"<<endl;
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<<setw(8)<<setprecision(2)<<y[i][j]/det1;
if(j==2) cout<<endl;}}
else {
for(i=1;i<=n;i++)
for(int j=1;j<=n;j++) { cout<<setw(8)<<setprecision(2)<<(hams(j,i,n,x)/det1)*r; r*=-1;
if(j==n) cout<<endl;}} }
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;}
تمام شد...
اينم برنامه ماتريس معكوس شايد براي كسي مفيد باشه
خودم نوشتم اگه يه موقع اشكال داشت ببخشيد
ضمنا كليك راست كرده و از قسمت Encoding گزينه left to right document را بزنيد.
/*Matrix Reverse */
#include <math.h>
#include <iomanip.h>
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
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 "<<n*n<<" number.\n";
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 : "<<det1<<endl;
cout<<"\nMatrix Reverse Is :"<<endl;
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<<setw(8)<<setprecision(2)<<y[i][j]/det1;
if(j==2) cout<<endl;}}
else {
for(i=1;i<=n;i++)
for(int j=1;j<=n;j++) { cout<<setw(8)<<setprecision(2)<<(hams(j,i,n,x)/det1)*r; r*=-1;
if(j==n) cout<<endl;}} }
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;}
تمام شد...