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

Simulink Integratoren

 

Gast Ritis

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2008, 08:33     Titel: Simulink Integratoren
  Antworten mit Zitat      
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

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 28.07.2008, 13:49     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Gaston

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.12.2010, 11:28     Titel: Frage zu PDE in Simulink
  Antworten mit Zitat      
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

Forum-Anfänger


Beiträge: 28
Anmeldedatum: 02.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.12.2010, 22:15     Titel: Gast Ritis
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Kenter-K

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2012, 18:02     Titel: Bitte um Beispiel
  Antworten mit Zitat      
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

Forum-Anfänger


Beiträge: 28
Anmeldedatum: 02.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2012, 18:11     Titel:
  Antworten mit Zitat      
Oh da hat sich aber den "goldenen Spaten" fürs ausgraben alter Threads verdient Very Happy

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
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.