数值分析(三):C++实现线性方程组的高斯-赛德尔迭代法

本文介绍了高斯-赛德尔迭代法用于求解高阶线性方程组的原理和步骤,并通过C++实现这一算法。相较于雅克比迭代法,高斯-赛德尔迭代法效率更高,因为每次迭代时使用了已更新的最新数据。文章详细阐述了如何设置初始解向量,以及如何通过迭代达到所需的精度。
摘要由CSDN通过智能技术生成

线性方程组的直接解法之后,就轮到迭代解法了,直接解法针对的是低阶稠密矩阵,数据量较少,而工程上有更多的是高阶系数矩阵,使用迭代法效率更高,占用的空间较小。
迭代法的最基本思想就是由初始条件,比如说初始解向量随便列举一个,就0向量也行,然后进行迭代,k到k+1,一步一步从k=1开始去逼近真实解,虽然说迭代法的解是近似解,但是当迭代次数足够多的时候,得到的就是很很接近真实解了,而直接解法说是得到精确解,但是受计算机的限制,截断误差总是有的,所以最后得到的也是近似解,因此两种解法也无所谓孰优孰劣之分,得具体情境具体看了,这次来实现迭代法中的高斯-赛德尔迭代法,并用C++实现。
(一)高斯-赛德尔迭代法的步骤
最简单的迭代法是雅克比迭代法,对于对角严格占优的系数矩阵就可以使用雅克比迭代法进行计算,比如说方程:
图1 实例方程
满足系数矩阵的严格对角占优,即对角线上的元素比同行的其他元素之和还要大,数学表达式就是:
图2 系数矩阵严格对角占优的数学表述
满足这样的关系就可以进行雅克比迭代法了,进行雅克比迭代是留下主对角元素在最左边,然后剩下全部移到右边,得到这样一个一步一步迭代的式子:
图3 雅克比迭代递推
这样就到了一个k到k+1的迭代公式,可以取(0,0,0)进行迭代,知道解向量达到一定的精度放弃迭代,十次迭代后,就能得到:
图4 雅克比迭代法得到近似解
这是迭代法最常见也最容易的雅克比迭代,效率比较低,于是就有高斯—赛德尔迭代法,那就是方程里迭代计算x2时,x1已经迭代过了,即x1的数据已经更新了,所以应该用最新的值,关键是效率会高很多,于是就有下面的迭代式子:
图5 雅克比迭代法的改进就是高斯-赛德尔迭代法
这样一种小小的改进,给迭代计算方程的解带来极大效率的提高,所以接下来再将高斯—赛德尔迭代法步骤进行数学语言的描述:
使用高斯-赛德尔迭代法解线性方组程***Ax=b***:
1&#x

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值