| 查看: 681 | 回复: 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) 问题:为什么两种方法迭代得到的解有出入?而且迭代的次数相差较大? 谢谢! |
» 猜你喜欢
有没有人能给点建议
已经有5人回复
假如你的研究生提出不合理要求
已经有12人回复
实验室接单子
已经有7人回复
全日制(定向)博士
已经有5人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
对氯苯硼酸纯化
已经有3人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复












回复此楼