研究线性方程组的jacobi和gauss-seidel迭代法,要求:对于给定的初始向量以及误差迭代要求 察是否收敛 5

A=[5,2,1;-1,4,2;2,-3,10],x0=[111]b=[-12,20,3]精度要求为1.0e-4... A=[5,2,1;-1,4,2;2,-3,10],x0=[111] b=[-12,20,3]精度要求为1.0e-4 展开
heyuancyy
2010-12-16 · TA获得超过143个赞
知道答主
回答量:27
采纳率:0%
帮助的人:38.8万
展开全部
①雅克比迭代法:
function [n,x]=jacobi(A,b,X,nm,w)
%用雅克比迭代法求解方程组Ax=b
%输入:A为方程组的系数矩阵,b为方程组右端的列向量,X为迭代初值构成的列向量,nm为最大迭代次数,w为误差精度
%输出:x为求得的方程组的解构成的列向量,n为迭代次数
n=1;
m=length(A);
D=diag(diag(A)); %令A=D-L-U,计算矩阵D
L=tril(-A)+D; %令A=D-L-U,计算矩阵L
U=triu(-A)+D; %令A=D-L-U,计算矩阵U
M=inv(D)*(L+U); %计算迭代矩阵
g=inv(D)*b; %计算迭代格式中的常数项
%下面是迭代过程
while n<=nm
x=M*X+g; %用迭代格式进行迭代
if norm(x-X,2)<w
disp('迭代次数为');n
disp('方程组的解为');x
return;
%上面:达到精度要求就结束程序,输出迭代次数和方程组的解
end
X=x;n=n+1;
end
%下面:如果达到最大迭代次数仍不收敛,输出警告语句及迭代的最终结果(并不是方程组的解)
disp('在最大迭代次数内不收敛!');
disp('最大迭代次数后的结果为');x
②高斯赛德尔迭代法:
function [n,x]=gaussseidel(A,b,X,nm,w)
%用高斯-赛德尔迭代法求解方程组Ax=b
%输入:A为方程组的系数矩阵,b为方程组右端的列向量,X为迭代初值构成的列向量,nm为最大迭代次数,w为误差精度
%输出:x为求得的方程组的解构成的列向量,n为迭代次数
n=1;
m=length(A);
I=eye(m); %生成m*m阶的单位矩阵
D=diag(diag(A)); %令A=D-L-U,计算矩阵D
L=tril(-A)+D; %令A=D-L-U,计算矩阵L
U=triu(-A)+D; %令A=D-L-U,计算矩阵U
M=inv(D-L)*U; %计算迭代矩阵
g=inv(I-inv(D)*L)*(inv(D)*b); %计算迭代格式中的常数项
%下面是迭代过程
while n<=nm
x=M*X+g; %用迭代格式进行迭代
if norm(x-X,2)<w
disp('迭代次数为');n
disp('方程组的解为');x
return;
%上面:达到精度要求就结束程序,输出迭代次数和方程组的解
end
X=x;n=n+1;
end
%下面:如果达到最大迭代次数仍不收敛,输出警告语句及迭代的最终结果(并不是方程组的解)
disp('在最大迭代次数内不收敛!');
disp('最大迭代次数后的结果为');x

上面是我上数值分析这门课时用matlab所编的程序,都运行过,没有错误,只要复制运行即可
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式