求大佬帮忙看一下这个MATLAB该如何实现?

 我来答
lhmhz
高粉答主

2019-12-03 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7264 获赞数:17010

向TA提问 私信TA
展开全部

经典R-K方法(龙格-库塔方法),主要用于求解常微分方程(组)的数值解。

求解过程:

1、自定义RK4(func,y0,h,a,b)的函数

2、自定义常微分方程func(x,y)的函数

3、利用for循环语句,步长分别为h=0.2、0.1、0.05时,求解y(4)的近似解。实现代码

x0=

h=[0.2 0.1 0.05];

for i=1:3

a=0;b=4;

[x,y] = RK4(@(x,y)func(x,y),x0,h(i),a,b);

if h(i)==0.2

disp('y(4)的近似解(h=0.2)')

str = [num2str(y(end))];

fprintf('%s\n',str);

end

if h(i)==0.1

disp('y(4)的近似解(h=0.1)')

str = [num2str(y(end))];

fprintf('%s\n',str);

end

if h(i)==0.05;

disp('y(4)的近似解(h=0.05)')

str = [num2str(y(end))];

fprintf('%s\n',str);

end

4、完善代码后运行可以得到如下结果。

黄徐升
2019-12-03 · TA获得超过3664个赞
知道大有可为答主
回答量:2602
采纳率:70%
帮助的人:727万
展开全部

y = 2;

h = 0.2;

f = @(x,y) 8-3*y;

for x = 0:h:4

    K1 = h*f(x,y);

    K2 = h*f(x+h/2,y+K1/2);

    K3 = h*f(x+h/2,y+K2/2);

    K4 = h*f(x+h,y+K3);

    y = y+(K1+2*K2+2*K3+K4)/6;

end

y

比如 h=0.2 的时候输出是 2.6667,其余的你改一下 h 就好了

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式