|
|
Matlab Doppelpendel mit Lagrange |
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 12.08.2014, 23:40
Titel:
|
 |
Hallo,
Zitat: |
sind jetzt die beiden ic meine Thetas und die beiden 0 meine Omegas? |
MATLAB weiß nichts von deiner Anwendung, daher nimmt es die Anfangswerte in der Reihenfolge, in der du sie zur Verfügung stellst bzw. verarbeitest.
Anhand deiner Gleichungen würde ich sagen, dass x = [winkel1, winkelgeschw1, winkel2, winkelgeschw2]. Und in der Reihenfolge musst du dann auch die Anfangsbedingungen angeben.
Grüße,
Harald
|
|
|
|
|
rmc90 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 11.08.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.08.2014, 00:03
Titel:
|
 |
Vielen Dank Harald, du hast mir wirklich sehr geholfen!
Das ist mein Code welches mit den Plot Anzeigt, jedoch muss ich noch herausfinden wie ich ein bewegten Plot erzeugen kann.
x1=l1*sin(x(:,1));
y1=-l1*cos(x(:,1));
x2=l1*sin(x(:,1))+l2*sin(x(:,2));
y2=-l1*cos(x(:,1))-l2*cos(x(:,2));
x=[x1(end) x2(end)];
y=[y1(end) y2(end)];
plot(x1,y1,'r',x2,y2,'g')
axis([-4 4 -4 4])
line([0 x1(end)],[0 y1(end)]);
line(x,y);
Im Anhang ist der Plot
Beschreibung: |
|
 Download |
Dateiname: |
Bildschirmfoto 2014-08-13 um 00.02.50.png |
Dateigröße: |
42.87 KB |
Heruntergeladen: |
318 mal |
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.08.2014, 00:30
Titel:
|
 |
Hallo,
eine Möglichkeit: comet statt plot.
Ansonsten bitte genauer spezifizieren, was "bewegt" bedeutet.
Grüße,
Harald
|
|
|
rmc90 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 11.08.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.08.2014, 09:23
Titel:
|
 |
Also ich will das Doppelpendel animieren, mit dem comet Befehl hab ich es noch nicht so ganz hinbekommen. Es wird erst das erste Pendel und dann das zweite Pendel animiert, diese beiden werden auch zu schnell geplottet.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.08.2014, 09:56
Titel:
|
 |
Hallo,
dann am besten in einer for-Schleife immer nur einen Punkt auf der Bahn plotten. Wenn das zu schnell ist, pause-Befehl einfügen.
Damit die Bewegung zeitlich gleichmäßig verläuft, solltest du ode45 mit einem Zeitvektor aufrufen, also z.B. 0:0.01:T statt [0 T]
Grüße,
Harald
|
|
|
rmc90 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 11.08.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.08.2014, 10:42
Titel:
|
 |
Muss ich die Schleife in der Ode Datei machen und jedes x absichern oder kann ich das auch in der Dateien machen in der die Ode gelöst wird?
Ich habe z.B. wenn ich die Ode lösen lasse 629 x1 Werte. wie kann ich denn auf das erste zugreitfen um es polten zu lassen? Wenn ich z.B. x(1) eingebe, zeigt er mir nur den letzten x1 wert an.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.08.2014, 10:47
Titel:
|
 |
Hallo,
nach dem ode45-Aufruf, denn erst da hast du alle Daten.
Zitat: |
Ich habe z.B. wenn ich die Ode lösen lasse 629 x1 Werte. |
Du solltest 4 Spalten haben. Jede Zeile entspricht einem Zeitschritt.
Zitat: |
wie kann ich denn auf das erste zugreitfen |
Das erste was?
Grüße,
Harald
|
|
|
rmc90 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 11.08.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.08.2014, 10:51
Titel:
|
 |
Ich hab keine 4 Spalten, nur eine mit 629 Zeilen und das für x1 x1 y1 und y2
Beschreibung: |
|
 Download |
Dateiname: |
Bildschirmfoto 2014-08-13 um 10.50.11.png |
Dateigröße: |
81.63 KB |
Heruntergeladen: |
304 mal |
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.08.2014, 11:16
Titel:
|
 |
