Warum ignoriert sympy dSolve die Anfangsbedingungen mit Serienlösung?Python

Python-Programme
Anonymous
 Warum ignoriert sympy dSolve die Anfangsbedingungen mit Serienlösung?

Post by Anonymous »

Ich lerne sympy dSolve. Ich finde, dass es bei Verwendung von Hint = '2nd_power_Series_ORDINALE' die gleiche Lösung gibt, unabhängig davon, ob die Anfangsbedingungen angegeben sind oder nicht. < /P>
i.e. Es ersetzt das C1 und C2 nicht aus dem IC. p> mache ich etwas falsch oder ist diese Einschränkung von DSOLVE? < /p>

Code: Select all

>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))
>>>
< /code>
Das richtige Ergebnis sollte wie folgt sein < /p>
ode:=4*y(x)+diff(y(x),x$2)=0;
dsolve(ode,y(x),'series');
collect(convert(%,polynom),[y(0),D(y)(0)])
< /code>
, was < /p>
ergibt y(x) = (1 - 2*x^2 + 2/3*x^4)*y(0) + (x - 2/3*x^3 + 2/15*x^5)*D(y)(0)
Im obigen sind y (0) und d (y) (0) (was y '(0)) im Grunde das, was Sympy C1 und C2 nennt.
< Br /> jetzt mit IC: < /p>
dsolve([ode,y(0)=0,D(y)(0)=3],y(x),'series')
< /code>
Gibt < /p>
an y(x) = 3*x - 2*x^3 + 2/5*x^5 + O(x^6)
< /code>
Sie sehen, dass es in der Lösung kein C1 und C2 geben sollte, wenn IC Offenbar angegeben wird. < /p>
Gibt es eine Problemumgehung (außer zu müssen Lösen Sie für die C's selbst), damit DSOLVE die Lösung ohne die C's zurückgeben kann, wenn die Anfangsbedingungen gegeben werden?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post