赞
踩
Jacobi迭代法是常见的几种迭代法之一,迭代格式如下图所示:(图片来自CHD的ztl老师的PPT)(具体内容详见《数值分析原理》)
该例子使用matlab的命令文件格式,命名为jacobi.m。
举例:设有方程组
取初始向量为x(0)=(-3,1,1)(T),用Jacobi方法求解,要求||x(k+1)-x(k)||小于等于10……(-3)。
% 题目信息 % A为线性方程组的系数矩阵 A=[5 2 1;-1 4 2;2 -3 10]; % b为常系数 x为初始向量 b=[-12;20;3]; x=[-3;1;1]; % epslion为误差值 epslion=0.001; % N为自己设置的迭代次数 N=20; % 公式 L=tril(A,-1); %L为A的单位下三角矩阵 D=diag(diag(A)); %D为A的对角矩阵 U=triu(A,1); %U为A的上三角矩阵 B=-D\(L+U); %B为迭代矩阵 g=D\b; error=1; n=0; for i=1:N while error>epslion && n<N y=x; x=B*x+g; error=norm(y-x,inf); %可以使用任何范数,此处使用无穷范数(结果是一样的) if error>epslion n=n+1; fprintf('第%d次jacobi迭代结果为:',n) disp(x); fprintf('第%d次迭代结果的误差为:\n',n); disp(error) break end if error<=epslion n=n+1; fprintf('第%d次jacobi迭代结果为:',n) disp(x); fprintf('第%d次迭代结果的误差为:\n',n); disp(error); fprintf('该方程组的jacobi迭代法的最小迭代次数为:') disp(n); break end end end
执行结果:
>> jacobi 第1次jacobi迭代结果为: -3.0000 3.7500 1.2000 第1次迭代结果的误差为: 2.7500 第2次jacobi迭代结果为: -4.1400 3.6500 2.0250 第2次迭代结果的误差为: 1.1400 第3次jacobi迭代结果为: -4.2650 2.9525 2.2230 第3次迭代结果的误差为: 0.6975 第4次jacobi迭代结果为: -4.0256 2.8223 2.0387 第4次迭代结果的误差为: 0.2394 第5次jacobi迭代结果为: -3.9367 2.9742 1.9518 第5次迭代结果的误差为: 0.1520 第6次jacobi迭代结果为: -3.9800 3.0399 1.9796 第6次迭代结果的误差为: 0.0657 第7次jacobi迭代结果为: -4.0119 3.0152 2.0080 第7次迭代结果的误差为: 0.0318 第8次jacobi迭代结果为: -4.0077 2.9930 2.0069 第8次迭代结果的误差为: 0.0222 第9次jacobi迭代结果为: -3.9986 2.9946 1.9994 第9次迭代结果的误差为: 0.0091 第10次jacobi迭代结果为: -3.9977 3.0006 1.9981 第10次迭代结果的误差为: 0.0060 第11次jacobi迭代结果为: -3.9999 3.0015 1.9997 第11次迭代结果的误差为: 0.0021 第12次jacobi迭代结果为: -4.0006 3.0002 2.0004 第12次迭代结果的误差为: 0.0014 第13次jacobi迭代结果为: -4.0002 2.9996 2.0002 第13次迭代结果的误差为: 5.1691e-04 该方程组的jacobi迭代法的最小迭代次数为: 13
(内容为自己的尝试,若有错漏或改进方法请多多指正啦~)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。