所以我試圖創建一個腳本,將採取一個數組,將其轉換成壓縮形式,然後對它運行Cholesky因式分解,最後使用正向和反向替換來解決它(Ax=b
)。正向替換包裝數組
我現在遇到的麻煩是爲打包數組創建正向替換(列明智)算法。我已經正確地完成了後向替換,但是我似乎無法正確轉換算法。
這是當前的後向代入算法我有(這是完美的)
x = b;
p = n*(n+1)/2;
for j = n:-1:1
x(j) = x(j)/u(p);
p = p - 1;
for i = j-1:-1:1
x(i) = x(i) - u(p) * x(j);
p = p - 1;
end
end
凡n
是原始A
矩陣(其是正方形和SPD)的大小。從A
矩陣u
的映射如下:
A(i,j) = u(i+j*(j-1)/2)
我現在正向替換算法的迭代如下:
x = b;
p = 1;
for j = 1:n
x(j) = x(j)/u(p);
p = p + 1;
for i = j+1:n
x(i) = x(i) - u(p) * x(j);
p = p + 1;
end
end
我似乎無法找出我做錯了什麼。無論我嘗試結束,只是給我NaN
或Inf
作爲x
的答案。比我聰明的人能算出算法應該是什麼樣子嗎?