WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Rechenaufwand in Matlab zum Lösen einer DGL

 

Flobomojo
Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.02.10
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 25.01.2011, 16:25     Titel: Rechenaufwand in Matlab zum Lösen einer DGL
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.01.2011, 16:44     Titel:
  Antworten mit Zitat      
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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Flobomojo
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 8
Anmeldedatum: 15.02.10
Wohnort: Hamburg
Version: ---
     Beitrag Verfasst am: 25.01.2011, 17:31     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für die Info.
Ich werde die Rechenzeit vergleichen, sobald ich meine Systeme fertig entwickelt habe.

Grüße

Florian
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.01.2011, 10:35     Titel:
  Antworten mit Zitat      
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:
Code:
tic; [t,y] = ode45(@myode, [0 10], [0;0;0]); toc
mit
Code:
function dx = myode(t, x)
A = [0.2821    0.7979    0.4594
    0.4668    0.4847    0.0230
    0.2384    0.7068    0.7614];
u = [    0.9258
    0.6902
    0.4668];
dx = A*x + u;


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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
dany2k3k
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 66
Anmeldedatum: 01.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2011, 01:03     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Thomas84
Forum-Meister

Forum-Meister


Beiträge: 546
Anmeldedatum: 10.02.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 03.02.2011, 07:11     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.