sympyのdsolve関数

5849 ワード

メモ


公式sympyライブラリのODEを翻訳
sympyで線形方程式を解くのに苦労したが、ネット上の資料が少なすぎて、翻訳してみたい.
その後、2つのブログがよく書かれていることに気づきました.転送ドア1、転送ドア2

User Functions


dsolve関数はこのuser functionsの範疇内に属する.
これらの関数はfrom sympy import*でグローバルネームスペースをインポートします.これらの関数(hint Functionsとは異なり)は、一般ユーザーのためにSympyを使用するだけです.

s y m p y . s o l v e r s . o d e . d s o l v e \color{#008b45}{sympy.solvers.ode.dsolve} sympy.solvers.ode.dsolve


( ∗ e q ∗ , ∗ f u n c = N o n e ∗ , h i n t = ′ d e f a u l t ′ , s i m p l i f y = T r u e , i c s = N o n e , x i = N o n e , ∗ e t a = N o n e ∗ , ∗ x 0 = 0 ∗ , ∗ n = 6 ∗ , k w a r g s )\color{#008b45}(*eq*, *func=None*, hint='default', simplify=True, ics=None, xi=None,\\*eta=None*, *x0=0*, *n=6*, kwargs) (∗eq∗,∗func=None∗,hint=′default′,simplify=True,ics=None,xi=None,∗eta=None∗,∗x0=0∗,∗n=6∗,kwargs)
任意の(支持される)常微分方程式と常微分方程式の方程式群を解くことができる.

単常微分方程式について


Usage


その方程式群の方程式の個数は1であると考えられます.
d s o l v e(e q,f(x),h i n t)color{#008 b 45}dsolve(eq,f(x),hint)dsolve(eq,f(x),hint)->方法hintを用いて常微分方程式群eqでf(x)を解く.

Details

  • eqそれはサポート可能な任意の常微分方程式であることができる.式は等式でも式でも0に等しいと仮定します.
  • f(x)その導関数は微分方程式を構成する.ほとんどの場合、私たちはそれを提供する必要はありません.それは自動的に算出されます(算出できないとエラーが発生します).
  • hint dsolveに使用させたい解法です.c l a s s i f y_を使用o d e ( e q , f ( x ) )\color{#008b45}{classify\_ode(eq, f(x))} classify_ode(eq,f(x))は、1つのODEのすべての使用可能な方法を得ることができる.デフォルトではc l a s s i f y_を使用します.o d e ( )\color{#008b45}{classify\_ode()} classify_ode().
  • simplifyは、o d e s i m p()color{#008 b 45}{odesimp()}odesimp()で簡略化することができる.詳細については、DocStringを参照してください.たとえば、このオプションをオフにするとfunc解の解や任意の定数の簡略化を無効にできます.このプロンプトと統合されます.このオプションをオンにすると、ソリューションにはODEの順序よりも多くの任意の定数が含まれる場合があります.
  • xi and etaは常微分方程式の無限小関数である.それらは微分方程式が変わらない点変換の李群の無限小である.ユーザーは無限小の値を指定できます.指定されていない場合、xiおよびetaは、i n f i n i t e s i m a l s()color{#008 b 45}{infinitesimals()}infinitesimals()を使用して、様々な啓発的なヘルプで計算されます.
  • icsは微分方程式の初期/境界条件セットである.これは、{f(x 0):x 1,f(x).d i f(x).s u b s(x,x 2):x 3}color{#0000 ff}{{f(x 0):x 1,f(x).diff(x).subs(x,x 2):x 3}{f(x 0):x 1,f(x).diff(x).subs(x,x 2):x 3}}{f(x 0):x 1,f(x).diff(x).subs(x,x 2):x 3}で与えられるべきである.べき乗級数解の場合、初期条件が指定されていない場合は、f(0)がc 0、べき乗級数解が0と仮定します.
  • x 0はその要求が解けた点である.
  • nは、解いた変数を要求する指数
  • を与える.

    Hints


    先跳び

    Tips

  • 未知の関数の導関数を宣言できます:
  • from sympy import Function,Derivative
    from sympy.abc import x    # x 
    f= Function("f")(x)   #f x 
    f_=Derivative(f,x)   #f_ f x 
    
  • test_ord .pyは、d s o l v e()color{#008 b 45}{dsolve()}dsolve()の使用方法の一連の例を見ることができる.
  • d s o l v e()color{#008 b 45}{dsolve()}dsolve()は常に等式クラスを返します(allまたはall_Integralの場合を除きます).可能であれば、解く関数を明示的に解く.そうでなければ、暗黙的な解を返します.任意の定数は、C 1、C 2等という符号である.
  • すべての解は数学的に等価であるため、ODEについては、いくつかのヒントが完全に同じ結果を返す可能性がある.しかし、通常、2つの異なるプロンプトは、同じソリューションを異なるフォーマットで返します.両者は等価であるべきだ.また、2つの異なる解における任意の定数の値が異なる場合があることに注意してください.1つの定数が他の定数を「吸収」する可能性があるからです.
  • 用h e l p(o d e.o d e)は、特定のプロンプトに関する詳細情報を取得できます.Integralのプロンプトの名前.

  • 常微分方程式のグループについて


    Usage


    d s o l v e(e q,f u n c)color{#008 b 45}{dsolve(eq,func)}dsolve(eq,func)->解は常にx(t),y(t),z(t)などからなる微分方程式群eqである.

    Details


    eqそれは任意に支持される常微分方程式のグループであってもよく、0に等しいと仮定する式であってもよい.
    funcはx(t)とy(t)を変数の関数とし,その部分導関数が常微分方程式の方程式群を構成する.自動的に検出されます(検出できない場合はエラーが発生します).

    Examples

    from sympy import Function, dsolve, Eq, Derivative, sin, cos, symbols
    from sympy.abc import x
    f=Function('f')
    ans=dsolve(Derivative(f(x),x,x)+9*f(x),f(x))
    print(ans)
    #Eq(f(x), C1*sin(3*x) + C2*cos(3*x))