Hallo,
gestern, 22:59 hattest du 4 Spalten. Ich kann leider nicht erahnen, was du wann veränderst.
Wo liegt nun das Problem?
Grüße,
Harald
|
|
|
rmc90 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 11.08.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.08.2014, 11:40
Titel:
|
 |
Stimmt, ich hatte [t1,x1]=ode45(@double_pendulum_ODE,[0 T],[ic ic 0 0]);
wenn ich [t,x]=ode45(@double_pendulum_ODE,[0 T],[ic ic 0 0]); verändere bekomme ich eine Spalte.
Jetzt habe ich wieder 4 Spalten aber warum hat das so einen Unterschied wenn man die 1 vor dem t und dem x weg lässt?
Und wie kann ich nun auf die einzelnen Elemente in x1 zugreifen?
|
|
|
rmc90 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 11.08.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.08.2014, 12:23
Titel:
|
 |
Ich weiss jetzt wie ich auf die einzelnen Elemente zugreifen kann.
x1(628,4)
damit lasse ich mir das Element aus der 628 Zeile und der 4 Spalte anzeigen.
jetzt muss ich die 628 mit z.B. eine i in der Schleife austauschen richtig?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.08.2014, 12:31
Titel:
|
 |
Hallo,
Zitat: |
Jetzt habe ich wieder 4 Spalten aber warum hat das so einen Unterschied wenn man die 1 vor dem t und dem x weg lässt? |
Der einzige Unterschied darin ist der Name der Variablen. Du musst noch was anderes abgeändert haben.
Zitat: |
jetzt muss ich die 628 mit z.B. eine i in der Schleife austauschen richtig? |
genau.
Grüße,
Harald
|
|
|
rmc90 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 11.08.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.08.2014, 13:50
Titel:
|
 |
Ich habe jetzt zum Polten diesen Code:
for i=2:1:T
x1=l1*sin(x(i,1));
y1=-l1*cos(x(i,1));
x2=l1*sin(x(i,1))+l2*sin(x(i,3));
y2=-l1*cos(x(i,1))-l2*cos(x(i,3));
xn=[x1 x2];
yn=[y1 y2];
plot(x1,y1,'r',x2,y2,'g');
comet(x1,y1);
comet(x2,y2);
axis([-5 5 -5 5]);
line([0 x1(end)],[0 y1(end)]);
line(xn,yn);
pause(0.001);
end
das klappt ganz gut, jedoch weiss ich nicht warum er mir nur einen comet anzeigt und warum er nicht die roten und grünen Punkte plottet.
Beschreibung: |
|
 Download |
Dateiname: |
Bildschirmfoto 2014-08-13 um 13.48.36.png |
Dateigröße: |
20.31 KB |
Heruntergeladen: |
294 mal |
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 13.08.2014, 15:17
Titel:
|
 |
Hallo,
die comet-Befehle würde ich hier weglassen. Du plottest ja in der Zeile davor schon. Die for-Schleife sollte bis zur Anzahl der Zeitschritte gehen, das ist i.d.R. nicht T.
Zitat: |
warum er nicht die roten und grünen Punkte plottet. |
weil nacheinander ausgeführte Plots einander überschreiben, wenn kein hold on dazwischen ist.
Grüße,
Harald
|
|
|
rmc90 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 21
|
 |
|
 |
Anmeldedatum: 11.08.14
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 13.08.2014, 15:42
Titel:
|
 |
Ich habe das jetzt so abgeändert, jedoch kopiert er jetzt auch jedes Bild der Pendelstangen, kann man das irgendwie verhindern? Ich kann entweder nur die rot und grünen Plots ausgeben oder die Plots mit den X Pendelstangen.
Ich hoffe ich habe das mit dem T richtig verstanden.
for i=2:1 T/0.01)
x1=l1*sin(x(i,1));
y1=-l1*cos(x(i,1));
x2=l1*sin(x(i,1))+l2*sin(x(i,3));
y2=-l1*cos(x(i,1))-l2*cos(x(i,3));
xn=[x1 x2];
yn=[y1 y2];
plot(x1,y1,'r',x2,y2,'g');
axis([-5 5 -5 5]);
hold on
line(xn,yn);
line([0 x1(end)],[0 y1(end)]);
pause(0.001);
end
|
|
|
|
Gehe zu Seite Zurück 1, 2, 3 Weiter
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
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.
|
|