Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Digitale Signalverarbeitung mit MATLAB-Praktikum

Studierende:
weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

lsode was ,ach ich falsch

 

medi1
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 04.09.12
Wohnort: Fürstenfeldbruck
Version: ---
     Beitrag Verfasst am: 04.09.2012, 11:10     Titel: lsode was ,ach ich falsch
  Antworten mit Zitat      
Hallo zusammen,
ich bin zwar nicht absoluter Neuling hatte aber jetzt einige Jahre nicht mehr viel mit Matlab zu tun gehabt und versuche mich nun in Octave einzufuchsen und möchte -zunächst- damit eine Differentialgleichung lösen Smile

Code:

function xdot = f(x,t)

% Gegebene Parameter
V_llk   = 0.39 * 0.127*0.05; % m³
c_llk   = 900;               %  J/(kg*K)
rho_llk = 2700;              % kg/m³
j_lmin  = 2.8e-3;           % kg/s
j_lmax  = 2.8e-3;           % kg/s
chi     = 1.4;
R       = 8.314;             % j/(mol*K)
M_l     = 0.029;             % kg/mol
c_l     = 1005;              % j/(kg*K)
k_dp    = 1e5/(j_lmax^2);
u_min   = 0;                 % W/K
u_max   = 22;                % W/K
p_amb = 1e5;                 % Pa

m_llk = rho_llk*V_llk;
c = m_llk*c_llk;
j_l = (j_lmax+j_lmin)/2;
p_1l= p_amb + k_dp*(j_l*j_l);

% Zeit
t_da = [0:0.1:10];
T_amb = 293;
T_l1 = ((chi*R* T_amb)/((chi-1)*M_l))*(((p_1l/p_amb)^(chi-1)/chi)-1)*(1/c_l)+T_amb;

z=0.1; % Hilfsvariable
u = u_min + z;
% T_l20 = 273 + 50; %Anfangswert

% Hilfsvariablen
a = j_l*c_l;
b = a * T_l1;
% t=linspace(0,20,200);
xdot = (b -a*x(t)-u*(T_l1-T_amb))/c;
endfunction

% DGL solver optionen
% lsode_options("integration method","stiff");
lsode_options("maximum step size",10);
[x,istate, msg]=lsode( "f",273 +50 , t=linspace(0,20,200));
 


die Dgl. hat die Form  \frac{dx}{dt}=a+bx mit oben angegebenen Anfangswert (x stellt in diesem Fall eine Temperatur dar) wie man oben erkennen kann.
Ich erhalte folgende Fehlermeldungen (Achtung da ich hier den Code um ein paar Erweiterungen gekürzt habe

error: `t' undefined near line ...
error: evaluating argument list element number 1

Ich weiß nicht genau was ich falsch mache, kann es sein, dass ich nicht genau auf die Dimensionen achte? Ich hoffe auf eure Hilfe!

Vielen Dank im Voraus für jede Hilfestellung Smile
Gruss
medi1
Private Nachricht senden Benutzer-Profile anzeigen


medi1
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 04.09.12
Wohnort: Fürstenfeldbruck
Version: ---
     Beitrag Verfasst am: 12.09.2012, 07:05     Titel: Re: lsode was ,ach ich falsch
  Antworten mit Zitat      
medi1 hat Folgendes geschrieben:
Hallo zusammen,
ich bin zwar nicht absoluter Neuling hatte aber jetzt einige Jahre nicht mehr viel mit Matlab zu tun gehabt und versuche mich nun in Octave einzufuchsen und möchte -zunächst- damit eine Differentialgleichung lösen Smile

Code:

function xdot = f(x,t)

% Gegebene Parameter
V_llk   = 0.39 * 0.127*0.05; % m³
c_llk   = 900;               %  J/(kg*K)
rho_llk = 2700;              % kg/m³
j_lmin  = 2.8e-3;           % kg/s
j_lmax  = 28e-3;           % kg/s
chi     = 1.4;
R       = 8.314;             % j/(mol*K)
M_l     = 0.029;             % kg/mol
c_l     = 1005;              % j/(kg*K)
k_dp    = 1e5/(j_lmax^2);
u_min   = 0;                 % W/K
u_max   = 22;                % W/K
p_amb = 1e5;                 % Pa

m_llk = rho_llk*V_llk;
c = m_llk*c_llk;
j_l = (j_lmax+j_lmin)/2;
p_1l= p_amb + k_dp*(j_l*j_l);

% Zeit
T_amb = 293;
T_l1 = ((chi*R* T_amb)/((chi-1)*M_l))*(((p_1l/p_amb)^(chi-1)/chi)-1)*(1/c_l)+T_amb;

z=0.1; % Hilfsvariable
u = u_min + z;
% T_l20 = 273 + 50; %Anfangswert

% Hilfsvariablen
a = j_l*c_l;
b = a * T_l1;
% t=linspace(0,20,200);
xdot = (b -a*x-u*(T_l1-T_amb))/c;
endfunction

% Ab hier in anderer Datei oder in der Konsole aufrufen

% DGL solver optionen
% lsode_options("integration method","stiff");
lsode_options("maximum step size",10);
[x,istate, msg]=lsode( "f",273 +50 , t=linspace(0,20,200));
 


medi1


Habe den obigen Code korrigiert und Fehler u.a. "x(t)" beheben können (vgl. Code oben). Man muss halt wirklich den Aufruf des Differentialgleichungs-Lösers seprat von der Datei wo die Funktion ist eingeben bzw. schreiben, sonst bekommt man den einen oder anderen Fehler a la 't' oder 'x' undefined Smile
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
.


goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2021 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.