|
|
|
Ableiten einer numerisch gelösten Dgl |
|
| mariesopherl88 |

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 04.12.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.03.2012, 13:05
Titel: Ableiten einer numerisch gelösten Dgl
|
 |
Hallo zusammen,
ich habe in Matlab eine dgl mit ode 45 gelöst. Wenn ich die Lösung plotte sieht der Graph auch plausibel aus. Wenn ich die Funktion dann jedoch ableite und plotte, hat die Ableitung Sprünge und ist unstetig, sofohl bei diff (y) als auch bei gradient (y)...
Benutze ich den falschen Befehl oder ist das vielleicht ein numerisches Problem?
Ich würde mich freuen, wenn ihr mir weiterhelfen könntet!
Lieben Gruß,
Marie
|
|
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.03.2012, 13:26
Titel:
|
 |
Hallo,
wenn du die Ableitung genau haben möchtest, kannst du ja im Zweifelsfall in die Differentialgleichung einsetzen? t und y hast du ja. Das erscheint mir auf jeden Fall sinnvoller als die Bildung von Differenzenquotienten, und das ist was sowohl DIFF als auch GRADIENT letztlich machen.
Wenn du eine dieser beiden Funktionen verwendest, musst du darauf achten, auch die Zeitskala miteinzubeziehen, z.B.
Für mehr Hilfe würde ich ein konkreteres Beispiel benötigen.
Grüße,
Harald
|
|
|
|
| mariesopherl88 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 04.12.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.03.2012, 06:48
Titel:
|
 |
Hallo Harald,
danke für deine schnelle Antwort! Ich habe das jetzt so versucht, es gelingt mir aber nicht... meine dgl sieht vereinfacht folgendermaßen aus, sie wird in zwei richtungen aufgestellt:
so rufe ich sie im main programm auf:
soweit klappt alles. Die Funktion für dvel (acc) hab ich nochmal geschrieben, und dabei gleich y eingesetzt.
Als Fehlermeldung erscheint hier:
Error using ==> mpower
Matrix must be square.
Was mach ich falsch? Vielleicht kannst Du mr nochmal einen Tipp geben!
Danke und lieben Gruß,
Marie
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.03.2012, 09:28
Titel:
|
 |
Hallo,
deine tatsächlichen Gleichungen enthalten irgendwo Exponentiation (^). MATLAB versucht, das als Matrixoperation durchzuführen und scheitert. Du willst wohl komponentenweise Operationen; ersetze daher bitte mal ^ durch .^
Grüße,
Harald
|
|
|
|
| mariesopherl88 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 04.12.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.03.2012, 10:57
Titel:
|
 |
Hallo Harald,
danke für den Tipp, jetzt hats endlich geklappt!
Hast du vielleicht noch eine Idee, wie abfragen kann, wie die Beschleunigung ab einem bestimmten Zeitpunkt (bei mit tdis) ist? Ich habe es so probiert:
Wie kann ich denn festlegen, welche Zeitachse er durchsuchen soll? Ich habe ja auch den Geschwindigkeitsverlauf etc. über t...
Vielleicht kannst du mir nochmal helfen,
Gruß,
Marie
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 11.03.2012, 13:09
Titel:
|
 |
Hallo,
mit dem Befehl findest du den ersten Index, zu dem die Bedingung erfüllt ist. Den kannst du dann beliebig weiterverwenden.
| Zitat: |
| Wie kann ich denn festlegen, welche Zeitachse er durchsuchen soll? Ich habe ja auch den Geschwindigkeitsverlauf etc. über t... |
Das müsstest du etwas konkretisieren. Du kannst natürlich über Bedingungen wie
einen bestimmten Teil aus deinem Signal "ausschneiden".
Grüße,
Harald
|
|
|
|
| mariesopherl88 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 04.12.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.03.2012, 13:45
Titel:
|
 |
Hallo Harald,
aber wie kann ich definieren, dass er mir im Beschleunigungsverlauf den Punkt angibt, bei dem die Bedingung zum ersten mal erfüllt ist? Ich habe in meinem Program mehrere Verläufe, zB auch über die Geschwindigkeit etc. und in der Abfrage steht nirgendwo welchen Verlauf er durchsuchen soll. Ich habe auch schon probiert, eine Funktion dafür zu schreiben, der ich den gewollten Verlauf übergebe:
a ist hier ein zweidimensionaler Vektor. Hier kommt die Fehlermeldung:
??? Undefined function or method 'steadydistance' for input arguments of type 'double'.
Liebe Grüße,
Marie
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 11.03.2012, 14:12
Titel:
|
 |
Hallo,
indem du
nimmst.
Die Fehlermeldung wird nichts mit dem geposteten Code zu tun haben, da dort nirgends steadydistance vorkommt.
Grüße,
Harald
|
|
|
|
| mariesopherl88 |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 04.12.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.03.2012, 14:48
Titel:
|
 |
Hallo,
entschuldige, ich habe das falsche kopiert. es müsste eig "beschl" und nicht "steadydistance" heißen..
Ich bekomm's trotzdem nicht hin, leider.
Wo genau soll ich den
hinschreiben? In die Funktion oder ins Main file? Ich arbeite noch nicht so lange mit Matlab und kenne mich nicht so gut aus...
Mein Mainfile sieht jetzt so aus:
So gibt er mir leider gar nichts aus...
und noch eine Frage: Ich habe in meinem Program eine Dgl mit ode23 gelöst und die Schrittweite verkleinert, mit maxstep. Das Zeitintervall habe ich von [0 5] in der Ode-Funktion eingestellt. Wenn ich den Verlauf plotte geht meine Zeitachse aber von 0 bis 500. Kann das stimmen?
Ich hoffe ich nerve dich noch nit, aber ich weiß sonst nicht mehr weiter!
Danke und lieben Gruß,
Marie
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 11.03.2012, 14:54
Titel:
|
 |
Hallo,
andersherum, und der Klarheit halber mit versch. Variablen:
Vorhin konnte das nicht funktionieren, weil du ja a in der Funktion gar nicht verwendet hast...
Bitte möglichst zusammenhängenden Code posten, das machts einfacher.
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
|
|
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.
|
|