| 查看: 674 | 回复: 0 | ||
1312758691新虫 (小有名气)
|
[求助]
SOR迭代
|
|
方法一:建立了SOR.m的脚本文件,实现的是SOR迭代,程序语言如下: %SOR迭代 clear; clc; format long; i=1; n=6; H=hilb(n); X=ones(n,1); b=H*X; x0=zeros(n,1); w=1; D=diag(diag(H)); U=-triu(H,1); L=-tril(H,-1); B=(D-w*L)\((1-w)*D+w*U); f=(D-w*L)\b; x=B*x0+f Epsilon=norm(x-x0,inf); while(Epsilon>0.0001) i=i+1 x=B*x0+f Epsilon=norm(x-x0,inf); x0=x; end 方法二: 建立函数文件f_sor.m,程序如下: function [x,i]=f_sor(A,b,x0,e,w) %SOR迭代求解线性方程组H_n x=b,其中系数矩阵H_n为希尔伯特矩阵 %A系数矩阵 %b常数列向量 %x0初值列向量 %e收敛精度 %w松弛因子 format long; i=1; D=diag(diag(A)); U=-triu(A,1); L=-tril(A,-1); B=(D-w*L)\((1-w)*D+w*U); f=(D-w*L)\b; x=B*x0+f; Epsilon=norm(x-x0,inf); while(Epsilon>e) i=i+1; x=B*x0+f; Epsilon=norm(x-x0,inf); x0=x; end 然后建立脚本文件study1.m调用函数f_sor迭代求解,脚本文件程序如下: clear; clc; n=6; a=hilb(n); t=0.5*ones(n,1); e=0.0001; X=ones(n,1); b=a*X; w=1; [x,i]=f_sor(a,b,t,e,w) 问题:为什么两种方法迭代得到的解有出入?而且迭代的次数相差较大? 谢谢! |
» 猜你喜欢
博士读完未来一定会好吗
已经有24人回复
导师想让我从独立一作变成了共一第一
已经有9人回复
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有11人回复
读博
已经有4人回复
JMPT 期刊投稿流程
已经有4人回复
心脉受损
已经有5人回复
Springer期刊投稿求助
已经有4人回复
小论文投稿
已经有3人回复
申请2026年博士
已经有6人回复













回复此楼