编写不动点迭代法的M文件staticIterate.m如下:
function s=staticIterate(x,eps)
%不动点迭代法求非线性方程组
%x为迭代初值,eps为允许误差值
if nargin==1
eps=1.0e-6;
elseif nargin<1
error
return
end
xx=fx(x);%第一次迭代
while norm(xx-x)>=eps%循环迭代
x=xx;
xx=fx(x);
end
s=xx;
return
例:x1.^2-10x1+x2.^2+8=0
x1*x2.^2+x1-10*x2+8=0
取迭代公式:x1(k+1)=0.1(x1(k).^2+x2(k).^2+8)
x2(k+1)=0.1(x1(k)*x2(k).^2+x1(k)+8)
用MATLAB实现,需要首先编写上述非线性方程组的M文件fx.m.
function y=fx(x)
y(1)=0.1*(x(1)*x(1)+x(2)*x(2)+8);
y(2)=0.1*(x(1)*x(2)*x(2)+x(1)+8);
y=[y(1) y(2)];
staticIterate([0 0])
评论0