[爆卦]高斯喬登消去法程式是什麼?優點缺點精華區懶人包

為什麼這篇高斯喬登消去法程式鄉民發文收入到精華區:因為在高斯喬登消去法程式這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者a22856830 (Yel.)看板C_and_CPP標題[問題] 高斯喬登消去法時間Mon N...


我寫了個高斯喬登消去法的C code
但是跑出來的反矩陣大部分是0還有-0


希望得到的正確結果:算出正確的反矩陣


程式跑出來的錯誤結果:很多元素值是0


開發平台:C


有問題的code:
int x, y, k;
for (k = 0; k < N; k++)
R[k][k] = 1;
for (k = 0; k < N; k++) {
for (x = 0; x < N; x++) {
if (x <= k)
continue;
for (y = 0; y < N; y++) {
M[x][y] -= (M[x][k] / M[k][k]) * M[k][y];
R[x][y] -= (M[x][k] / M[k][k]) * R[k][y];
}
}
}
for (k = N - 1; k >= 0; k--) {
for (x = N - 1; x >= 0; x--) {
if (x >= k)
continue;
for (y = 0; y < N; y++) {
M[x][y] -= (M[x][k] / M[k][k]) * M[k][y];
R[x][y] -= (M[x][k] / M[k][k]) * R[k][y];
}
}
}
for (k = 0; k < N; k++) {
for (y = 0; y < N; y++) {
R[k][y] /= M[k][k];
}
}
for (x = 0; x < N; x++) {
for (y = 0; y < N; y++)
printf("%.f ", R[x][y]);
printf("\n");
}

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.109.89
x000032001:趁機會學一下debugger的用法吧 11/29 19:35
tropical72:不是每個矩陣都存反矩陣,先測你的測資是否存在. 11/29 19:37
tropical72:http://0rz.tw/PVmm6 http://0rz.tw/aRP7S 11/29 19:40
tropical72:第一個是反矩陣主程式,第二個是會用到的sub-function. 11/29 19:40
a22856830:行列式我不打算寫了...目前功力尚弱且時間已然不足0.0 11/29 20:04
tropical72:行列式不打算寫?指的是不打算寫反矩陣的意思嗎? 11/29 20:08
a22856830:不打算判斷有沒有反矩陣的意思...不是用高斯就可求出反 11/29 20:11
a22856830:矩陣嗎?(出門 半夜回) 11/29 20:12
tropical72:你誤會大了,我給的第一個網址所寫的內容就是要高斯求 11/29 20:15
tropical72:反矩陣,然而就如我跟你所說,不是所有得行列式都有反矩 11/29 20:16
tropical72:陣的存在,所以我在傳回值時才又考濾了三種情形.而你說 11/29 20:16
tropical72:你會跑出一堆零出來,所以我才先請你去算你原本測試的資 11/29 20:17
tropical72:料到底有沒有反矩陣的存在,別先假設你的測資是存在的. 11/29 20:17
prismwu:推樓上..永遠不要假設你的測資或你寫的矩陣存在反矩陣..y 11/29 23:43
a22856830:tropical大貼的網址我之前有看過了...因為我還沒學 11/30 02:58
a22856830:動態宣告,所以看不懂@@ 11/30 02:59
a22856830:也許該研究一下... 11/30 03:07
oeg:同為天涯打CODE人 淚推T.T 11/30 11:36

你可能也想看看

搜尋相關網站