高斯-赛德尔迭代

来自testwiki
imported>Tjmj2022年5月22日 (日) 07:44的版本 參見
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转到导航 跳转到搜索

Template:Incomplete Template:NoteTA Template:Unreferenced 高斯-赛德尔迭代Template:Lang)是数值线性代数中的一个迭代法,可用来求出线性方程组解的近似值。该方法以卡爾·弗里德里希·高斯Template:Link-en命名。

算法

对于一个含有n个未知量及n个等式的如下线性方程组

a11x1+a12x2++a1nxn=b1,a21x1+a22x2++a2nxn=b2,=an1x1+an2x2++annxn=bn.

为了求这个方程组的解x,我们使用迭代法。k用来计量迭代步数。给定该方程组解的一个近似值xkn。在求k+1步近似值时,我们利用第m个方程求解第m个未知量。在求解过程中,所有已解出的k+1步元素都被直接使用。这一点与雅可比法不同。对于每个元素可以使用如下公式

xmk+1=1amm(bmj=1m1amjxjk+1j=m+1namjxjk),1mn.

重复上述的求解过程,可以得到一个线性方程组解的近似值数列:x0,x1,x2,。在该方法收敛的前提下,此数列收敛x. 可以證明數列收斂若線性方程組係數矩陣為對稱正定矩陣(symmetric positive definite matrix)或對角優勢矩陣(diagonally dominant matrix)。

为了保证该方法可以进行,主对角线元素amm需非零。

矩阵分解

线性方程组的系数aij(i,j=1,2,,n)可以被写成矩阵形式 An×n, 该矩阵的第i行第j列元素满足 (A)i,j=aij。方程组的右边项可以被写成向量形式 bn:(b)i=bi。 线性方程组因此可以被写成矩阵运算形式

Ax=b

矩阵A可以分解成如下形式

A=D+L+U,

其中Dn×n为一个对角矩阵满足(D)i,i=(A)i,i, L,U均为严格三角矩阵L为严格下三角矩阵, U 为严格上三角矩阵。

例子

A=(122314531)D=(100010001)L=(000300530)U=(022004000).

高斯-赛德尔迭代的每一步可以写成如下形式

Dxk+1=bLxk+1Uxk.

算法

因为元素可以被重新赋值为在这个算法中计算得到的新值,所以只需要保存一个向量,而向量索引被省略。该算法如下:

输入: Template:Var, Template:Var
输出: ϕ

初始化一个的猜测结果ϕ

repeat until convergence(收敛)
    for Template:Var from 1 until Template:Var do
        σ0
        for Template:Var from 1 until Template:Var do
            if Template:VarTemplate:Var then
                σσ+aijϕj
            end if
        end (Template:Var - loop)
        ϕi1aii(biσ)
    end (Template:Var-loop)
    check if convergence is reached(检查是否已收敛)
end (repeat)

參見