[問題] 計算矩陣的值

看板C_and_CPP作者 (darkjack101)時間14年前 (2010/04/19 16:06), 編輯推噓3(304)
留言7則, 5人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) 我希望可以寫一個程式可以計算矩陣的值,可能矩陣為3x3~10x10 我所用的方式如下 我先寫一個function 專為求3x3矩陣的值 再寫一個function 專門計算4x4的值 其中4x4會利用到上面專門用來求3x3的function 不過以此類推可以寫出nxn的矩陣 不顧我覺得我的想法可能有誤 因為到後面太難寫了 我把我的code列在下面 供板上大大參考 希望可以給點建議 我應該要怎麼做會比較好 *=======以下為code=========================== # include <stdio.h> /*the function of three order metrix*/ int det_h (int A[3][3]){ int det_h=0,det_ho,det_ht,det_hh; det_ho=A[0][0]*(A[1][1]*A[2][2]-A[1][2]*A[2][1]); det_ht=A[0][1]*(A[1][0]*A[2][2]-A[1][2]*A[2][0]); det_hh=A[0][2]*(A[1][0]*A[2][1]-A[1][1]*A[2][0]); det_h=det_ho-det_ht+det_hh; return det_h; } /*the function of four order metrix*/ int det_f (int A[4][4]){ int det_f=0,det_fo,det_ft,det_fh,det_ff,i,j; int detff[4][8],E[3][3],B[3][3],C[3][3],D[3][3]; for (i=0;i<4;i++) { for (j=0;j<8;j++) { if (j<4) detff[i][j]=A[i][j]; else detff[i][j]=A[i][j-4]; } } for (i=0;i<3;i++) { for (j=0;j<3;j++) { E[i][j]=detff[i+1][j+1]; } } for (i=0;i<3;i++) { for (j=0;j<3;j++) { B[i][j]=detff[i+1][j+2]; } } for (i=0;i<3;i++) { for (j=0;j<3;j++) { C[i][j]=detff[i+1][j+3]; } } for (i=0;i<3;i++) { for (j=0;j<3;j++) { D[i][j]=detff[i+1][j]; } } for (i=0;i<3;i++) { for (j=0;j<3;j++) { printf("%2d ",E[i][j]); } printf("\n"); } det_fo=A[0][0]*(det_h (E)); det_ft=A[0][1]*(det_h (B)); det_fh=A[0][2]*(det_h (C)); det_ff=A[0][3]*(det_h (D)); det_f=det_fo-det_ft+det_fh-det_ff; return det_f; } /*caluculate the value of metrix*/ int main (void){ int test; int A[4][4]={{2,2,3,4},{5,6,8,8},{9,10,11,12},{13,14,15,16}}; int mh; mh=det_f (A); printf("det_4=%d--%d",mh,A[1][1]); scanf("%d",&test); return 0; } %================================================================ 希望得到的正確結果: 有沒有其他的idea 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) C *[1;36m補充說明:*[m ps.這其實是某一門的作業 不過我是旁聽生 所以並不是想說靠版上大大幫忙寫作業 而是我想知道有沒有更好的辦法 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.93.52

04/19 16:18, , 1F
hint: 寫一個計算 det 的recursive function
04/19 16:18, 1F

04/19 17:07, , 2F
利用LU可以計算det值
04/19 17:07, 2F

04/19 19:15, , 3F
可以再說說如何使用recursion寫嗎
04/19 19:15, 3F

04/19 19:48, , 4F
google://矩陣 降階
04/19 19:48, 4F

04/19 20:13, , 5F
我不是很清楚 當階數太高時應該要怎麼做比較好
04/19 20:13, 5F

04/19 20:17, , 6F
1F2F4F不是都已經提示你了嗎?? 基本上這是數學問題, 你
04/19 20:17, 6F

04/19 20:18, , 7F
去查好數值方法的資料看懂它先; 才是實作的問題....
04/19 20:18, 7F
文章代碼(AID): #1Bp0y218 (C_and_CPP)