>python
Python 3.13.1 (main, Dec 4 2024, 18:05:56) [GCC 14.2.1 20240910] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from sympy import *
>>> x=symbols('x')
>>> y=Function('y')
>>> ode=Eq(4*y(x) + Derivative(y(x), (x, 2)),0)
>>> dsolve(ode , y(x),hint='2nd_power_series_ordinary')
Eq(y(x), C2*(2*x**4/3 - 2*x**2 + 1) + C1*x*(1 - 2*x**2/3) + O(x**6))
>>> dsolve(ode , y(x),ics={y(0):0,diff(y(x),x).subs(x,0):3},hint='2nd_power_series_ordinary')
Eq(y(x), C2*(2*x**4/3 - 2*x**2 + 1) + C1*x*(1 - 2*x**2/3) + O(x**6))
>>>
正确的结果应如下
ode:=4*y(x)+diff(y(x),x$2)=0;
dsolve(ode,y(x),'series');
collect(convert(%,polynom),[y(0),D(y)(0)])
给予
y(x) = (1 - 2*x^2 + 2/3*x^4)*y(0) + (x - 2/3*x^3 + 2/15*x^5)*D(y)(0)
在上述,y(0)和d(y)(0)(这是y'(0))基本上是Sympy所说的C1和C2。
现在,与IC:
dsolve([ode,y(0)=0,D(y)(0)=3],y(x),'series')
Gives
y(x) = 3*x - 2*x^3 + 2/5*x^5 + O(x^6)
您看,当iC被赋予IC时,解决方案中不应有C1和C2。
是否有解决方法(除了要解决C我本人以外)以使DSOLVE在没有C时返回解决方案时,没有C。
您看到的行为不是错误,而是Sympy dsolve中系列解决实现的已知限制。在当前实现中,当您使用系列提示(例如'2nd_power_series_ordinary')时,dsolde以任意常数(例如C1和C2)返回截断的功率序列,而无需自动使用提供的初始条件为其自动求解。在使用系列提示时,当前版本的DSOLVE当前版本的DSOLVE上没有一个内置的解决方法。如果需要直接应用IC,则需要进行后处理或使用其他方法。