设有方程x^5+x-1=0,用迭代格式x=(1-&)x-&(1-x^5),选择&值进行迭代,观察收敛速度,分析实验结果
clear
clc
close all
x=0.5; % 初始值
esp=1e-9; % 迭代终止条件
N=1000; % 最大迭代次数
y=zeros(N, 1); % 暂存x变量的空间
for a = 0.01:0.01:0.5
for t=1:N
x=fun(x,a);
y(t)=x;
if t>1
if abs(y(t)-y(t-1))<esp
fprintf('a=%f,需要迭代 %d 次, x=%f\n', a,t, x);
break;
end
end
end
if t==N&&abs(y(t)-y(t-1))>esp
fprintf('a=%f,迭代了%d次还没收敛到%10.9f的精度, x=%f\n', a,t,esp,x);
end
end
function x=fun(x,a)
x=(1-a)*x+a*(1-x.^5); % x的迭代函数
end