Ode方程组

3次查看(最近30天)
" Vossoughian 2020年4月13日
评论道: darova 2020年4月17日
你好,
我试着用龙格库塔来解一个方程组,我做了一个关于RK2(f,h,x0,y0,xfinal)的函数,试着用指定的IC来解如下所示的方程组。有人可以帮助修复代码,因为我得到错误和代码不工作。
清晰的所有
clc
β= 1/3;
γ= 1/7;
信谊R S我
N = S +我+ R;
ode1 = -(β*我* S) / N
ode2 = -(β*我* S) / N-gamma *我
ode3 =γ*我
常微分方程= [ode1、ode2 ode3]
j =常微分方程
RK2法(j, 0.2, 0 8 e6, 7)
结束
函数(x, y) = RK2法(f、h、x0, y0, xfinal)
f = matlabFunction (f);
流('\n x y ');
o = 1;
x0 < = xn
流(' \ n % 4.3 f % 4.3 f ', x0, y0);x和y的%值
xs (o) = x0;
y (o) = y0;
k1 = h * f (x0, y0);
x1 = x0 + h;
k2 = h * f (x1, y0 + k1);
日元= y0 + (k1 + k2) / 2;
x0 = x1;
y0 = y₁;
o = o + 1;
结束
结束
1评论
darova
darova 2020年4月17日
我建议你试着解决使用问题 欧拉 方法首先
是这样的:
%常数I N
ds = @(s) -beta*I*s/N;
dt = 0.1;
s = 0.1;
i = 2:10 0
S (i+1) = S (i) + dt*ds(S (i));
结束
情节(s)

登录评论。

答案(1)

大师莫汉蒂
大师莫汉蒂 2020年4月16日
我知道你正在尝试用RK迭代来解决ode系统。错误发生在迭代中,原因如下:-
  1. 在你的' RK2 '函数中没有'的定义值xn”。
  2. 内部“RK2法”matlabFunction函数将符号表达式转换为函数句柄。第一个ODE变成了3变量函数。
  3. 在以下代码中
k1 = h * f (x0, y0);
代码将出错,因为函数句柄接受3个输入,而在语句中只有两个输入。
在解决了这些问题之后,代码应该可以工作了。
1评论
" Vossoughian 2020年4月16日
嘿,谢谢你的回复,你对如何解决这个问题有什么建议吗

登录评论。

社区寻宝

在MATLAB中心找到宝藏,并发现社区如何可以帮助你!

开始狩猎!