跳轉到內容

線性代數/自動化

來自華夏公益教科書,開放的書籍,開放的世界
線性代數
 ← 比較集合描述 自動化 n 維空間的線性幾何 → 

這是一個 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 個或更多)的系統中,早期過程中的微小舍入誤差會累積,最終淹沒解。

這些問題以及許多類似問題超出了本書的範圍,但請記住,僅僅因為高斯消元法在理論上總是有效的,僅僅因為程式正確地實現了該方法,僅僅因為答案出現在綠條紙上,並不意味著該答案是正確的。在實踐中,請始終使用專家努力解決可能出現問題的軟體包。

線性代數
 ← 比較集合描述 自動化 n 維空間的線性幾何 → 
華夏公益教科書