跳轉到內容

數值方法/線性方程組的解

來自華夏公益教科書,開放的書籍,開放的世界

定義和基礎

[編輯 | 編輯原始碼]

線性方程組是指一組需要同時求解的線性方程。線性方程的形式為

其中個係數是常數,而是n個未知數。根據上面的符號,線性方程組可以表示為

該系統包含個線性方程,每個方程有個係數,並有個未知數,這些未知數必須同時滿足這組方程。為了簡化符號,可以使用矩陣符號重寫上述方程

矩陣 的元素是方程的係數,,向量 的元素分別為 。在這個記號中,每行都構成一個線性方程。

超定和欠定系統

[edit | edit source]

為了使解 是唯一的,必須至少有與未知數一樣多的方程。用矩陣表示法來說,這意味著 。但是,如果一個系統包含的方程比未知數多 (),則很有可能(不說是規律)根本不存在解。這樣的系統被稱為 **超定系統**,因為它們包含的方程比未知數多。它們需要特殊的數學方法來近似求解。最常用的方法是 **最小二乘法**,它旨在將試圖求解系統時每個未知數產生的誤差平方和最小化。這種問題通常出現在測量或資料擬合過程中。

示例
假設一個任意三角形:假設一個人用 的精度測量了所有三個內角 。此外,假設邊 a、b 和 c 的長度是精確已知的。從三角學可知,使用餘弦定理,如果已知所有其他邊和角,則可以計算角或邊的長度。但眾所周知,平面三角形的內角之和始終為 。因此,我們有三個餘弦定理和角之和規則。這總共構成了四個方程和三個未知數,形成了一個超定問題。

a triangle

另一方面,如果 ,則會出現問題,即解不是唯一的,因為可以自由選擇一個未知數。同樣,也存在數學方法來處理這類問題。但是,這些方法在本課文中將不予介紹。

本章主要集中討論 的情況,除非另有說明,否則預設此條件成立。

線性系統的精確解

[編輯 | 編輯原始碼]

用線性代數求解方程組 很容易:只需從左側乘以 ,得到 。但是,求解 (除了平凡的情況)非常困難。以下部分將介紹幾種求解該問題精確解(直到舍入誤差)的方法。

對角和三角形系統

[編輯 | 編輯原始碼]

對角矩陣只有主對角線上有元素

在這種情況下, 的逆矩陣就是一個對角矩陣,其元素為逆元素,即

因此,對角系統的解為 ,這很容易計算。

上三角系統定義為

而下三角系統定義為

回代法是求解上三角系統的過程

另一方面,前代法是對下三角系統執行相同過程。


高斯-約旦消元法

[edit | edit source]

該方法不求解 ,而是依賴於行操作。根據線性代數的定律,方程組的行可以乘以一個常數而不改變解。此外,行之間可以相加和相減。這引出了改變方程組結構的想法,使得 具有便於求解 的結構。其中一個結構是如上所述的對角矩陣。

高斯-約旦消元法將矩陣 轉換為對角形式。為了簡化過程,人們通常使用一種改進的方案。首先,將矩陣 和右端向量 組合成增廣矩陣


為了說明,考慮一個易於理解但有效的演算法,它可以由四個基本部分構成

  • gelim:主函式遍歷一個簡化方程組的堆疊,透過一系列部分解,一次構建一個變數的完整解。
  • stack:重複呼叫reduce,生成一個 堆疊,包含簡化方程組,從小到大排序(例如,包含 2 個元素,如 <ax = b>)。
  • solve:在給定簡化方程組和部分解的情況下,求解一個變數。例如,給定簡化方程組 <aw bx cy = d> 和部分解 <x y>,則 w = (d - bx - cy)/a。現在,部分解 <w x y> 可用於下一輪,例如 <au bv cw dx , e>。
  • reduce:從頂部獲取第一個方程並將其壓入堆疊;然後生成一個殘差 - 簡化矩陣,透過從剩餘較下方程的對應元素中減去第一個原始方程的元素,例如 b[j][k]/b[j][0] - a[k]/a[0]。正如您所見,這透過將一個元素從一個元素中減去來消除每個較下方程的第一個元素,並且只需要保留剩餘的元素 - 最終,殘差是一個輸出矩陣,其行和列比輸入矩陣少一行和一列。然後將其用作下一次迭代的輸入。

需要注意的是,乘法也可以用作除法的替代;但是,對於較大的矩陣(例如 n=10),這會產生級聯效應,導致產生 NAN(無窮大)。從統計學上看,除法具有將簡化矩陣歸一化的效果 - 生成均值更接近零且標準差更小的數字;對於隨機生成的資料,這會生成具有接近 +-1 的條目的簡化矩陣。


繼續的內容仍待撰寫

正如它所示,將方程組轉換為完全對角形式並非必要。將其轉換為三角形形式(上三角或下三角)就足夠了,因為然後可以透過反向或正向替換分別求解它。

LU分解

[edit | edit source]
本節內容待撰寫

線性方程組的近似解

[edit | edit source]
本節內容待撰寫

雅可比迭代法

[edit | edit source]

這是一個迭代方案。

高斯-賽德爾迭代法

[edit | edit source]
本節內容待撰寫
10v+w+x-2y+z=-1
v-20w-2x+y+z=20
v+w+10x-y-z=-1
-v-2w+x+50y+z=2
v+w+x+y+100z=-1 
;find result:

超鬆弛迭代法 (SOR)

[編輯 | 編輯原始碼]

SOR 是連續超鬆弛法的縮寫。它是一種迭代方案,使用鬆弛引數 ,並且是 特殊情況下的高斯-賽德爾方法的推廣。

給定一個具有未知數 xn 個線性方程的方陣系統

其中

那麼 A 可以分解為一個 對角 分量 D,以及 嚴格的下三角和上三角 分量 LU

其中

線性方程組可以改寫為

其中ω > 1為常數。

逐次超鬆弛法是一種迭代技術,它使用表示式右側的x先前值求解左側的x。用分析方法表示,可以寫成

但是,利用(D+ωL)的三角形式,可以使用前向替換按順序計算x(k+1)的元素

鬆弛因子的選擇並不容易,它取決於係數矩陣的性質。對於對稱正定 矩陣,可以證明0 < ω < 2將導致收斂,但我們通常更關注更快地收斂而不是僅僅收斂。

共軛梯度法

[編輯 | 編輯原始碼]
本節內容待撰寫

多重網格法

[編輯 | 編輯原始碼]
本節內容待撰寫

主頁 - 數學書架 - 數值方法

華夏公益教科書