[PYTHON] Bewegungsgleichung mit Sympy

Bewegungsgleichung mit Sympy

Es scheint, dass Sympy, eine mathematische Formelverarbeitungsbibliothek von Python, Bewegungsgleichungen verarbeiten kann, die in der Physik vorkommen, daher würde ich es gerne versuchen. Dieses Mal werde ich ein Skript schreiben, um die Bewegungsgleichung des Masse-Feder-Dämpfer-Systems abzuleiten, das sich auch in pydy_example auf der Referenzstelle befindet. Angenommen, Sie haben ein Massenfederdämpfersystem, wie in der Abbildung gezeigt. Wenn Sie eine normale Bewegungsgleichung formulieren, lautet diese wie folgt. mass_spring_damper.png Bewegungsgleichung

{\bf M}\dot{{\bf x}} = {\bf f}({\bf x})

Hier

{\bf x} = [{\it x}, \dot{{\it x}}]^T \\
{\bf M} = \begin{bmatrix} 1 & 0 \\ 0 & m \end{bmatrix} \\
{\bf f}({\bf x}) = \begin{bmatrix} \dot{x} \\ -k x - c \dot{x} + m g + f \end{bmatrix}

Nehme an, dass Als nächstes kommt das Skript. Wir verwenden ein Modul namens sympy.physics.mechanics. Ich verwende die Kane-Methode, um eine kinetische Gleichung zu formulieren, bin mir aber nicht sicher. Es scheint einen Weg zu geben, dies mit der Lagrange-Methode zu lösen.

mass_spring_dumper.py


#!/usr/bin/python
#coding:utf-8
import sympy as sym
import sympy.physics.mechanics as me

x, v = me.dynamicsymbols('x v')
m, c, k, g, t, f = sym.symbols('m c k g t f')

#Koordinatensystem erstellen
ceiling = me.ReferenceFrame('C')

o = me.Point('o') #Deckenpunkt
p = me.Point('p') #Qualitätspunkt
o.set_vel(ceiling, 0)
p.set_pos(o, x * ceiling.x)
p.set_vel(ceiling, v * ceiling.x)

#Berechnen Sie die externe Kraft, die auf den Qualitätspunkt ausgeübt wird
damping = -c * p.vel(ceiling) #Dämpfung
stiffness = -k * p.pos_from(o) #Frühling
gravity = m * g * ceiling.x #Schwere
exf = f * ceiling.x #Andere äußere Kräfte

forces = damping + stiffness + gravity + exf
print forces

mass = me.Particle('mass', p, m)
kane = me.KanesMethod(ceiling, q_ind=[x], u_ind=[v], kd_eqs=[v - x.diff(t)])
kane.kanes_equations([(p, forces)], [mass])
M = kane.mass_matrix_full
f = kane.forcing_full
print M
print f
print M.inv() * f

Die Ausgabe sieht folgendermaßen aus:

(-c*v + f + g*m - k*x)*C.x
Matrix([[1, 0], [0, m]])
Matrix([[v(t)], [-c*v(t) + f + g*m - k*x(t)]])
Matrix([[v(t)], [(-c*v(t) + f + g*m - k*x(t))/m]])

Wenn Sie lernen, wie man es benutzt, wird es ein sehr mächtiges Werkzeug sein. Es gibt Ahorn und Mathematica gegen eine Gebühr, aber es ist teuer, solche Software kostenlos zu verwenden, daher bin ich dankbar, dass solche Software kostenlos verwendet werden kann.

Referenzseite

Sympy-Dokumentation http://docs.sympy.org/latest/index.html pydy examples https://github.com/PythonDynamics/pydy_examples

Recommended Posts

Bewegungsgleichung mit Sympy
Lassen Sie Python die Bewegungsgleichung von Euler Lagrange berechnen
Doppelte Pendelbewegungsgleichung in Python
Numpy verlassen? !! Unterscheiden Sie die Matrix teilweise mit Sympy
Lösen von Bewegungsgleichungen in Python (odeint)
Überlagern Sie Diagramme mit Sympy
Mach dir mit Sympy keine Sorgen
[Python] Löse Gleichungen mit Sympy
Animation der Diffusionsgleichung mit NumPy
Parallele Verarbeitung mit Parallel von Scikit-Learn
Vorhersage des Nikkei-Durchschnitts mit Pytorch 2
Erinnerungen an den Kampf mit Selen
Vorhersage des Nikkei-Durchschnitts mit Pytorch
Finden Sie die numerische Lösung der gewöhnlichen Differentialgleichung zweiter Ordnung mit scipy
Fehlerfreie Berechnung mit Golangs big.Float
Rastersuche von Hyperparametern mit Scikit-learn
Beurteilung von Feiertagen einschließlich Feiertagen mit Bash
Spielen Sie mit Poancare-Serien und SymPy
Schreiben der C-Sprache mit Sympy (Metaprogrammierung)
Erste Schritte mit Python Grundlagen von Python
Frei von der harten Codierung von Funktionen mit SymPy
Lebensspiel mit Python! (Conways Spiel des Lebens)
Vorhersage des Nikkei-Durchschnitts mit Pytorch ~ Makuma ~
Automatisierung von Remote-Operationen mit Fabric
10 Funktionen von "Sprache mit Batterie" Python
Vorhersage der Sinuswelle mit Keras
4. Nacht der Schleife mit für
Grundlagen zum Berühren von MongoDB mit MongoEngine
Erkennt Personen mit dem menschlichen Sensormodul
Implementierung der Dyxtra-Methode durch Python
Mehrfachintegration mit Python und Sympy
Koexistenz von Python2 und 3 mit CircleCI (1.0)
Plotten Anwenden von Diagrammen mit Schiebereglern
Grundlegendes Studium von OpenCV mit Python
4/22 Vorhersage der Sinuswelle mit Keras