Matlab题做一下,需要快一点

设有方程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

img