|
|
Rechenaufwand in Matlab zum Lösen einer DGL |
|
Flobomojo |
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 15.02.10
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.01.2011, 16:25
Titel: Rechenaufwand in Matlab zum Lösen einer DGL
|
|
Hallo Matlab-User,
ich hatte letzte Woche eine Diskussion bezüglich des Rechenaufwands in Matlab.
Es geht um ein Zustandsraummodell x'=Ax+Bu.
Ich habe in Simulink beispielsweise den state space-Block genutzt und die Lösung für x inenrhalb weniger Zehntelsekunden erhalten.
Dabei handelte es sich um eine 3X3 Matrix für A.
In welchem Verhältnis ändert sich der Rechenaufwand in Matlab, wenn ich mein System mit einer beliebigen nXn Matrix beschreibe und das System lösen möchte.
Mit anderen Worten: wie kann ich den Rechenaufwand, den Matlab für die Lösung betreibt, bewerten? Woran mache ich den Aufwand fest?
Grüße
Flo
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 25.01.2011, 16:44
Titel:
|
|
Hallo,
da Simulink im Hintergrund letztlich dieselben Integratoren (ode45 etc.) benutzt, die man auch in MATLAB direkt zur Lösung von Differentialgleichungen verwenden würde, würde ich erwarten, dass die Lösung in MATLAB eher schneller berechnet wird.
Der Rechenaufwand wird üblicherweise über die Rechenzeit (tic/toc), manchmal auch über die Anzahl benötigter Funktionsauswertungen bewertet. Im allgemeinen kann man aus der Rechenzeit für n = 2, n = 4, n = 8, ... Rückschlüsse auf die Rechenzeiten für allgemeine n ziehen.
Im Zweifelsfall hilft ausprobieren...
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Flobomojo |
Themenstarter
Forum-Newbie
|
|
Beiträge: 8
|
|
|
|
Anmeldedatum: 15.02.10
|
|
|
|
Wohnort: Hamburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 25.01.2011, 17:31
Titel:
|
|
Hallo Harald,
danke für die Info.
Ich werde die Rechenzeit vergleichen, sobald ich meine Systeme fertig entwickelt habe.
Grüße
Florian
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 26.01.2011, 10:35
Titel:
|
|
Hallo,
wäre schön, wenn du deine Ergebnisse dann hier postest. Wichtig wird bei der Implementierung in MATLAB sein, auf Effizienz (= Nutzung von Matirx/Vektoroperationen) zu achten. In einem einfachen Fall könnte das so aussehen:
mit
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
dany2k3k |
Forum-Fortgeschrittener
|
|
Beiträge: 66
|
|
|
|
Anmeldedatum: 01.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.02.2011, 01:03
Titel:
|
|
|
|
|
Das laesst sich pauschal auf keinen Fall!!! nur mit der Ordnung des Systems beantworten !
Ich kann dir sofort ein 2x2 System ansagen,wo du fast eine Minute rechnen wirst,obwohl du nur 0.1 Sekunden simulieren moechtest
Warum ist das so ??
Ein Kritierium ist , wo sich die Eigenwerte deines Systems befinden. Die Eigenwerte sind ein Massstab dafuer, wie 'schnell' dein System ist.
Problematisch sind Systeme,wo die Eigenwerte weit auseinander liegen. Was passiert dann ?? Einfach vorzustellen ist das ,wenn du einen 50 herz sinus nimmst,dem ein 10khz sinus ueberlagert wird. Der Solver richtet sich jetzt seine Abtastzeit so, dass der 10khz sinus noch aufgeloest werde kann. Falls du aber an der 50 HZ Schwingung Interessiert bist, wirst du lange simulieren muessen um diese im Simulationsergebnis zu erkennen.
Anderes Beispiel ist eine in steife Federn gelagerte Welle. Du moechtest die Biegeschwingung der Welle aufgrund einer Unwucht simulieren, der Solver allerdings versucht, am Rand die Bewegung der Federn ebenfalls zu simulieren. Diese finden in einer ganz anderen Zeitskala statt. Innerhalb einer Schwingungsperiode der Welle koennen die Federn am Rand zick tausend mal schwingen. Der Solver richtet sich nach den kleinsten Dynamiken im System.
TIP; Du solltest mit eig(A) immer die Eigenwerte im Auge behalten. Liegen diese zu weit auseinander, ist der ODE45 eventuell die schlechteste Wahl die du treffen kannst. ODE15s ist speziell fuer steife Systeme ausgelegt.
LG
Daniel
|
|
|
Thomas84 |
Forum-Meister
|
|
Beiträge: 546
|
|
|
|
Anmeldedatum: 10.02.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.02.2011, 07:11
Titel:
|
|
Hallo,
wenn es sich um ein lineares Zustandsraummodel handelt sollte man keine ode-solver verwenden sondern lsim. Lineare inhomogene DGL-Systeme sind analytisch lösbar daher benötigt man keinen Solver.
Es würde mich schon ein wenig wundern wenn der state-space Block einfach aufintegrieren würde. Wenn du den Rechenaufwand vergleichen willst must du also state space mit lsim vergleichen.
viele Grüße
Thomas
|
|
|
|
|
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.
|
|