贡献者: ACertainUser
不动点迭代法也是一种求解方程(或函数零点)$f(x)=0$ 的经典方法。
为了使用不动点迭代,先得改写方程的形式:
不动点迭代的迭代公式是
以下的 Matlab 代码粗糙地实现了不动点迭代,同时做出了过程的 Cobweb 示意图:
clc
clear
f = @(x) 0.2*x.^2;
x(1) = 4;
hold on
axis equal
for i=1:100
if i~=1
x(i) = f(x(i-1));
end
line([x(i) x(i)],[0 f(x(i))],'Color','r');
scatter(x(i),0);
text(x(i),-0.1,[int2str(i)],'fontsize',12);
if i~=1
line([x(i - 1) x(i)],[f(x(i-1)) f(x(i-1))],'Color','b');
line([x(i) x(i)],[f(x(i - 1)) f(x(i))],'Color','b');
end
if i~=1 && abs(x(i) - x(i-1)) < 0.01
break;
end
end
if x(i) < x(1)
_x = x(i)-0.5:0.01:x(1)+0.5;
else
_x = x(1)-0.5:0.01:x(i)+0.5;
end
_y = f(_x);
plot(_x, _y,'k');
plot(_x, _x,'k');
1. ^ 参考你的数值计算课本