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

Hilfestellung beim Lösen zweier Differentialgleichungen

 

Venti96
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 22.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.08.2018, 16:36     Titel: Hilfestellung beim Lösen zweier Differentialgleichungen
  Antworten mit Zitat      
Guten Tag liebe Forumsmitglieder,

ich bin noch unerfahren im Umgang mit Matlab und Simulink und hoffe, dass ich von euch Hilfestellung erhalten kann.
Mein Problem: Ich habe ein System mit einem Druckbehälter gefüllt mit komprimierter Luft (P1(t)), einem Ventil und daran angeschlossen ein Rohr.
Ich muss den Ausgangsdruck P2(t) nach einem Ventil berechnen um damit die Geschwindigkeit eines Zylinders nach einer bestimmten Strecke x(t) bestimmen. Das bedeutet ich habe zwei Differentialgleichungen.
Meine gegeben Formeln sind:
Volumenstrom in Teilchen/s (Gl.1)
Q=B*Kv*P1(t)*(1-({\frac{\frac{P1(t)-P2(t)}{P1(t)}}{3*rmax}))*sqrt{\frac{\frac{P1(t)-P2(t)}{P1(t)}}{Gg*T*Z}}

reales Gasgesetz für den Druckbehälter (Gl.2)
(P1(t)*\frac{a}{V0^2})*(V0-b)=N1(t)*kB*T

reales Gasgesetz für das Rohr (Gl.3)
(P2(t)*\frac{a}{(A(d+x(t)))^2}*((A(d+x(t)))-b)=N2(t)*kB*T

Differentialgleichung für die Teilchenanzahl im Druckbehälter (Gl.4)
\frac{dN1}{dt}=-Q

Differentialgleichung für die Teilchenanzahl im Rohr (Gl.5)
\frac{dN2}{dt}=Q

Gegeben ist alles bis auf P1(t), P2(t), N1(t), N2(t), x(t)
die Anfangsbedingungen sind P1(0)=300 bar; P2(0)=0 bar

Mein zweites Problem:
Den Druck P2 brauche ich in folgender Bewegungsgleichung zum Beschleunigen eines Zylinders (Gl.6):
\frac{d^2x}{dt^2}=\frac{A(P2(t)-Patm)}{m}
und damit zum Berechnen der Endgeschwindigkeit v mit der Differentialgleichung (Gl.7):
v=\frac{dx}{dt}
Auch hier ist bis auf das gesuchte v und P2(t) alles gegeben.

Wie würdet ihr jetzt vorgehen?
Finde keinen richtigen Anfang Embarassed Ich müsste doch durch (Gl. 4) zusammen mit (Gl. 2) -Q bestimmen können, da ich P1(0) kenne. Dadurch dann natürlich auch Q. Durch integrieren erhalte ich N2(t) und damit kann ich auf P2(t) schließen?
Ihr merkt schon, ich bin ein wenig damit überfordert. Habe mir schon Quellen zur Verwendung der ode45 Funktion und dessen Syntax angeschaut und gehe mal davon aus, dass ich hier ein Differentialgleichungssytem aus mehreren Differentialgleichungen besitze die alle voneinander abhängen.
Ich hoffe der Beitrag ist nicht zu Umfangreich.
Schon im Voraus einmal vielen Dank für eure Hilfe!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.08.2018, 16:50     Titel:
  Antworten mit Zitat      
Hallo,

erste Frage: willst du das in Simulink (Blöcke, insbesondere Integratoren) oder in MATLAB (ode45 mit einer DGL-Funktion) angehen?

In jedem Fall stehen im Zentrum die Differentialgleichungen für N1 und N2 (4 und 5). Q bekommst du aus 1, und die darin enthaltenen P1 und P2 durch Auflösen der Gleichungen 2 und 3. N1 und N2 sind in diesen Gleichungen
a) MATLAB: Eingabeargument der DGL-Funktion
b) Simulink: Ausgänge der Integratoren

Das zweite Problem sollte dann verhältnismäßig einfach sein.

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
 
Venti96
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 22.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.08.2018, 19:13     Titel:
  Antworten mit Zitat      
Danke schonmal für die schnelle Antwort.
Ich möchte die Gleichungen als Matlab Funktion in ein Simulink Modell einfügen, also ohne Blockschaltbilder. Also sozusagen die Matlabfunktion in das Simulink Modell einbetten.

Wenn ich das richtig verstanden habe, dann soll ich die Gl. 2 nach P1(t) umstellen:
P1(t)=\frac{N1(t)*kB*T*V0^2}{(V0-b)*a} (Gl. 2.1)

und Gl. 3 nach P2(t) umstellen:
P2(t)=\frac{N2(t)*kB*T*(A(d+x(t)))^2}{((A(d+x(t)))-b)*a} (Gl. 3.1)

