steffensen.m函数

function[x_star,index,it]=steffensen(phi,x,ep,it_max)

%斯特芬森加速迭代方法

% x为初始点

% ep为精度,当| x(k)-x(k-1) |

% it_max为最大迭代次数

% x_star为当迭代成功时,输出方程的根

% 当迭代失败时,输出最后的迭代值;

% index为指标变量,当index=1时,表明迭代成功

% it为迭代次数

if nargin<4 it_max=100;end

if nargin<3 ep=1e-5;end

index=0;k=1;

while k< it_max

x1=x;y=feval(phi,x);z=feval(phi,y);

x=x-(y-x)^2/(z-2*y+x);

if abs(x-x1)

index=1;break;

end

k=k+1;

end

x_star=x;it=k;

testSTE.m

phi=inline('x^3 -1');

[x_star,inedx,it] = steffensen(phi,1.5)

结果:

>> testSTE x_star =     1.3247 inedx =      1 it =      6 >>

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