Ic habe diese Frage auch schon im octave-forum gestellt, aber da dort niemand geantwortet hat verschiebe ich sie mal hier hin.
Ich schreibe zur Zeit Facharbeit in Physik.
Ich bin gerade beim Berechnen eines Trebuchets
Dabei wird der Lagrange-Formalismus verwendet, ist aber nicht so wichtig...
Auf jeden Fall komme ich am Schluss auf diese drei Bewegungsgleichungen:
phi, sigma und theta sind jeweils Funktionen von der Zeit, die anderen Variablen sind kontstant.
jetzt zu meiner Frage:
gibt es eine Möglichkeit diese Gleichungen in Matlab/Octave zu lösen(ich bin ein ziemlicher Noob )?
da hast du dir was vorgenommen.
Mehrere Schritte:
1. Schreibe das System in der Form M * dx/dt = f(x, t)
a) Löse die Gleichungen soweit möglich nach den zweiten Ableitungen auf, d.h. eine Seite enthält lineare Terme in den zweiten Ableitungen, die andere beliebig komplizierte Ausdrücke aus Funktionen und ersten Ableitungen.
b) setze t = theta', s = sigma' und d = delta' und stelle das Differentialgleichungssystem in den nun 6 Variablen auf.
c) Bringe das in die oben besagte Form.
2. Wende z.B. ode45 (in MATLAB) auf das Problem an. Wichtig: M muss als Parameter Mass über odeset übergeben werden.
Also bis 1a kapier ichs noch.
aber dei 1b setzt ich dann schon aus...
Was ist denn ein Differentialgleichungssystem?
Ist das sowas in der Art:
mit ph=phi', si=sigma' und th=theta'
wegen dem ode45:
das hier heißt auch ode45 und ist aber anscheinend für Octave:
kann ich das verwenden?
du bist auf der richtigen Spur. Nur dass du 6 solche DGLen brauchst.
Differentialgleichungssystem = mehrere miteinander verknüpfte DGLen, wie unten von dir geschrieben.
Ein einfacheres Beispiel:
x'' = f(x', x, t)
als System erster Ordnung, mit u = x'
x' = u
u' = f(u, x, t)
Bei einer Facharbeit sollte dich auch der betreuende Lehrer da ein wenig unterstützen. Was du da hast, würde manch einen Studenten überfordern
hallo,
ich habe heute mit meinem Physiklehrer darüber geredet.
So wie ich das jetzt verstanden habe muss ich folgendes tun:
1. Die 3 Gleichungen nach phidotdot, sigmadotdot und thetadotdot auflösen
2. Diese zweiten Ableitungen jeweils aus den 3 Gleichungen so rauseliminieren, dass ich dann 3 Gleichungen in der Form
phidotdot=f1(phidot, phi, sigmadot, sigma, thetadot, theta)
sigmadotdot=f2(phidot, phi, sigmadot, sigma, thetadot, theta)
thetadotdot=f3(phidot, phi, sigmadot, sigma, thetadot, theta)
habe
3. Das ganze so ähnlich als funktion schreiben:
Genau das ist der Weg.
2. Dürfte aber etwas schwierig werden, da deine Gleichungen recht komplex und schwer nach den zweiten Ableitungen aufzulösen sind. Hast du die Symbolic Math Toolbox oder äquivalent zur Verfügung?
Edit: Falls du die Gleichungen selber hergeleitet hast, solltest du sie auf jeden Fall nochmal überprüfen. Wäre ja ärgerlich, wenn du das alles nochmal durchgehen müsstest.
ich habe die Gleichungen zwar selber, aber nicht von Hand hergeleitet. Dazu habe ich Derive in der Version 4(Die hab ich von der Schule) benutzt. Das war zwar anstrengend aber sicher weniger anstrengend als die von Hand herzuleiten...aber ich werde es auf jeden Fall noch einmal kontrollieren.
Ich habe leider nur Octave, deswegen bringt mir diese Toolbox glaub ich nichts...
Weißt du ob es etwas vergleichbares für Octave gibt?
Also erstmal vielen, vielen Dank für die tolle Hilfe!
Ich habe die Gleichungen jetzt mit Maxima aufgelöst, allerdings stimmt das vom Skript ausgespuckte Ergebnis nicht so wirklich...
Das Skipt soll die Bewegung des einzelnen Punkte, also Projektil etc, im Koordinatensystem anzeigen.
Bis zu einem bestimmten Zeitpunkt stimmt die Bewegung so einigermaßen, bis auf die (Im Plot blaue) Bewegung des Gegengewichts. Aber dann bricht die numerische Berechnung irgendwie ab weil alles zu schnell geht, so verstehe ich das aufjedenfall...
So schnell sollte sich das aber eigentlich nicht bewegen, deswegen frage ich mich jetzt ob das am Code liegt oder an den Gleichungen.
Könnt ihr mir sagen ob der Code falsch ist?
ist natürlich jetzt schwierig, das zu sagen. Ob irgendwo in den Gleichungen ein Fehler drin ist, ist schwer bis unmöglich zu sagen. Wenn das Verhalten bis zu einem gewissen Punkt stimmt, liegen die Probleme aber vermutlich woanders.
Bis zu einem bestimmten Zeitpunkt stimmt die Bewegung so einigermaßen, bis auf die (Im Plot blaue) Bewegung des Gegengewichts.
Dann rechne am besten diese Gleichung nochmal nach. In solchen Fällen ist es oft einfacher, es tatsächlich nochmal durchzurechnen und dann zu vergleichen als Fehler zu suchen.
Grüße,
Harald
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.