|
Gast Ritis |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 22.07.2008, 08:33
Titel: Simulink Integratoren
|
|
Hallo zusammen,
ich löse mit Simulink ein System von DGL y'=f(x,y,t,...) mit den Integratoren. Das funktioniert soweit auch sehr gut.
Zur Auswertung der Simulationen möchte ich "online", sprich während der Simulation, in der Zeit integrieren. Zum Beispiel einen Massenstrom, der sich aus der Simulation ergibt.
Durch das Einbringen des Integratorblocks kann ich dies auch wunderbar erledigen lassen, jedoch verlangsamt sich die Simulation enorm, da anscheinend Simulink davon ausgeht, dass mein integrierter Massenstrom zu einer DGL gehört.
Lange Rede kurzer Sinn: Gibt's eine Möglichkeit Werte integrieren zu lassen, die kein "State" sind, sondern nur zur Auswertung benötigt werden?
Ich hoffe, dass es einigermaßen verständlich war...
Beste Grüße
Gast Ritis
|
|
|
|
|
Titus |
Forum-Meister
|
|
Beiträge: 871
|
|
|
|
Anmeldedatum: 19.07.07
|
|
|
|
Wohnort: Aachen
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.07.2008, 13:49
Titel:
|
|
Hallo,
hmm, gebe zu, dass ich nicht so richtig weiss, weshalb. Offensichtlich meint der Integrator, die Schrittweite deutlich verkleinern zu müssen (bitte testen: erhöht sich die Anzahl Zeitschritte deutlich, d.h., ist der Vektor tout deutlich länger als vorher?).
Eine Möglichkeit, die mir in den Sinn kommt, ist, dass der Integrator für eine häufige Zero-Crossing detection verantwortlich ist. Da hier aber nur das Integral und nicht der Zustand ausschlaggebend ist, könnte man das Zero-Crossing detection für den Block ausschalten (Doppelklick auf Integrator, Haken bei "Enable zero crossing" wegnehmen).
Hilft das?
Titus
|
|
|
Gaston |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 17.12.2010, 11:28
Titel: Frage zu PDE in Simulink
|
|
Hallo zusammen,
ich weiß wie man mit pedpe eine partielle DGL mit MAtlab lösen kann. Was ich hier sehr interessant finde ist, daß Gast Ritis das ganze in Simulink hin bekommt. ODE machen mir auch keine Probleme in Simulink, aber PDE.
Könnte bitte jemand an ein kleines Beispiel zeigen die dies in Simulink aussieht?
So wie etwa d(u(x,t))/dt=d^2(u(x,t))/dx^2
oder noch ne Stufe schwieriger
d(u(x,y,t))/dt=d^2(u(x,y,t))/dx^2+d^2(u(x,y,t))/dy^2
Wäre echt klasse
Danke schon mal im Voraus
Gaston
|
|
|
ActionAndi |
Forum-Anfänger
|
|
Beiträge: 28
|
|
|
|
Anmeldedatum: 02.08.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 19.12.2010, 22:15
Titel: Gast Ritis
|
|
Ach das ist doch total einfach. Mit einer Diskretisierung der räumlichen Ableitungen kannst Du doch aus den PDEs ein System von ODEs machen.
Also zum Beispiel mit dem finite DIfferenzen-Verfahren:
du/dx=> (u(i)-u(i-1))/Dx mit i = 1:N
d2u/dx^2 = (u(i-1)-2u(i)+u(i+1))/(Dx^2)
Also löst du bei einem 2D-Problem System von ODEs der Größe NxM.
Viele Grüße
Andi
|
|
|
Kenter-K |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 09.12.2012, 18:02
Titel: Bitte um Beispiel
|
|
Hey,
danke für die gute Antwort ActionAndi. Ich habe nämlich das gleiche Problem, dazu kommt noch dass ich mit Simulink keine Erfahrung habe.
Kennt jemand ein Beispiel, wo eine solche Diskretisierung umgesetzt wurde?
Im Moment scheitert es bei mir daran eine solche Finite Differenz in Simulink um zu setzen.
d2u/dx^2 = (u(i-1)-2u(i)+u(i+1))/(Dx^2)
Danke im Voraus
kenter-k
|
|
|
ActionAndi |
Forum-Anfänger
|
|
Beiträge: 28
|
|
|
|
Anmeldedatum: 02.08.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 14.12.2012, 18:11
Titel:
|
|
Oh da hat sich aber den "goldenen Spaten" fürs ausgraben alter Threads verdient
Im Prinzip ist's doch ganz einfach.
-Der Integrator verträgt ja auch Vektoren. Damit kannst Du also gleichzeitig den Vektor u(1:N) integrieren.
-Dann schnappst Du dir den Vektor u und erstellst daraus drei Vektoren mit dem Selektor.
Also Vektor 1: u_e = u(1:N-1), u_p = u(1:N) und u_w = u(2:N).
-Dann noch über mux aus u_e = [0 u_e] machen das Gleiche dann mit u_w = [u_w 0].
- Dann u_p mit -2 multiplizieren.
- Und dann die Summe u_e + u_p + u_w durchführen.
- Mit Gain 1/dz^2 den Term vervollständigen
Und schon haste den Diffusionsterm.
Hoffe, dass hilft.
Andi
|
|
|
|
|
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.
|
|