我試圖編寫代碼來找到線性方程組Ax=B
中的A
,所以我使用了LU分解。現在我已經正確地使用了L和U,爲了得到B = Ly中的y,我被困在正向替換中。正向置換不能按預期的方式工作C
我在MatLab中編寫了一些完美工作的代碼,但是我無法得到相同的結果,用C重寫代碼。所以我想知道是否有人可能知道我做錯了什麼,我沒有完全使用到C.
這是我的代碼在MatLab的:
y(1,1) = B(1,1)/L(1,1);
for i= 2:n
sum=0;
sum2=0;
for k = 1: i-1
sum = sum + L(i,k)*y(k,1);
end
y(i,1)=(B(i,1)-sum)/L(i,i);
end
其中L
是我的下三角矩陣,B
是相同大小的矢量,並且是n
2498在這種情況下。
我的C代碼如下:
碼之間float sum = 0;
y_prev[0]=B[0]/(float)Low[0][0];
for (int i = 1; i < CONST; i++)
{
for (int k = 0; k < i-1; k++)
{
sum = sum +Low[i][k]*y_prev[k];
}
y_prev[i]= (B[i]- sum)/(float)Low[i][i];
}
你在C float中的位置(Low [0] [0])'你是不是指'(float)Low [0] [0]'?這裏的'(float)'應該是一個類型不是函數。 –
究竟是什麼問題? (除了浮法投)。如果你得到錯誤,可能是因爲我們沒有看到數組定義/分配代碼。 –
我沒有得到錯誤代碼,但輸出向量不正確。我馬上改變演員的東西,謝謝。 – SDj