作业帮 > 综合 > 作业

谁知道这个数值分析题的matlab程序,感激不尽!

来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/06/30 11:18:55
谁知道这个数值分析题的matlab程序,感激不尽!
用四阶经典的龙格-库塔方法求初值问题y‘=8-3y ,y(0)=2 ,试取步长h=0.2计算y(0.4)的近似值,要求小数点保留4位数字.在线等,谢谢.
我需要在matlab里运行,谢谢,我还有180财富值,可以都给你
谁知道这个数值分析题的matlab程序,感激不尽!
子函数,四阶经典的龙格-库塔函数:

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