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

MATLAB实例:不动点迭代法求一元函数方程的根

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

MATLAB实例:不动点迭代法求一元函数方程的根

作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

    之前写过一篇博客:MATLAB用二分法、不动点迭代法及Newton迭代(切线)法求非线性方程的根 - 凯鲁嘎吉 - 博客园 ,后来发现这篇博客中的不动点迭代法程序有问题,实际上是用牛顿迭代法求解的。这里,重新写了不动点迭代法的MATLAB程序,并绘制出函数图,直观理解方程的根。

问题描述:

    求方程

$f(x)={{x}^{3}}-x-1=0$

    在${{x}_{0}}=1.5$附近的根${{x}^{*}}$

解:

    将上述方程改为如下形式:

$x=\sqrt[3]{x+1}$

    据此建立迭代公式

${{x}_{k+1}}=\sqrt[3]{{{x}_{k}}+1},\text{  }k=0,1,2,\cdots .$

MATLAB程序

clear
clc
% Author:凯鲁嘎吉 https://www.cnblogs.com/kailugaji/
% f(x)=x^3-x-1;
% x=(x+1)^(1/3);
x=1.5; % 初始值
esp=1e-6; % 迭代终止条件
N=100; % 最大迭代次数
y=zeros(N, 1); % 暂存x变量的空间
for t=1:N
    x=fun(x);
    y(t)=x;
    fprintf(\'第 %d 次, x=%f\n\', t, x);
    if t>1 
        if abs(y(t)-y(t-1))<esp
            break;
        end
    end
end

% 画出函数曲线
xx=0:0.01:3;
yy=xx.^3-xx-1;
figure(1)
plot(xx, real(yy));
hold on
z=0*ones(1, length(xx));
plot(xx, z, \'r\');
xlabel(\'x\');
ylabel(\'y\');
title(\'y=x^3-x-1\');
saveas(gcf,sprintf(\'不动点迭代法.jpg\'),\'bmp\'); 


function x=fun(x)
x=(x+1).^(1./3);  % x的迭代函数
end

结果

第 1 次, x=1.357209
第 2 次, x=1.330861
第 3 次, x=1.325884
第 4 次, x=1.324939
第 5 次, x=1.324760
第 6 次, x=1.324726
第 7 次, x=1.324719
第 8 次, x=1.324718
第 9 次, x=1.324718


鲜花

握手

雷人

路过

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

请发表评论

全部评论

专题导读
上一篇:
Delphi GDI对象之位图与调色板发布时间:2022-07-18
下一篇:
Delphi记事本TMemo发布时间: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