Matlab用简单迭代法求f(x)=x^3-x-1

Matlab用简单迭代法求f(x)=x^3-x-1,第1张

牛顿迭代法在数值分析中最简单迭代法的一种。

牛顿迭代法的迭代格式为

Xk+1=Xk—f(Xk)/f'(Xk)

根据牛顿迭代法的迭代格式,用matlab语言编程,可以求得

x = 1.32471795724475

其实现代码如下。

函数,四阶经典的龙格-库塔函数:

function [x,y]=Classical_RK4(odefun,xspan,y0,h,varargin)

% 经典Runge-Kutta法求解常微分方程

% 输入参数:

%      ---odefun:微分方程的函数描述

%      ---xspan:求解区间[x0,xn]

%      ---y0:初始条件

%      ---h:迭代步长

%      ---p1,p2,…:odefun函数的附加参数

% 输出参数:

%      ---x:返回的节点,即x=xspan(1):h:xspan(2)

%      ---y:微分方程的数值解

x=xspan(1):h:xspan(2)

y(1)=y0

for k=1:length(x)-1

  K1=feval(odefun,x(k),y(k),varargin{:})

  K2=feval(odefun,x(k)+h/2,y(k)+h/2*K1,varargin{:})

  K3=feval(odefun,x(k)+h/2,y(k)+h/2*K2,varargin{:})

  K4=feval(odefun,x(k)+h,y(k)+h*K3,varargin{:})

  y(k+1)=y(k)+h/6*(K1+2*K2+2*K3+K4)

end

x=x'y=y'

2.主函数:

>>f=@(t,y)8-3*y

>>xspan=[0 4]

>>h=0.2

>>y0=2

>>[t,y]=Classical_RK4(f,xspan,y0,h)

t =

       0

  0.2000

  0.4000

  0.6000

  0.8000

  1.0000

  1.2000

  1.4000

  1.6000

  1.8000

  2.0000

  2.2000

  2.4000

  2.6000

  2.8000

  3.0000

  3.2000

  3.4000

  3.6000

  3.8000

  4.0000

y =

  2.0000

  2.3004

  2.4654

  2.5561

  2.6059

  2.6333

  2.6483

  2.6566

  2.6611

  2.6636

  2.6650

  2.6657

  2.6662

  2.6664

  2.6665

  2.6666

  2.6666

  2.6666

  2.6667

  2.6667

  2.6667


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7830528.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-10
下一篇2023-04-10

发表评论

登录后才能评论

评论列表(0条)

    保存