高斯-赛戴尔(Gauss-Seidel)迭代法基于MATLAB的实现

本文介绍了作者在MATLAB中实现高斯-赛戴尔迭代法的过程,探讨了迭代收敛判断的问题,并提供了代码示例。虽然存在迭代矩阵谱半径判断不准确的情况,但整体上仍可作为参考。文章最后鼓励读者自行试验并提出反馈。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

这个代码的实现,其实主要是因为所修课程当中老师要求,所以自己就写了这么一个代码,具体原理就不提及了,各处文献都写的很清楚了,如果想要从原理仔细学习,可以参照各种数值分析课本。

这里讲一下这里面的一些问题:
·首先,这其中关于迭代是否收敛的判断有一点小问题,就是关于迭代矩阵(D-L)\U求其谱半径作为判断标准的问题:我只采用了迭代矩阵谱半径为判断标准,但是遇到了有一些矩阵该值比1稍大小数点后一点点,被判断不收敛,但实际上可以收敛;
·其次,关于高斯-赛德尔迭代法的实现形式,我并非采用的是矩阵分解的形式,而是以方程组的解法来进行迭代。

嘛,总的来说,只算作一个样例供大家参考~(Kira)

代码

function [X1]=GS(A_matrix, B) 
%取得n并给输出向量留一个初值
[row_a,col_a] = size(A_matrix);
X1=zeros(row_a,1);
%取得对角矩阵、严格上三角矩阵、严格下三角矩阵
D=zeros(row_a,col_a);
for i=1:row_a
    D(i,i)=A_matrix(i,i);
end
U=-A_matrix;
for i=1:row_a
    for j=1:i
        U(i,j
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值