matlab实现正割法求根和Aitken加速方法

matlab实现正割法求根和Aitken加速方法_第1张图片

matlab实现正割法求根和Aitken加速方法_第2张图片

正割法求根代码:

zhengge.m

function zhengge(x0,x1,e)
    syms x;
    f(x)=exp(-x);
    K=0;
    while abs(x1-x0)>e
        fprintf('第%d次xk=%.6f迭代结果为:%6f\n',K,x0,f(x0));
        x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0));
        x0=x1;
        x1=x2;
        K=K+1;
    end
end
        
    

斯蒂芬森法求根代码:

function siDiFenSen(x0,e)
 syms x;
 y(x)=exp(-x);
 z(x)=exp(-(exp(-x)));
 K=0;
x1=x0-(y(x0)-x0)*(y(x0)-x0)/(z(x0)-2*y(x0)+x0);
fprintf('%.8f\n',x1);
 while (abs(x1-x0)>e) 
      fprintf('第%d次迭代,xk=%.8f,yk=%.8f,zk=%.8f\n',K,x0,y(x0),z(x0));
      x0=x1;
      x1=x0-(y(x0)-x0)*(y(x0)-x0)/(z(x0)-2*y(x0)+x0);
      K=K+1;
 end
end

程序结果:

matlab实现正割法求根和Aitken加速方法_第3张图片

matlab实现正割法求根和Aitken加速方法_第4张图片

matlab实现正割法求根和Aitken加速方法_第5张图片

实验总结:

正割法通过两个初始值一次迭代来求方程的根的近似解。求解的时间较长,结果不如牛顿法精确,但是简化了计算的复杂度。

斯蒂芬森加速法通过两次迭代,一次加速来求方程的近似解。求解过程较快,收敛速度快,结果较为精确。

你可能感兴趣的:(matlab计算方法的简单实现)