1樓:薄博逢飛星
迴圈輸入矩陣元素,
你想想求行列式的演算法,改一改就是求逆矩陣
通過(a
e)~(e
a^-1)這個初等變換來求逆矩陣。
2樓:留博紅冰薇
下面是實現gauss-jordan法實矩陣求逆。
#include
#include
#include
intbrinv(double
a,intn)}
if(d+1.0==1.0)
if(is[k]!=k)
for(j=0;
j<=n-1;
j++)
if(js[k]!=k)
for(i=0;
i<=n-1;
i++)
l=k*n+k;
a[l]=1.0/a[l];
for(j=0;
j<=n-1;
j++)
if(j!=k)
for(i=0;
i<=n-1;
i++)
if(i!=k)
for(j=0;
j<=n-1;
j++)
if(j!=k)
for(i=0;
i<=n-1;
i++)
if(i!=k)
}for
(k=n-1;
k>=0;
k--)
if(is[k]!=k)
for(i=0;
i<=n-1;
i++)
}free(is);
free(js);
return(1);
}void
brmul(double
a,double
b,int
m,int
n,int
k,double
c)return;
}int
main(),,
,};static
double
b[4][4],c[4][4];
for(i=0;
i<=3;
i++)
for(j=0;
j<=3;
j++)
b[i][j]=a[i][j];
i=brinv(a,4);
if(i!=0)
printf("
");printf("mat
a-is:
");for
(i=0;
i<=3;
i++)
printf("
");printf("mat
aa-is:
");brmul(b,a,4,4,4,c);
for(i=0;
i<=3;
i++)
}}參考資料:c常用演算法程式集-徐士良
如何用c語言編寫一個n階方陣求逆的程式? 15
3樓:匿名使用者
rational ** matrix1::inverse_matrix(rational ** sourcematrix,int numberofrows, int numberofcolumns)
else}}
return result;}
4樓:匿名使用者
網上搜一下什麼都有了。
c語言編寫一個子函式求矩陣的逆矩陣
5樓:匿名使用者
#include
#define n 10
int geta(int arcs[n][n],int n)//按第一行計算|a|
int ans = 0;
int temp[n][n];
int i,j,k;
for(i=0;i=i)?k+1:k];}}int t = geta(temp,n-1);
if(i%2==0)
else
}return ans;
}void getastart(int arcs[n][n],int n,int ans[n][n])//計算每一行每一列的每個元素所對應的餘子式,組成a*
int i,j,k,t;
int temp[n][n];
for(i=0;i=i?k+1:k][t>=j?t+1:t];}}ans[j][i] = geta(temp,n-1);
if((i+j)%2 == 1)}}
}int main()
}int a = geta(arcs,n);
if(a==0)
else
printf("\n");}}
printf("\n");
}return 0;}
6樓:饒磊
#include
#include
#include
int brinv(double a, int n)}if (d+1.0==1.0)
if (is[k]!=k)
for (j=0; j<=n-1; j++)if (js[k]!=k)
for (i=0; i<=n-1; i++)l=k*n+k;
a[l]=1.0/a[l];
for (j=0; j<=n-1; j++)if (j!=k)
for (i=0; i<=n-1; i++)if (i!=k)
for (j=0; j<=n-1; j++)if (j!=k)
for (i=0; i<=n-1; i++)if (i!=k)
}for (k=n-1; k>=0; k--)if (is[k]!=k)
for (i=0; i<=n-1; i++)}free(is); free(js);
return(1);
}void brmul(double a, double b,int m,int n,int k,double c)
return;
}int main(),,
,};static double b[4][4],c[4][4];
for (i=0; i<=3; i++)
for (j=0; j<=3; j++)
b[i][j]=a[i][j];
i=brinv(a,4);
if (i!=0)
printf("\n");
printf("mat a- is:\n");
for (i=0; i<=3; i++)
printf("\n");
printf("mat aa- is:\n");
brmul(b,a,4,4,4,c);
for (i=0; i<=3; i++)}}
c語言用二維陣列實現矩陣求逆
7樓:堵丹彤
我以前寫過求逆矩陣的程式。不過沒有用到結構體,你看看如何。
#include
void main()
printf("第一步變換後得到的增廣矩陣為:\n");
for(i=0;i0)
printf("最後得到的增廣矩陣為:\n");
for(i=0;i for(i=0;i for(j=0;j c[i][j]=b[i][n+j]; printf("故逆矩陣為:\n"); for(i=0;i 8樓:匿名使用者 好像直接用迴圈改吧,直接是 :for(int i=0;i<=9;i++) for(int j=0;j<=9;j++)matrix.a[i][j]=matrix.a[j][i]; 只是他地址卡起來不一樣,但是轉換後指的實體地址應是等價的! 9樓:江南_煙雨人 #include #include int main() ,,,}; cout<<"初始狀態"< for(i=0;i for(i=0;i }cout<<"翻轉後狀態"< for(i=0;i return 0;} 矩陣求逆 c程式 10樓: 1.矩陣相乘很簡單的,你自己把每一項拆開,把公式輸給電腦,讓它算就行了。 2.自己編寫的,可以計算行列式的值和逆矩陣的程式:我的程式優點是結果能以分數而不是小數顯示,比一般的程式方便實用多了,望採納。 /*1.本程式理論上是可以計算任意階矩陣的,但考慮到儲存空間有限,設定範圍在6階以內矩陣; 2.若想試驗更高階的矩陣,請將第一部分中第三行的w[800][js+1]中的800改成不低於階數的階乘的值 3.網路上也有相關的程式,但大多不能顯示元素為分數的逆矩陣,而我的程式能實現結果的分數顯示 */#include #include #define js 4 /*注:可在本行改所要計算的階數,只要把數字改了就行*/ void main() }for(deta=0,p=1;p<=t[0];p++) bs[l][k]=deta*int(pow(-1,k+l));}} printf("\n逆矩陣為\n"); for(i=1;i<=js;i++) k=bs[i][j]/m; l=det/m; if(l==1)printf("%-d\t",k); else if(l<0) else printf("%-d/%d\t",k,l); }printf("\n"); }printf("\n\n"); goto chongxin;} 11樓:至尊翠綠竹林 #include #include #include int brinv(double a, int n)}if (d+1.0==1.0) if (is[k]!=k) for (j=0; j<=n-1; j++)if (js[k]!=k) for (i=0; i<=n-1; i++)l=k*n+k; a[l]=1.0/a[l]; for (j=0; j<=n-1; j++)if (j!=k) for (i=0; i<=n-1; i++)if (i!=k) for (j=0; j<=n-1; j++)if (j!=k) for (i=0; i<=n-1; i++)if (i!=k) }for (k=n-1; k>=0; k--)if (is[k]!=k) for (i=0; i<=n-1; i++)}free(is); free(js); return(1); }void brmul(double a, double b,int m,int n,int k,double c) return; }int main(),, ,};static double b[4][4],c[4][4]; for (i=0; i<=3; i++) for (j=0; j<=3; j++) b[i][j]=a[i][j]; i=brinv(a,4); if (i!=0) printf("\n"); printf("mat a- is:\n"); for (i=0; i<=3; i++) printf("\n"); printf("mat aa- is:\n"); brmul(b,a,4,4,4,c); for (i=0; i<=3; i++)}}這個行麼?不知道是不是你要的,希望對你有用 c語言 求矩陣的逆 12樓:鬱楓 下面是實現gauss-jordan法實矩陣求逆。 #include #include #include int brinv(double a, int n)}if (d+1.0==1.0) if (is[k]!=k) for (j=0; j<=n-1; j++)if (js[k]!=k) for (i=0; i<=n-1; i++)l=k*n+k; a[l]=1.0/a[l]; for (j=0; j<=n-1; j++)if (j!=k) for (i=0; i<=n-1; i++)if (i!=k) for (j=0; j<=n-1; j++)if (j!=k) for (i=0; i<=n-1; i++)if (i!=k) }for (k=n-1; k>=0; k--)if (is[k]!=k) for (i=0; i<=n-1; i++)}free(is); free(js); return(1); }void brmul(double a, double b,int m,int n,int k,double c) return; }int main(),, ,};static double b[4][4],c[4][4]; for (i=0; i<=3; i++) for (j=0; j<=3; j++) b[i][j]=a[i][j]; i=brinv(a,4); if (i!=0) printf("\n"); printf("mat a- is:\n"); for (i=0; i<=3; i++) printf("\n"); printf("mat aa- is:\n"); brmul(b,a,4,4,4,c); for (i=0; i<=3; i++) }} 《收起 參考資料:c常用演算法程式集-徐士良 include using namespace std int main cout 你輸版入的矩 陣為權 cout cout 你輸入的矩陣的轉置矩陣為 return 0 根據提示輸入,可以得到結果 建議你bai使用eigen庫,eigen是一個強大的矩du陣運算的庫zhi。這是他的官dao網網頁連結... 源程式如下 include include include include include include define max 100void inputstyle int 輸入函式 void input int int 輸入函式 long danx int int int sgnx int vo... 源程式 如下 define crt secure no warnings vs環境下需要,vc不需要 include 標頭檔案 int main 定義三個變數和一個長度為10的陣列 printf 請輸入十個數 n 顯示 請輸入十個數 for i 0 i 10 i for i 1 i 10 i for...用C 語言編寫 輸入2維矩陣,輸出這個矩陣的轉置矩陣
c語言求矩陣的逆,C語言 求矩陣的逆
用C語言編寫,輸入數按降序排列用C語言編寫,輸入10個數按降序排列