ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2020-10-17 20:03:09  阅读:1228  来源: 互联网

标签:方程 迭代 一元函数 凯鲁嘎吉 MATLAB 不动点 迭代法


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

标签:方程,迭代,一元函数,凯鲁嘎吉,MATLAB,不动点,迭代法
来源: https://www.cnblogs.com/kailugaji/p/13832330.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有