線性代數/自動化
外觀
< 線性代數
這是一個 PASCAL 程式,用於對增廣矩陣進行 操作。
PROCEDURE Pivot(VAR LinSys : AugMat;
k : REAL;
i, j : INTEGER)
VAR
Col : INTEGER;
BEGIN
FOR Col:=1 TO NumVars+1 DO
LinSys[j,Col]:=k*LinSys[i,Col]+LinSys[j,Col];
END;
當然,這只是整個程式的一部分,但它表明高斯消元法非常適合計算機編碼。
然而,也存在一些缺陷。例如,一些缺陷源於計算機對實數使用有限精度近似值。
這些系統提供了一個簡單的示例。

(後兩行很難區分。)兩者都有 作為唯一的解。
在第一個系統中,對數字進行微小的改變只會導致解的微小改變
給出瞭解 。從幾何上看,對其中一條直線進行微小的改變不會顯著改變交點。
這對於第二個系統並不適用。係數的微小改變
會導致完全不同的答案:.
第二個示例的解會發生很大的變化,具體取決於第 位數字。這對使用 位數字來表示實數的機器來說是個壞訊息。簡而言之,幾乎奇異的系統可能難以計算。
另一個可能出現的問題是誤差傳播。在一個具有大量方程(例如,100 個或更多)的系統中,早期過程中的微小舍入誤差會累積,最終淹沒解。
這些問題以及許多類似問題超出了本書的範圍,但請記住,僅僅因為高斯消元法在理論上總是有效的,僅僅因為程式正確地實現了該方法,僅僅因為答案出現在綠條紙上,並不意味著該答案是正確的。在實踐中,請始終使用專家努力解決可能出現問題的軟體包。