可以同情解决这个ODE(y')** 2 = y

时间:2018-06-16 07:21:25

标签: sympy

使用Python 3.6.5 | Anaconda,Inc。| (默认,2018年4月29日,16:14:56) Linux上的[GCC 7.2.0]

试着看看同情是否可以解决$ y'(x)^ 2 = y(x)$。一般的解决方案可以很容易地手工解决。但是,同情心给了[]解决方案。

我输错了什么?有没有让别人解决这个问题的伎俩?

>>> from sympy import *
>>> y = Function('y')
>>> x = symbols('x')
>>> dsolve( Eq( Derivative(y(x),x)**2 , y(x) ),  y(x))
    []

Maple提供了单一和一般的解决方案

ode:=( diff(y(x),x))^2=y(x);
dsolve( ode,y(x));

Mathematica graphics

Mathematica仅提供一般解决方案

ode=(y'[x])^2==y[x]
DSolve[ode,y[x],x]

Mathematica graphics

可以同情解决这个ODE吗?

1 个答案:

答案 0 :(得分:2)

SymPy中实现的方法专注于ODE,其中未知的最高衍生物本身出现,而不是某些函数内部。一旦ODE被重写为y'(x) = (+ or -) sqrt(y(x)),SymPy就会解决它。

>>> dsolve(Eq(Derivative(y(x), x), sqrt(y(x))), y(x))
Eq(y(x), C1**2/4 + C1*x/2 + x**2/4)
>>> dsolve(Eq(Derivative(y(x), x), -sqrt(y(x))), y(x))
Eq(y(x), C1**2/4 - C1*x/2 + x**2/4)

这种减少可以使用solve自动完成,从等式的原始形式开始:

rhs = solve(Eq(Derivative(y(x), x)**2, y(x)),  Derivative(y(x), x))
[dsolve(Eq(Derivative(y(x), x), r), y(x)) for r in rhs]