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

gekoppeltes DGL-System: Randwertproblem lösen?!?!

 

magamark
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 29.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.01.2013, 19:12     Titel: gekoppeltes DGL-System: Randwertproblem lösen?!?!
  Antworten mit Zitat      
Hey,
ich bin neu hier im Forum und benötige dringend Hilfe. Zu meinem Problem:

Ich habe 4 DGL die wie folgt aufgebaut sind:

dy(1)=y(1)*(dy(3)/y(3)+dy(2)/y(2));
dy(2)=-y(2)*dy(4)/y(4);
dy(3)=+k*4*(y(3)-Tw)/d/cp/y(2)/y(4)-y(4)*dy(4)/cp;
dy(4)=-dy(1)/y(2)/y(4)-y(4)*darcy(Re)/2/d

Sie entstammen aus einer Betrachtung für eine 1D-Kanalströmung...Ich möchte also den Geschwindigkeits-/Dichte-/Druck-/Temperaturverlauf über die Rohrlänge ermitteln. Da an beiden Enden des Kanals Druckspeicher angenommen werden sollen, dachte ich mir, dass es sich hier um ein Randwertproblem handelt. Also eine druckgetriebene Luftströmung....mit Startzustand und Endzustand meiner 4 Variablen.

Kann mit jemand helfen, wie ich dieses gekoppelte DGl-System mit Matlab lösen kann?? Auf meiner Suche bin ich auf den bvp4c-Solver gestoßen...damit habe ich es schon mal versucht, aber ich habe da so meine Probleme....geht das damit überhaupt bzw kann mir jemand auch auf einem anderen Weg weiterhelfen?

Vielen Dank schon!!!!
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 30.01.2013, 11:41     Titel: Re: gekoppeltes DGL-System: Randwertproblem lösen?!?!
  Antworten mit Zitat      
Hallo magamark,

Ja, der bvp4c-Solver ist der richtige Weg.
Bitte erkläre die Probleme, die damit aufgetreten sind.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
magamark
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 29.01.13
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.01.2013, 19:58     Titel:
  Antworten mit Zitat      
Hey Jan,
schon mal Danke, dass du dich mit meinem Problem befasst! Smile

Alles klar, dann schauen wir nun mal weiter. Ich habe dir im Folgenden den Code mal zusammenkopiert...ich hoffe ich habe alles erwischt und das meiste sinnlose bzw überflüssige rausgeschmissen^^


Code:
clc
clear all
close all
global eps Re d k vis pp gamma  ;
eps=0.025;
dglname = 'kanstroemung';
R=287.1429;
gamma=1.4;
vis= 2e-6
d=5e-3;
Taus=50;
del=1e5;
To=293;
po=20.6e5;
rhoa=po/R/To
%%%%
Tend=297
pend=24e5
rhoend=pend/R/Tend
uend=76.35938
%%%%
%ae=(gamma*po/rhoa)^0.5
ae=sqrt(gamma*R*To);
ua=0.0001*ae;
AnfWert=[po rhoa To ua];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 Anfangswerte=[po rhoa To ua];   Endwerte=[pend rhoend Tend uend];
 solinit=bvpinit(linspace(0,1,10),[20.6e5 24e5; 24.4851 23.28628; 293 297;0.0343 76.35938])

 sol=bvp4c(@kanstroemung,@Randbedingung,solinit)
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function res = Randbedingung(Anfangswert,Endwerte)

res = [Anfangswert(1)-20.6e5          % Druck
       Endwerte(1)-24e5               % Druck
       Anfangswert(2)-24.4851       % Dichte
       Endwerte(2)-23.28628         % Dichte
       Anfangswert(3)-293          % Temperatur
       Endwerte(3)-297             % Temperatur
       Anfangswert(4)-0.0343        % Geschwindigkeit
       Endwerte(4)-76.35938];   % Geschwindigkeit
 
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function dydx=odefunc(x,y,flag,Taus)
 
global Re;
global d;
global eps;
global k;
global vis;
global gamma;
global pp;
 
cp=1005;
gammav=(gamma-1)/gamma;
Tw=273+Taus;
ka=0.0262;
 
Re=y(4)*d/vis
Pr=y(2)*vis*cp/ka
fdd=0.0001;
k=nusselt(Re,Pr)
 
dydx=[y(1)*(dp(3)/y(3)+dp(2)/y(2));
      -y(2)*dp(4)/y(4);
      +k*4*(y(3)-Tw)/d/cp/y(2)/y(4)-y(4)*dp(4)/cp;
      -dp(1)/y(2)/y(4)-y(4)*darcy(Re)/2/d];
 
end
 
%%%%%%%%%%%%%%%%%%%%%%%

FEHLER:


Error using bvpinit (line 114)
The guess for the solution must return a vector.

Error in kanalstroe (line 36)
 solinit=bvpinit(linspace(0,1,10),[20.6e5 24e5;24.4851 23.28628;293 297;0.0343 76.35938])
 



Wie man sieht, hat er irgendwie ein Problem mit den Eingaben...wenn man sich die Hilfe zum Solver ansieht, dann ist leider immer eine DGL 2.Ordnung als Basis der Betrachtung. Kann mit der Fehlermeldung leider nichts anfangen... ist bestimmt klar wenn man nicht ein Brett vorm Kopf hat Wink

Besten Dank vorab Smile

[EDITED, Jan, Bitte Code-Formatierung verwenden - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 31.01.2013, 10:23     Titel:
  Antworten mit Zitat      
Hallo magamark,

Zunächst werde ich ja nicht müde zu erklären, dass "clear all" nur zeitraubender Unfug ist. Es ist zwar sehr weit verbreitet, es ist aber trotzdem sinnfrei alle in den Speicher geladenen Funktionen zu löschen und ein resourcen-hungriges Neueinlesen zu erzwingen. Wenn man unbedingt die Variablen löschen möchte, hilft "clear variables".
CLC und CLOSE ALL würde ich auch eher weglassen.

Die Matlab-Funktion EPS mit einer globalen Variablen zu überschreiben, ist eine schelchte Idee. Dies verursacht zwar hier wohl keine Probleme, aber das "Shadowing" von Matlab's Funktionen ist häufig eine Quelle unverständlicher Fehler. Um genau zu sein betrifft das auch "gamma".

Code:
solinit=bvpinit(linspace(0,1,10),[20.6e5 24e5; 24.4851 23.28628; 293 297;0.0343 76.35938])

Error using bvpinit (line 114)
The guess for the solution must return a vector.

Das sieht nach einer eindeutigen Fehlermeldung aus: Im Code ist der initial guess eine Matrix, Matlab erwartet aber einen Vektor. Siehe "help bvpinit".

Gruß, Jan
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.