Python 2.7 用辛方法求解一对非线性微分方程

Python 2.7 用辛方法求解一对非线性微分方程,python-2.7,wolfram-mathematica,sympy,nonlinear-functions,Python 2.7,Wolfram Mathematica,Sympy,Nonlinear Functions,我有一个两个耦合的非线性微分方程组 为此,我编写了以下代码,以使用Symphy获取两个函数的值: from sympy import * t = symbols('t') c, b, B, alp, mu = symbols('c b B alp mu', integer=True) f, g = symbols('f g', cls=Function) print(solve([Eq(f(t).diff(t)+c*f(t)+0.5*B*f(t)**2-b*g(t), 0), Eq(g(t).

我有一个两个耦合的非线性微分方程组

为此,我编写了以下代码,以使用Symphy获取两个函数的值:

from sympy import *
t = symbols('t')
c, b, B, alp, mu = symbols('c b B alp mu', integer=True)
f, g = symbols('f g', cls=Function)
print(solve([Eq(f(t).diff(t)+c*f(t)+0.5*B*f(t)**2-b*g(t), 0), Eq(g(t).diff(t)+b*g(t)-c*f(t), (1-alp)*mu)], [f(t),g(t)]))
然而,我得到的结果仍然是导数的形式,不能用于我的目的。我也尝试了Mathematica,但它一直无限期地运行,没有结果。
有人能用Symphy或Mathematica为这样一个系统提出一个解决方案吗?

你可以用Mathematica用
NDSolve
为你提供一个数值解,非常容易地解决你的系统。但为此,需要指定参数的数值和两个初始条件。在这里,我选择随机的

  ClearAll["Gobal"]
Eq1 = f'[t] + c1*f[t] + 0.5*B1*f[t]^2 - b1*g[t] == 0;
Eq2 = g'[t] + b1*g[t] - c1*f[t] == (1 - alp)*mu;
ibcs = {f[0] == 1, g[0] == 0};
sys = Join[{Eq1, Eq2}, ibcs];
B1 = 1; b1 = 1; c1 = 1; alp = 1; mu = 1;
sol1 = NDSolve[sys, {f[t], g[t]}, {t, 0, 10}];
Plot[{f[t], g[t]} /. sol1, {t, 0, 10}]

您可以使用ParameterCndSolve允许以后决定任意数量的参数。然后使用操纵进行探索。下面是示例代码:

{fx, gx} = Block[ {f, g, c, \[Beta], b, \[Alpha], \[Mu], f0, g0, tmax},
   {f, g} /. ParametricNDSolve[ {
      f'[t] + c f[t] + 0.5 \[Beta] f[t]^2 - b g[t] == 0,
      g'[t] + b g[t] - c f[t] - (1 - \[Alpha]) \[Mu] == 0,
      f[0] == f0, g[0] == g0
      }, {f, g}, {t, tmax}, {c, \[Beta], b, \[Alpha], \[Mu], f0, g0, 
      tmax} ]
   ];
Manipulate[
 ParametricPlot[ {fx[c, \[Beta], b, \[Alpha], \[Mu], f0, g0, 2^
     ln2tmax][t], 
   gx[c, \[Beta], b, \[Alpha], \[Mu], f0, g0, 2^ln2tmax][t]},
  {t, 0, 2^ln2tmax} ],
 {{c, 1}, -1, 1, 0.05},
 {{\[Beta], 1}, -1, 1, 0.05},
 {{b, 1}, -1, 1, 0.05},
 {{\[Alpha], 1}, -1, 1, 0.05},
 {{\[Mu], 1}, -1, 1, 0.05},
 Delimiter,
 {{f0, 1}, -1, 1, 0.05},
 {{g0, 1}, -1, 1, 0.05},
 Delimiter,
 {{ln2tmax, 0}, -3, 10, 0.5}
 ]

你能提供你的ode的数学格式以及其他信息吗?提供你的Mathematica代码。添加方程式。我现在没有Mathematica的资料,所以无法提供。谢谢,但有可能以隐式分析方程的形式而不是绘图的形式获得输出吗?@Ashish我无法生成这个非线性耦合系统的解析解。到目前为止,这里也是如此。我添加了Mathematica实现,并评论道:“Ashish为什么不使用数值解?因为它是分析方程结果的一部分,必须将其与数值解进行比较。”。