云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 王能超 计算方法 - 算法设计及MATLAB实现课后代码

王能超 计算方法 - 算法设计及MATLAB实现课后代码

  • 62 次阅读
  • 3 次下载
  • 2025/6/17 21:53:19

end

r=max(abs(x2-x1)); x1=x2; k=K+1; if k>N

disp(‘迭代失败,返回’); return; end end x=x1;

算例13:用Jacobi迭代法求解方程组:

??4x1?x2?x3?x4?1?x?4x?x?x?1?1234 ?

?x1?x2?4x3?x4?1??x1?x2?x3?4x4?1其精确解为x=[-1,-1,-1,-1]’.

解:令A=[-4,1,1,1;1,-4,1,1;1,1,-4,1;1,1,1,-4]; b=[1,1,1,1]’; x0=[0,0,0,0]’; 在命令窗口中输入:

[x,k]=Jacobimethod(A,b,x0,100,10^-5)

5.2 Gauss-Seidel迭代

用Gauss-Seidel迭代法求解线性方程组. MATLAB文件:(文件名:Gaussmethod.m) function [x,k]=Gaussmethod(A,b,x0,N,emg)

%A是线性方程组的左端矩阵 %b是右端向量 %x0是迭代初始值

%N表示迭代次数上限,若迭代次数大于N,则迭代失败 %emg表示控制精度

%用Gauss-Seidel迭代法求线性方程组A*x=b的解 %k表示迭代次数

%x表示用迭代法求得的线性方程组的近似解 n=length(A);

x1=zeros(n,1); x2=zeros(n,1); x1=x0;

r=max(abs(b-A*x1)); k=0;

while r>emg for i=1:n sum=0; for j=1:n

17

if j>i

sum=sum+A(i,j)*x1(j); elseif j

sum=sum+A(i,j)*x2(j); end end

x2(i)=(b(i)-sum)/A(i,i); end

r=max(abs(x2-x1)); x1=x2; k=K+1; if k>N

disp(‘迭代失败,返回’); return; end end x=x1;

算例14:用Gauss-Seidel迭代法求解方程组:

??4x1?x2?x3?x4?1?x?4x?x?x?1?1234 ?

?x1?x2?4x3?x4?1??x1?x2?x3?4x4?1其精确解为x=[-1,-1,-1,-1]’.

解:令A=[-4,1,1,1;1,-4,1,1;1,1,-4,1;1,1,1,-4]; b=[1,1,1,1]’; x0=[0,0,0,0]’; 在命令窗口中输入:

[x,k]=Gaussmethod(A,b,x0,100,10^-5)

5.3 超松弛迭代

用超松弛(SOR)迭代法求解线性方程组. MATLAB文件:(文件名:SORmethod.m) function [x,k]=SORmethod(A,b,x0,N,emg,w) %A是线性方程组的左端矩阵 %b是右端向量 %x0是迭代初始值

%N表示迭代次数上限,若迭代次数大于N,则迭代失败 %emg表示控制精度 %w表示松弛因子

%用SOR迭代法求线性方程组A*x=b的解 %k表示迭代次数

%x表示用迭代法求得的线性方程组的近似解 n=length(A);

18

x1=zeros(n,1); x2=zeros(n,1); x1=x0;

r=max(abs(b-A*x1)); k=0;

while r>emg for i=1:n sum=0; for j=1:n

if j>=i

sum=sum+A(i,j)*x1(j); elseif j

sum=sum+A(i,j)*x2(j); end end

x2(i)=x1(i)+w*(b(i)-sum)/A(i,i); end

r=max(abs(x2-x1)); x1=x2; k=K+1; if k>N

disp(‘迭代失败,返回’); return; end end x=x1;

算例15:用超松弛(SOR)迭代法求解方程组:

??4x1?x2?x3?x4?1?x?4x?x?x?1?1234 ?

?x1?x2?4x3?x4?1??x1?x2?x3?4x4?1其精确解为x=[-1,-1,-1,-1]’.

解:令A=[-4,1,1,1;1,-4,1,1;1,1,-4,1;1,1,1,-4]; b=[1,1,1,1]’; x0=[0,0,0,0]’; 在命令窗口中输入:

[x,k]=SORmethod(A,b,x0,100,10^-5,1)

当松弛因子为1时,超松弛迭代法等同于Gauss-Seidel迭代法.

5.4 对称超松弛迭代

用对称超松弛(SSOR)迭代法求解线性方程组. MATLAB文件:(文件名:SSORmethod.m) function [x,k]=SSORmethod(A,b,x0,N,emg,w) %A是线性方程组的左端矩阵

19

%b是右端向量 %x0是迭代初始值

%N表示迭代次数上限,若迭代次数大于N,则迭代失败 %emg表示控制精度 %w表示松弛因子

%用SSOR迭代法求线性方程组A*x=b的解 %k表示迭代次数

%x表示用迭代法求得的线性方程组的近似解 n=length(A);

x1=zeros(n,1); x2=zeros(n,1); x3=zeros(n,1); x1=x0;

r=max(abs(b-A*x1)); k=0;

while r>emg for i=1:n sum=0; for j=1:n if j>i

sum=sum+A(i,j)*x1(j); elseif j

sum=sum+A(i,j)*x2(j); end end

x2(i)=(1-w)*x1(i)+w*(b(i)-sum)/A(i,i); end

for i=n:-1:1 sum=0; for j=1:n if j>i

sum=sum+A(i,j)*x3(j); elseif j

sum=sum+A(i,j)*x2(j); end end

x3(i)=(1-w)*x2(i)+w*(b(i)-sum)/A(i,i); end

r=max(abs(x3-x1)); x1=x3; k=K+1; if k>N

disp(‘迭代失败,返回’); return; end end

20

  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

end r=max(abs(x2-x1)); x1=x2; k=K+1; if k>N disp(‘迭代失败,返回’); return; end end x=x1; 算例13:用Jacobi迭代法求解方程组: ??4x1?x2?x3?x4?1?x?4x?x?x?1?1234 ? ?x1?x2?4x3?x4?1??x1?x2?x3?4x4?1其精确解为x=[-1,-1,-1,-1]’. 解:令A=[-4,1,1,1;1,-4,1,1;1,1,-4,1;1,1,1,-4]; b=[1,1,1,1]’; x0=[0,0,0,0]’; 在命令窗口中输入: [

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com