[Boost] odeint



  • Hallo ihr Lieben,

    ich habe eine Frage zum Beispiel des harmonischen Oszillators von odeint von Boost

    Ich nehme an, dass mit diesem γ\gamma die Gleichung für den harmonischen Oszillator wie folgt aussehen soll

    x¨=γx=f(t,x,x˙,x¨)\ddot{x} = -\gamma x = f(t,x,\dot{x},\ddot{x})

    Durch eine Variablensubstitution (y1=xy_1 = x und y2=x˙y_2 = \dot{x}) kann ich diese DGL 2. Ordnung in zwei DGLs 1. Ordnung rückführen:

    \begin{align} \dot{y}\_1 &= y\_2\\ \dot{y}_2 &= f(t,x,\dot{x},\ddot{x}) \end{align}

    Setze ich also alles ein, so kann ich dieses Gleichungssystem in Matrixform schreiben:

    \begin{align} \left(\begin{array}{c}\dot{x}\\\ddot{x}\end{array}\right)= \left(\begin{array}{cc}1&0\\0&-\gamma\end{array}\right) \left(\begin{array}{c}\dot{x}\\x\end{array}\right) \end{align}

    Also hätte ich intuitiv gesagt, dass in C++ übersetzt das System wie folgt beschrieben wird

    dxdt[0] = x[1]
    dxdt[1] = -gam*x[0]
    

    Im oben verlinkten Beispiel steht aber

    /* The rhs of x' = f(x) */
    void harmonic_oscillator( const state_type &x , state_type &dxdt , const double /* t */ )
    {
        dxdt[0] = x[1];
        dxdt[1] = -x[0] - gam*x[1];
    }
    

    Kann mir jemand erklären wo bzgl. dxdt[1] = ... mein Denkfehler liegt, denn das sieht im Beispiel von boost anders aus. 😕

    Gruß,
    -- Klaus.



  • Klaus82 schrieb:

    ich habe eine Frage zum Beispiel des harmonischen Oszillators von odeint von Boost

    Ich nehme an, dass mit diesem γ\gamma die Gleichung für den harmonischen Oszillator wie folgt aussehen soll

    x¨=γx=f(t,x,x˙,x¨)\ddot{x} = -\gamma x = f(t,x,\dot{x},\ddot{x})

    Warum? Du kannst das Modell doch von ihrer Implementation ablesen, wieso machst du auf eigene Faust irgendwelche Annahmen und wunderst dich dann, dass sie nicht passen? 😕



  • Ich habe eine Art Handbuch gefunden.

    Darin steht auf Seite 8, dass das Beispiel (auf der Homepage) ein Oszillator mit Reibung behandelt, d.h. (dimensionslos) x¨=xγx˙\ddot{x} = -x -\gamma\dot{x}.

    Dann ist mir natürlich einiges klarer.

    Auf der oben verlinkten Seite von Boost fehlt diese Angabe, deshalb bin ich von dem einfachsten Fall des freien ungedämpften harmonischen Oszillators ausgegangen.

    Gruß,
    -- Klaus.


Anmelden zum Antworten