我要同时解3个ODE。使用哪种方法?

1次观看(过去30天)
Dhiraj德斯穆克
Dhiraj德斯穆克 2021年9月6日
我要同时解3个ODE。应该用什么方法来解这些方程??我试图用ode45方法解决它,但我无法得到答案。
dx1/df = F(F, x1, x2, x3)]
dx2/df = F(F, x1, x2, x3)
dx3/df = F(F, x1, x2, x3)
F = [0.5 1]
X1 (0.5)=0.185, x2(0.5)= 0.285, x3(0.5)= 0.53
Gamma = 0.577;
xo1 = 0.185;xo2 = 0.285;xo3 = 0.53;
θ= 0.5;
q1 = 1;Q2 = 0.317;Q3 = 0.065;
F (x1, F) = ((q1) * (x1-gamma * (x1 * F - (xo1 * (1-theta))) / (F - (1-theta))) x1 * (x1-gamma * (x1 * F - (xo1 * (1-theta))) / (F - (1-theta)) + q2 * (x2-gamma * (x2 * F - (xo2 * (1-theta))) / (F - (1-theta))) +第三季度* (x3-gamma * (x3 * F - (xo3 * (1-theta))) / (F - (1-theta)))) * F) / (((x1-gamma * (x1 * F - (xo1 * (1-theta))) / (F - (1-theta))) + q2 * (x2-gamma * (x2 * F - (xo2 * (1-theta))) / (F - (1-theta))) +第三季度* (x3-gamma * (x3 * F - (xo3 * (1-theta))) / (F - (1-theta)))) * F);
F (x2, F) = ((q2) * (x2-gamma * (x2 * F - (xo2 * (1-theta))) / (F - (1-theta))) x2 * (x1-gamma * (x1 * F - (xo1 * (1-theta))) / (F - (1-theta)) + q2 * (x2-gamma * (x2 * F - (xo2 * (1-theta))) / (F - (1-theta))) +第三季度* (x3-gamma * (x3 * F - (xo3 * (1-theta))) / (F - (1-theta)))) * F) / (((x1-gamma * (x1 * F - (xo1 * (1-theta))) / (F - (1-theta))) + q2 * (x2-gamma * (x2 * F - (xo2 * (1-theta))) / (F - (1-theta))) +第三季度* (x3-gamma * (x3 * F - (xo3 * (1-theta))) / (F - (1-theta)))) * F);
F (x3, F) = ((q3) * (x3-gamma * (x3 * F - (xo3 * (1-theta))) / (F - (1-theta))) x3 * (x1-gamma * (x1 * F - (xo1 * (1-theta))) / (F - (1-theta)) + q2 * (x2-gamma * (x2 * F - (xo2 * (1-theta))) / (F - (1-theta))) +第三季度* (x3-gamma * (x3 * F - (xo3 * (1-theta))) / (F - (1-theta)))) * F) / (((x1-gamma * (x1 * F - (xo1 * (1-theta))) / (F - (1-theta))) + q2 * (x2-gamma * (x2 * F - (xo2 * (1-theta))) / (F - (1-theta))) +第三季度* (x3-gamma * (x3 * F - (xo3 * (1-theta))) / (F - (1-theta)))) * F);
3评论
Dhiraj德斯穆克
Dhiraj德斯穆克 2021年9月6日
我使用的代码:-
函数[dy] = countermulticompfcn(f,y)
Theta = 0.5;
Xo1 = 0.185;
Xo2 = 0.285;
Xo3 = 0.53;
Gamma = 0.577;
q1 = 1;
Q2 = 0.3543;
Q3 = 0.3249;
Dy = 0 (4,1)
dy (1) = ((q1) * (y(1)γ* (y (1) * f - (xo1 * (1-theta))) / (f - (1-theta))) - y (1) * (y(1)γ* (y (1) * f - (xo1 * (1-theta))) / (f - (1-theta)) + q2 * (y(2)γ* (y (2) * f - (xo2 * (1-theta))) / (f - (1-theta))) +第三季度* (y(3)γ* (y (3) * f - (xo3 * (1-theta))) / (f - (1-theta))))) / (((y(1)γ* (y (1) * f - (xo1 * (1-theta))) / (f - (1-theta))) + q2 * (y(2)γ* (y (2) * f - (xo2 * (1-theta))) / (f - (1-theta))) +第三季度* (y(3)γ* (y (3) * f - (xo3 * (1-theta))) / (f - (1-theta)))) * f)
dy (2) = ((q2) * (y(2)γ* (y (2) * f - (xo2 * (1-theta))) / (f - (1-theta))) - y (2) * (y(1)γ* (y (1) * f - (xo1 * (1-theta))) / (f - (1-theta)) + q2 * (y(2)γ* (y (2) * f - (xo2 * (1-theta))) / (f - (1-theta))) +第三季度* (y(3)γ* (y (3) * f - (xo3 * (1-theta))) / (f - (1-theta))))) / (((y(1)γ* (y (1) * f - (xo1 * (1-theta))) / (f - (1-theta))) + q2 * (y(2)γ* (y (2) * f - (xo2 * (1-theta))) / (f - (1-theta))) +第三季度* (y(3)γ* (y (3) * f - (xo3 * (1-theta))) / (f - (1-theta)))) * f)
dy (3) = ((q3) * (y(3)γ* (y (3) * f - (xo3 * (1-theta))) / (f - (1-theta))) - y (3) * (y(1)γ* (y (1) * f - (xo1 * (1-theta))) / (f - (1-theta)) + q2 * (y(2)γ* (y (2) * f - (xo2 * (1-theta))) / (f - (1-theta))) +第三季度* (y(3)γ* (y (3) * f - (xo3 * (1-theta))) / (f - (1-theta))))) / (((y(1)γ* (y (1) * f - (xo1 * (1-theta))) / (f - (1-theta))) + q2 * (y(2)γ* (y (2) * f - (xo2 * (1-theta))) / (f - (1-theta))) +第三季度* (y(3)γ* (y (3) * f - (xo3 * (1-theta))) / (f - (1-theta)))) * f)
结束
解决:
清晰的所有
指数= 1:4
myprompt2 = ['输入Y的初始值:('num2str(指数)的):];
Initialval (index) = input(myprompt2);
结束
低=输入(“进入整合下限”);
Upper = input(“进入集成的上限”);
[F,y] = ode45(@countermulticompfcn,[lower - upper],initialval)
情节(F, y)
持有

登录评论。

接受的答案

保罗
保罗 2021年9月6日
这条线:
Dy = 0 (4,1);
需要替换为:
Dy = 0 (3,1);
在这之后,请注意dy(1)的方程在f = 0.5时计算为NaN,在f = 0时计算为-Inf(我只研究了0到1之间的问题)。在原始问题中,它指出ode45的tspan输入是[0.5 1]。这就有问题了因为dy在f = 0.5处的初始值是NaN这就破坏了整个解。我从[0.51 1]运行,得到了一个非nan结果。在后续注释中,用户输入tspan限制。如果这些限制导致解算器达到f = 0或f = 0.5,那么就有问题了。所以我想真正的问题是如果dy的方程中有这些奇点如果求解者要通过它们来积分的话应该如何处理它们。
1评论
Dhiraj德斯穆克
Dhiraj德斯穆克 2021年9月7日
非常感谢你,保罗。问题解决了。你的建议真有用。

登录评论。

更多答案(1)

史蒂文的主
史蒂文的主 2021年9月6日
本文档页 包括两个示例,其中第二个示例可以作为您的代码求解微分方程组的模型。

下载188bet金宝搏

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!