微分方程:
α'(T)= S(β-βα+α-Qα^ 2)
β'(T)=(S ^ -1)( - β-αβ+γ)
γ'(T)= W(α-γ)
初始值
α(0)= 30.00
β(0)= 1.000
γ(0)= 30.00
计算
我想在使用值s = 1时从t_0 = 0到t = 10解决问题, q = 1且w = 0.1610
我不知道如何为ODE编写函数,非常感谢帮助!
答案 0 :(得分:3)
我通常不习惯解决别人的家庭作业,但今天是我的幸运日。
所以,你有一个耦合常微分方程组:
α'(t)= s(β-α(β+ 1)-qα²)
β'(t)=( - β-αβ+γ)/ s
γ'(t)= w(α-γ)
你要解决
y = [α(t)β(t)γ(t)]
0 <&lt; t&lt; 10,s = 1,q = 1,w = 0.1610。在matlab中做到这一点的方法是定义一个计算导数的函数([α'(t)β'(t)γ'(t)]),然后在一个ODE求解器中抛出它({{1}是一个很好的第一个赌注):
ode45
这将输出
s = 1;
q = 1;
w = 0.1610;
% Define y(t) = [α(t) β(t) γ(t)] = [y(1) y(2) y(3)]:
deriv = @(t,y) [...
s * (y(2) - y(1)*(y(2)+1) - q*y(1)^2) % α'(t)
(-y(2) - y(1)*y(2) + y(3))/s % β'(t)
w * (y(1)-y(3)) % γ'(t)
];
% initial value
y0 = [30 1 10];
% time span to integrate over
tspan = [0 10];
% solve ODE numerically
[t, y] = ode45(deriv, tspan, y0)
您可以这样绘制所有这些:
y =
30.0000 1.0000 10.0000
28.5635 0.9689 10.0049 % numerical solutions at times t
27.2558 0.9413 10.0094
26.0603 0.9166 10.0136
... ... ...
= α(t) = β(t) = γ(t)
t =
0
0.0016
0.0031 % corresponding times
0.0047
...
导致这个数字: