使用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仅提供一般解决方案
ode=(y'[x])^2==y[x]
DSolve[ode,y[x],x]
可以同情解决这个ODE吗?
答案 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]