• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

MATLAB解非线性方程简单迭代及加速

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

通过实例验证加速对简单迭代的改进效果,注意到加速法使在简单迭代情况下不收敛的迭代方程也能收敛,这也是迭代法的特色哦。 

实例: f(x)=x^3+10*x-20 精确到6位小数

迭代方程:     φ(1  20/(x.^2+10)φ(2        x.^3+11*x-20φ(3        2-x.^3/10 

简单迭代:

%简单迭代法 use structure 
i=2;N=100;
x0=1.5;%设初始值
%f=inline(\'20/(x.^2+10)\');          %我到现在还没有找到如何把函数(迭代方程)以参数的形式输入程序的方法
f=inline(\'x.^3+11*x-20\');
%f=inline(\'2-x.^3/10\');
x1=f(x0);
S.result=[x0;x1];
while abs(x1-x0)>=1e-6
    x0=x1;
    x1=f(x0);
    if i>=N|abs(x1)>1e6                        %这样判断发散是不是有点儿笨啊?应该用abs(x1-x2)来判断
        warning(\'迭代次数过的,请调整迭代方程!\');
        break;
    else
        i=i+1;
        S.result(i)=x1;
    end
end
S.step=[(0:i-1)]\';
fprintf(\'The number of steps:\t%d\n\',i-1);
for j=1:i
    fprintf(\'%10d\',S.step(j));fprintf(\'\t\');
    fprintf(\'%10.7f\n\',S.result(j));
end

迭代结果: φ(1  20/(x.^2+10);15步φ(2        x.^3+11*x-20;46步φ(3        2-x.^3/10;不收敛 

加速:Steffensen方式(Aitken方式类似)

%Steffensen方法加速迭代 use structure 
i=2;x0=1.5;%设初始值
%f=inline(\'20/(x.^2+10)\');
%f=inline(\'2-x.^3/10\');
f=inline(\'x.^3+11*x-20\');
y=f(x0);
z=f(y);
x1=x0-(y-x0).^2/(z-2*y+x0);
S.result=[x0;x1];
while abs(x1-x0)>=1e-6
    x0=x1;
    y=f(x0);
    z=f(y);
    x1=x0-(y-x0).^2/(z-2*y+x0);
    i=i+1;
    S.result(i)=x1;
end
S.step=[(0:i-1)]\';
fprintf(\'The number of steps:\t%d\n\',i-1);
for j=1:i
    fprintf(\'%10d\',S.step(j));fprintf(\'\t\');
    fprintf(\'%10.7f\n\',S.result(j));
end

迭代结果: φ(1  20/(x.^2+10);3步φ(2        x.^3+11*x-20;3步φ(3        2-x.^3/10;5步

加速效果非常好。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
matlab练习程序(高阶常微分方程组数值解)发布时间:2022-07-18
下一篇:
vs2010+matlab求解线性方程组 - youthlion发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap