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

DGL richtig gelöst und implementiert?

 

RonG
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 15.05.14
Wohnort: Singapore
Version: ---
     Beitrag Verfasst am: 03.06.2014, 08:25     Titel: DGL richtig gelöst und implementiert?
  Antworten mit Zitat      
Hallo, ich versuche mit ode45 eine reaktion 1. ordung zu lösen, welche exotherm ist.

Dabei benutze ich für die Temperaturerhöhung folgende DGL:

dx/dt=k*e^(-Ea/R*T)*(1-x)
dT/dt=h*m/C*k*e^(-Ea/(R*T))*(1-x)

nun will ich gleichzeitig noch die 2. Ableitung der Temperatur lösen, also d(dT/dt)/dt ?

die Ableitung würde ja folgendermaßen aussehen:

d(dT/dt)/dt = h*m/C*k*e^(-Ea/R*T)*(1-x)*Ea/(R*T^2)


reicht es dies auch so bei matlab als neue dgl zu implementieren?

ich habe dieses Problem schon außerhalb der DGL gelöst, indem ich eine Schleife genutzt habe welche die Ergebnisse der anderen beiden DGLs benutzt.
Die Ergebnisse von der Berechnung in der DGL und der außerhalb stimmen jedoch leider nicht überein...

hier mal mein ansatz für das hauptprogramm und die funktion:

funktion:

Code:
function x = dgl_dtbp_test(t,k0,C,Z1,Z2,Cmax)

x=zeros(4,numel(t));

x(1) = 1;                                       %time in min
x(2) = k0*exp(Z1/C(3))*(1-C(2));                %turnover
x(3) = Z2/Cmax*x(2);                            %temperature
x(4) = (-Z2/Cmax*x(2)*Z1/(C(3))^2);             %2. derivation temperature

end

%summarized

%Z1=-EA/R;
%Z2= H*m;



hauptprogramm:

Code:
clear
clc
close all

%reaction

   EA    = 151.3;                %kJ mol-1           activation energy
   k0  = 60*8E15;              %min-1              pre-exponential factor
   H   = 1290;                 %J g-1              specific enthalpie
   R   = 8.314E-3;             %kJ/mol-1/K-1       gasconst.

%sample parameters

    m_dtbp   = 326.682E-3;      %g                  mass dtbp for experiment
   cp_dtbp   = 1.8;              %kJ kg-1 K-1        specific heat capacity
    C_dtbp = m_dtbp*cp_dtbp;    %J/K                heat capacity sample
   
   
%sample container

    mTi    = 844E-3;            %g
    cpTi   = 0.561;             %J/(g*K)
    mSteel = 22.7;              %g
    cpSteel= 0.466;             %J/(g*K)
   
    C_Ti   = cpTi*mTi;          %J/K
    CSteel = cpSteel*mSteel;    %J/K
     
    Cmax = C_Ti+C_dtbp+CSteel;  %K/min              start heat capacity  
   
%operation parameters

    t0  = 0;                        %min            start time
    x0  = 0.001;                    %-              start turnover of reaction
   T0   = 378.15;                   %K              start temperature (105°C)
    HR0 = 0.02;                     %K/min          start heat rate
   

%_____________________________________________________________________

%summarized

Z1=-EA/R;                         %K
Z2=H*m_dtbp;                      %K                 %H*m

%start values
C1=[t0 x0 T0 HR0];  

%calculation

[time results]=ode45(@(t,C) dgl_dtbp_test(t,k0,C,Z1,Z2,Cmax),[0 700],C1);

%_____________________________________________________________________

%derivation dT/dt

i = 1;

while(i <= length(results(:,3)))
    heat1(i) = Z2/Cmax*k0*exp(Z1/results(i,3))*(1-(results(i,2)));
    i = i + 1;
end

%_____________________________________________________________________

Tnew=results(:,3)-273.15;                    %temperature in °C

%dT/dt

subplot(2,2,1),semilogy(Tnew,heat1,Tnew,results(:,4));
xlabel('temperature T in °C')
ylabel('dT/dt in K/min')
title('heat rate','FontSize',12)
axis([100,180,0.01,10])
legend('heat rate after solving','heat rate  ode 2. derivation')
legend('Location','South');

%temperature

subplot(2,2,3),plot(time,Tnew);
xlabel('time t in min')
ylabel('temperature T in K')
title('temperature','FontSize',12)
legend('temperature calculated','temperature experiment')
legend('Location','NorthWest');

%turnover

subplot(2,2,2),plot(time,1-results(:,2));
xlabel('time t in min')
ylabel('1-x')
title('turnover','FontSize',12)

%backcoulor and windowsize

set(gcf, 'color', 'white');
set(gcf, 'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);


eigentlich sollten die beiden berechnungen für die Heizrate das selbe ergebnis liefern, oder?
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.