PDA

View Full Version : معکوس ماتریس



oranoos
پنج شنبه 21 دی 1385, 16:49 عصر
خواهش میکنم به من کمک کنیدتا برنامه ای بنویسم که معکوس ماتریس را حساب کند البته با زبان سی ممنونم

oranoos
پنج شنبه 21 دی 1385, 16:50 عصر
خواهش میکنم به من کمک کنیدتا برنامه ای بنویسم که معکوس ماتریس را حساب کند البته با زبان سی ممنونم

sjj
پنج شنبه 21 دی 1385, 18:10 عصر
ماتریس تون باید چند در چند باشه ؟ n در n ؟

hhoura2006
شنبه 23 دی 1385, 23:53 عصر
مونده چه جور کمکی بخوای؟؟؟؟؟!!!!!
توضیح درباره ی الگوریتم یا خود برنامه؟

smart_boy
جمعه 24 خرداد 1387, 18:53 عصر
با سلام
اگه کسی پروژه محاسبه دترمینان ماتریس و همچنین ماتریس معکوس N در N رو انجام داده(با++C)، معرفی کنه.
ممنون

اوبالیت به بو
جمعه 24 خرداد 1387, 21:43 عصر
خواهش میکنم به من کمک کنیدتا برنامه ای بنویسم که معکوس ماتریس را حساب کند البته با زبان سی ممنونم
فكر نمي كنم خطا بده چون تستش كردم

/*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;}
/*Determinan is: */
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;}

jalil_m
سه شنبه 11 تیر 1387, 00:42 صبح
فكر نمي كنم خطا بده چون تستش كردم

/*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;}
/*Determinan is: */
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;}



ممنونم.خيلي دنبال اين كد بودم.