|
|
Integrationsschritte zählen |
|
Illmatic |
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 19.06.12
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: R2011b
|
|
|
|
|
|
Verfasst am: 21.06.2012, 08:25
Titel: Integrationsschritte zählen
|
|
Hallo,
ich würde gerne für ein bestimmtes DGL-System die Matlab-Solver miteinander vergleichen und mir dafür die Anzahl der Funktionsauswertungen, die Anzahl der erfolgreichen und die Anzahl der nicht erfolgreichen Integrationsschritte ausgeben lassen.
Ich hab dazu etwas in der Art im Internet gefunden:
So kriege ich allerdings eine Fehlermeldung. Lass ich nur die DGL lösen mit
kriege ich keinen Fehler.
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 21.06.2012, 09:33
Titel:
|
|
Hallo,
wenn eine Fehlermeldung kommt, diese bitte immer hier reinkopieren; insbesondere wenn der Code nicht direkt reproduzierbar ist (wir haben ja myDGL.m nicht).
Schau dir bitte die Variable sol im Workspace an; dann siehst du ja, welcher Datentyp das ist, welche Felder die Struktur ggf. hat etc.
Grüße,
Harald
|
|
|
Illmatic |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 19.06.12
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: R2011b
|
|
|
|
|
|
Verfasst am: 21.06.2012, 11:21
Titel:
|
|
Sorry.
Die Fehlermeldung lautet:
Attempt to reference field of non-structure array.
Error in DGL_Test (line 2)
n_steps = sol.stats.nsteps;
Die myDGL sieht so aus:
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 21.06.2012, 11:41
Titel:
|
|
Hallo,
das Problem dürfte in der veralteten Syntax liegen, die du verwendest.
Die Schreibweise funktioniert zwar an sich noch, aber du kannst dadurch manche neuere Features nicht nutzen.
Wenn du statt deines Aufrufs das verwendest:
funktioniert das ganze bei mir.
Falls es bei dir nicht funktioniert, bitte auch die MATLAB-Version posten, mit der du arbeitest.
Hinweise zu deiner Funktion:
Dezimaltrennzeichen in MATLAB ist immer Punkt, d.h. es muss heißen
Stimmen die Gleichungen?
qdot(1) und qdot(3) sehen auf den ersten Blick nach in x- und y-Richtung aufgespalteten Kräften aus. Dann würde allerdings bei qdot(1) ein *sin(q(4)) fehlen.
Aus Effizienzgründen würde ich vermeiden, dass dieselben Berechnungen für qdot(1) und qdot(3) quasi doppelt ausgeführt werden. Du kannst ja qdot(1) in qdot(3) weiterverwenden?
Grüße,
Harald
|
|
|
Illmatic |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 19.06.12
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: R2011b
|
|
|
|
|
|
Verfasst am: 21.06.2012, 11:56
Titel:
|
|
Danke Harald!
Jetzt funktionierts einwandfrei. Das Komma war wohl ein Flüchtigkeitsfehler. Auch dafür danke.
|
|
|
Illmatic |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 19.06.12
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: R2011b
|
|
|
|
|
|
Verfasst am: 23.06.2012, 14:55
Titel:
|
|
Ah noch mal zur Erklärung. Der Zustandsvektor q war hier:
und die Differentialgleichungen für und wurden vorher über die Lagrange-Gleichungen 2. Art bestimmt. Die stimmen so schon. Keine Sorge
|
|
|
|
|
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 - 2024
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.
|
|