[問題] 計算矩陣的值
遇到的問題: (題意請描述清楚)
我希望可以寫一個程式可以計算矩陣的值,可能矩陣為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
04/19 16:18, 1F
推
04/19 17:07, , 2F
04/19 17:07, 2F
→
04/19 19:15, , 3F
04/19 19:15, 3F
→
04/19 19:48, , 4F
04/19 19:48, 4F
→
04/19 20:13, , 5F
04/19 20:13, 5F
推
04/19 20:17, , 6F
04/19 20:17, 6F
→
04/19 20:18, , 7F
04/19 20:18, 7F