Dann in Gl. 1 P1(t) und P2(t) durch die Gl. 2.1 & Gl. 3.1 ersetzen.
Dann die DGL Gl. 4 & 5 aufstellen?
Und dann? Ich habe doch dann die zusätzliche Abhängigkeit von x(t) noch durch P2(t)?
Kann ich trotzdem ganz normal die ode45 funktion nutzen? Und wie genau erhalte ich daraus mein P2(t)? Habe das System glaube ich noch nicht ganz verstanden.
Ich probiere es mal aus und schreibe den Code hier rein.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.08.2018, 21:39     Titel:
  Antworten mit Zitat      
Hallo,

habe ich übersehen. Dann musst du x gleich als 3. und 4. DGL einbauen.
Fang mit 4 Integratoren an, beschrifte die Ein- und Ausgänge. x ist dann einer der Ausgänge und kann in der MATLAB Function verwendet werden.

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
 
Venti96
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 22.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.08.2018, 22:49     Titel:
  Antworten mit Zitat      
Die Integratoren sind doch Bausteine von Simulink oder?
Ich wollte es so lösen, dass ich eine Matlab-funktion schreibe und diese dann in Simulink einfüge, also ohne Integratoren Blöcke.
Sozusagen wollte ich hier erstmal die Lösung durch die Verwendung des ode45 erzielen.
Mein Problem besteht aber leider immernoch.
Also der Kern des Problems ist: Wie erhalte ich P2 aus den Gleichungen und wie anschließend v

Trotzdem vielen Dank für jede Antwort!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.08.2018, 23:04     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich wollte es so lösen, dass ich eine Matlab-funktion schreibe und diese dann in Simulink einfüge, also ohne Integratoren Blöcke.

Das ist meines Erachtens nicht sinnvoll, da du Schwierigkeiten haben wirst, die Dynamik in die MATLAB-Function zu bringen. Ich würde sagen, entweder Simulink mit Integrator-Blöcken oder reines MATLAB.

Zitat:
Wie erhalte ich P2 aus den Gleichungen und wie anschließend v

Du hast doch schon nach P2 aufgelöst. Was meinst du mit v? Die Ableitung von x? Du musst die DGL 2. Ordnung in 2 DGLen 1. Ordnung umschreiben.

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
 
Venti96
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 22.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.08.2018, 23:29     Titel:
  Antworten mit Zitat      
Zitat:
Ich würde sagen, entweder Simulink mit Integrator-Blöcken oder reines MATLAB.

Okay vielen Dank, dann werde ich mich morgen früh mal einlesen wie man diese richtig verwendet.
Zitat:
Du hast doch schon nach P2 aufgelöst.

Ja das stimmt, aber es ist doch noch abhängig von N2(t) und x(t) kann ich das trotzdem in die Gl. 6 einsetzten und dann aufteilen in 2 DGL 1. Ordnung?
\frac{d^2x}{dt^2}=\frac{A(P2(t)-Patm)}{m}

Ja mit v meine ich die Geschwindigkeit aus Differentialgleichung Gl. 7.
Wie gesagt ich lese mir morgen früh nochmal was durch und melde mich dann wieder.
Gute Nacht erstmal und nochmals vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.08.2018, 09:24     Titel:
  Antworten mit Zitat      
Hallo,

grob gesagt für Verwendung von ode45:
Code:
function du = dgl(u)
% u = [N1, N2, x, v]
P1 = % Gl. 2.1
P2 = % Gl. 3.1
Q = % Gl. 1
du(1) = Q;
du(2) = -Q;
du(3) = u(4);
du(4) = % Gl. 6


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
 
Venti96
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 22.08.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.08.2018, 02:20     Titel:
  Antworten mit Zitat      
Ich habe das ganze heute mal mit Simulink aufgebaut.
Ich lade euch die Datei hier mal hoch.
Diese Fehlermeldung taucht auf:
Code:
Index exceeds array dimensions.  Index value -100000 exceeds valid range [1-1] of array A.
   Error in 'DGL_System_Ventil/d^2x//dt^2' (line 3)
      a = (A(P2-Patm))/m;

Ich denke mal ich muss noch irgendwelche Grenzen einbauen:
v>0; P2(t)>0 ;P1(t)>0 oder was meint ihr?
Gute Nacht Smile

DGL_System_Ventil.slx
 Beschreibung:

Download
 Dateiname:  DGL_System_Ventil.slx
 Dateigröße:  29.44 KB
 Heruntergeladen:  217 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 26.08.2018, 14:40     Titel:
  Antworten mit Zitat      
Hallo,

ein scharfer Blick auf die Zeile: nach dem A fehlt ein * für Multiplikation.

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