高斯-赛德尔(Gauss-Seidel)方法是一种迭代过程,用于找到具有任意选择精度的线性代数方程组的近似解。该方法适用于对角线中具有非零元素的正方形矩阵,并且如果矩阵是对角占优势的,则可以保证收敛。
它由卡尔·弗里德里希·高斯(Carl Friedrich Gauss,1777-1855年)创建,他于1823年向一位学生进行了一次私人表演。后来,菲利普·路德维希·冯·塞德尔(Philipp Ludwig von Seidel,1821年至1896年)正式出版,因此得名两位数学家
图1.高斯-塞德尔方法迅速收敛以获得方程组的解。资料来源:F. Zapata。
为了完全理解该方法,有必要知道当每行对角元素的绝对值大于或等于同一行其他元素的绝对值之和时,矩阵对角占优。
数学上这样表示:
使用简单案例的说明
为了说明Gauss-Seidel方法的组成,我们将举一个简单的例子,其中X和Y的值可以在如下所示的2×2线性方程组中找到:
5X + 2Y = 1
X-4Y = 0
遵循的步骤
1-首先,必须确定收敛是否安全。立即观察到,实际上,这是一个对角线主导系统,因为在第一行中,第一系数具有比第一行中的其他系数更高的绝对值:
-5->-2-
同样,第二行中的第二个系数也是对角线主导的:
--4->-1-
2-清除变量X和Y:
X =(1-2年)/ 5
Y = X / 4
3-放置任意初始值,称为“种子”:Xo = 1,I = 2。
4-迭代开始:要获得第一近似值X1,Y1,将种子替换为步骤2的第一个方程式,并将结果替换为步骤2的第二个方程式:
X1 =(1-2 I)/ 5 =(1-2×2)/ 5 = -3/5
Y1 = X1 / 4 =(-3/5)/ 4 = -3/20
5-我们以类似的方式进行操作,以获得方程组解的第二近似值:
X2 =(1-2 Y1)/ 5 =(1-2x(-3/20))/ 5 = 13/50
Y2 = X2 / 4 =(13/50)/ 4 = 13/200
6-第三次迭代:
X3 =(1-2 Y2)/ 5 =(1-2(13/200))/ 5 = 87/500
Y3 = X3 / 4 =(87/500)/ 4 = 87/2000
7-第四次迭代,作为此说明性案例的最终迭代:
X4 =(1-2 Y3)/ 5 =(1-2(87/2000))/ 5 = 913/5000
Y4 = X4 / 4 =(913/5000)/ 4 = 913/20000
这些值与其他解析方法找到的解决方案非常吻合。读者可以借助在线数学程序快速检查它。
方法分析
可以看出,在高斯-塞德尔方法中,必须将在同一步骤中为先前变量获得的近似值替换为后续变量。这与其他迭代方法(例如Jacobi方法)不同,后者的每个步骤都需要与上一阶段近似。
Gauss-Seidel方法不是并行过程,而Gauss-Jordan方法则是并行过程。这也是Gauss-Seidel方法具有比Jordan方法更快的收敛性(更少步骤)的原因。
对于对角占优矩阵条件,并不总是满足。但是,在大多数情况下,简单地交换原始系统中的行就足以满足条件。此外,即使不满足对角优势条件,该方法也几乎总是收敛。
通过Gauss-Seidel方法的四次迭代获得的先前结果可以用十进制形式编写:
X4 = 0.1826
Y4 = 0.04565
拟议的方程组的精确解为:
X = 2/11 = 0.1818
Y = 1/22 = 0.04545。
因此,只需进行4次迭代,您就可以得到千分之一精度(0.001)的结果。
图1说明了连续的迭代如何快速收敛到精确的解决方案。
应用领域
Gauss-Seidel方法不仅限于2×2线性方程组。可以将前面的过程推广为求解具有n个未知数的n个方程的线性系统,该线性系统表示为如下矩阵:
A X = b
其中A是一个nxn矩阵,而X是要计算的n个变量的向量n个分量;和b是包含独立项的值的矢量。
为了概括在说明性情况下应用于nxn系统的迭代序列(要从中计算变量Xi),将应用以下公式:
在此等式中:
-k是在迭代k中获得的值的索引。
-k +1表示下面的新值。
当在迭代k + 1中获得的值与紧接在其之前获得的值相差恰好为所需精度的量ε时,确定最终的迭代次数。
高斯-塞德尔方法的例子
-范例1
编写一个通用算法,在给定系数A矩阵,独立项矢量b,迭代次数(iter)和初始值或“种子”的情况下,允许计算线性方程组nxn 的近似解X的向量“向量X”。
解
该算法由两个“ To”循环组成,一个循环用于迭代,另一个循环用于变量。如下所示:
对于k ∊
对于我∊
X:=(1 / A)*(b-∑ j = 1 n(A * X)+ A * X)
-示例2
通过免费和免费使用的数学软件SMath Studio中的应用程序检查先前算法的操作,该软件可用于Windows和Android。以2×2矩阵为例,它帮助我们说明了高斯-赛德尔方法。
解
图2.使用SMath Studio软件的2 x 2示例方程组的解。资料来源:F. Zapata。
-范例3
将Gauss-Seidel算法应用于以下3×3方程组,该系统先前已按如下方式排序:对角线的系数占主导地位(即绝对值大于的系数的绝对值)同一行):
9 X1 + 2 X2-X3 = -2
7 X1 + 8 X2 + 5 X3 = 3
3 X1 + 4 X2-10 X3 = 6
使用空向量作为种子,并考虑五次迭代。对结果发表评论。
解
图3.使用SMath Studio求解示例3的方程组。资料来源:F. Zapata。
对于具有10次迭代而不是5次迭代的同一系统,将获得以下结果:X1 = -0.485; X2 = 1.0123;X3 = -0.3406
这告诉我们,五个迭代足以获得三个小数位的精度,并且该方法迅速收敛到解。
-示例4
使用上面给出的Gauss-Seidel算法,找到下面给出的4×4方程组的解:
10 x1-x2 + 2 x3 + 0 x4 = 6
-1 x1 + 11 x2-1 x3 + 3 x4 = 25
2 x1-1 x2 + 10 x3-1 x4 = -11
0 x1 + 3 x2-1 x3 + 8 x4 = 15
要开始该方法,请使用以下种子:
x1 = 0,x2 = 0,x3 = 0和x4 = 0
与迭代次数11比较,考虑10次迭代并估计结果的误差。
解
图4.使用SMath Studio求解示例4的方程组。资料来源:F. Zapata。
与下一次迭代(11号)进行比较时,结果是相同的。两次迭代之间的最大差异约为2×10 -8,这意味着显示的解决方案的精度至少为七个小数位。
参考文献
- 迭代求解方法。高斯·赛德尔。从以下位置恢复:cimat.mx
- 数值方法。高斯·赛德尔。从以下位置恢复:test.cua.uam.mx
- 数值:高斯-塞德尔方法。从以下来源恢复:aprendeenlinea.udea.edu.co
- 维基百科。高斯-塞德尔方法。从以下位置恢复:en。wikipedia.com
- 维基百科。高斯-塞德尔方法。从以下位置恢复:es.wikipedia.com