实验目的及要求: 1、了解超松弛迭代法的基本原理和特点; 2、判断超松弛迭代对任意初始向量的收敛性; 3、完成超松弛迭代算法的程序实现。 |
||||||||
实验内容: 1、编写超松弛迭代通用子程序,求解下列方程组 ,在1~2内设置不同的松弛因子,找到最佳松弛因子。(要求精度为0.0005) |
||||||||
实验步骤与程序: SOR迭代法理论: SOR迭代法流程图:
被调用的cao_song_chi.m文件 function [x,k,index]=chao_song_chi(A,b,ep,N,w) n=length(A);k=1; x=zeros(n,1);y=zeros(n,1);index=1; while k<N y=x; for i=1:n z=b(i); for j=1:n if j~=i z=z-A(i,j)*x(j); end end if abs(A(i,i))<1e-10 || k==N index=0; return end z=z/A(i,i); x(i)=(1-w)*x(j)+w*z; end if norm(y-x,inf)<ep break end k=k+1; end 运行的cao_song_chi_1.m文件 A=[9,-1,-1;-1,8,0;-1,0,9]; b=[7;7;8]; ep=5*1e-5; N=100; w=1 [x,k,index]=chao_song_chi(A,b,ep,N,w) |
||||||||
运行结果: |
||||||||
结果分析与讨论:
1.都是迭代方法,使用迭代公式逐步逼近方程组的解。 2.都适用于线性方程组求解。 3.都可以通过选择适当的初始值使迭代收敛。
1.高斯-赛德尔迭代和雅克比迭代是局部更新系数矩阵,而超松弛迭代需要使用一个松弛因子对当前迭代的解进行加权平均。 2.高斯-赛德尔迭代只使用最新的计算结果来进行迭代更新,而雅克比迭代和超松弛迭代需要在每个迭代步骤中使用前一次迭代的所有计算结果。因此,高斯-赛德尔迭代可以收敛得更快,尤其是在对角线元素主导的情况下。 3.超松弛迭代在选择适当的松弛因子时可以比高斯-赛德尔迭代和雅克比迭代更加快速,但是具有更多的调整参数。 |
数学建模算法(基于matlab和python)之 线性方程组的迭代法(超松弛迭代法)(8/10)
猜你喜欢
转载自blog.csdn.net/qq_59819866/article/details/131416548
今日推荐
周排行