1

亲爱的,我是一个关于动态系统项目的matlab新用户。我有两个方程,其中 T0、epsilon (E)、a 是固定的。我想看看分别在 (0, 4) 和 (0, 100) 的范围内选择 b 和 c 时的噬菌体图。在图中,区域 I 表示不稳定的极限环,区域 II 表示单稳态,区域 II 表示双稳态。

事实上,我认为我可以通过首先在 b、c 噬菌体中任意选择一个点,然后计算 x1 和 x2 的对应值,使 ODE 的左侧部分等于 0 来绘制图形。然后计算右边部分的雅可比矩阵,判断该矩阵是否为egenvalue。如果大于零,则系统不稳定。

结果应该如下图所示。

但我真的不知道如何确定图形分界线上的点。请提出你有用的建议。提前致谢。

PS: T0 = 0.1,ε = 0.1 a = 0.1 0 <= b <= 4.0;0 <= c <= 100;

PP.S:图表和方程摘自http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2527901/(第二部分:生化振荡网络的景观和通量)

等式一

等式二

噬菌体图

我当前的解决方案应该如下,但我不能 cat J. %Condition:

%(1) F1 = F2 = 0 (2) 雅可比 = 0

%目标:

%获得b和c的非线性方程;

a = 0.1; ε = 0.1; T0 = 5.0;

%使用符号计算

syms xybc

F = [((epslion ^ 2 + x ^ 2 ) / ( 1 + x ^ 2) ) / (1 + y) - a * x; b / T0 - y / ( T0 * (1 + c * x ^ 2) )]; V = [x, y];

%计算雅可比矩阵

J = 雅可比 (F, V);

%ODE 的符号解:

%分别写方程

S1 = dsolve ('Dx = ((epslion ^ 2 + x ^ 2 ) / ( 1 + x ^ 2) ) / (1 + y) - a * x'); S2 = dsolve ('Dy = b / T0 - y / ( T0 * (1 + c * x ^ 2) )');

BC_cal = [J(1) J(2) S1 S2]; *%%%错误,不能加入S1,因为S1 = solve(sum)****,不能计算?*

fsolve(BC_cal);

4

1 回答 1

0

这是一个棘手的问题,我想您需要决定如何解决它(蛮力与技巧):严格数字或代数+数字。对于前者,Matlab 就可以了,后者需要一些 ode 的技巧。

我不认为看雅可比是要走的路,尽管我可能是错的。以下是我的一些想法:

案例1:在matlab中使用带有扩展向量输入的ode求解器:[x1 dx1/dt x2 dx2/dt]并在for(或parfor)循环中改变b和c。当 dx1/dt 或 dx2/dt -> 0 为 t ->oo 时,变量出现稳定性。请参阅此问题的第二个解决方案以了解如何执行此操作。最终,您将对解决方案有一个很好的近似,但您会遇到大量数据。

情况 2:将两个方程重写为每个方程只有一个(x1 或 x2)变量。这不是太难,但由此产生的微分方程会像地狱一样丑陋。然后,您可以尝试用数值方法求解这些方程(我怀疑mathematica 应该能够做到这一点),从而确定 a、b 和 c 如何直接影响您的解决方案

顺便说一句,我认为正确的术语是

于 2011-05-13T04:24:26.427 回答