why cant I see any lines on the graph
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
% Initialvillkor för koldioxid (C), väte (H), metan (M), vatten (W), och temperatur (T)
n0 = [0.2, 0.8, 0, 0, 373]; % Molandel för CO2 och H2, inget metan och vatten initialt, starttemperatur 373K
tauSpan = [0, 100]; % Rymdtidspann, exempelvärde
% Lös ODE
[tau, n] = ode45(@reactor, tauSpan, n0);
% Plotta koncentrationer
figure(1);
plot(tau, n(:,1), 'r-', 'DisplayName', 'CO2'); % Röd linje för CO2
hold on
plot(tau, n(:,2), 'g--', 'DisplayName', 'H2'); % Grön streckad linje för H2
hold on
plot(tau, n(:,3), 'b-.', 'DisplayName', 'CH4'); % Blå prickad linje för CH4
hold on
plot(tau, n(:,4), 'm:', 'DisplayName', 'H2O'); % Magenta prickad linje för H2O
hold on
xlabel('Rymdtid τ');
ylabel('Molandel');
legend();
title('Koncentrationsprofiler');
hold off;
% Plotta temperaturprofil
figure(2);
plot(tau, n(:,5), 'k-', 'DisplayName', 'Temperatur'); % Svart linje för temperatur
hold on
xlabel('Rymdtid τ');
ylabel('Temperatur (K)');
title('Temperaturprofil');
legend();
hold off
function dn_dtau = reactor(tau, n)
% Deklarera konstanter
k0 = 0.5e-4; % m^3/(mol s)
Ea = 50000; % J/mol
DeltaHr = -165000; % J/mol
cPrho0 = 32; % J/(m^3 K)
Tref = 400; % K
R = 8.314; % J/(mol K)
V0_prime = 1e-3; % m^3/s vid 293 K
UAVR = 45; % Exempelvärde för UA/VR
% Extrahera nuvarande tillstånd
CO2 = n(1);
H2 = n(2);
CH4 = n(3);
H2O = n(4);
T = n(5);
% Beräkna reaktionshastigheten
r = k0 * exp(-Ea / (R * (1/T - 1/Tref))) * CO2 * H2^4;
% Ämnesmängdbalanser
dCO2_dtau = -r;
dH2_dtau = -4 * r;
dCH4_dtau = r;
dH2O_dtau = 2 * r;
% Energibalans
dT_dtau = (DeltaHr * r - UAVR * (T - Tref)) / cPrho0 / V0_prime;
% Samla derivator
dn_dtau = [dCO2_dtau; dH2_dtau; dCH4_dtau; dH2O_dtau; dT_dtau];
end
0 Kommentare
Antworten (2)
Chunru
am 28 Feb. 2024
It seems that the solution is not converging. Try setting an appropriate step size or other options to make it converging.
% Initialvillkor för koldioxid (C), väte (H), metan (M), vatten (W), och temperatur (T)
n0 = [0.2, 0.8, 0, 0, 373]; % Molandel för CO2 och H2, inget metan och vatten initialt, starttemperatur 373K
tauSpan = [0, 100]; % Rymdtidspann, exempelvärde
% Lös ODE
opts = odeset("InitialStep", 1e-5);
[tau, n] = ode45(@reactor, tauSpan, n0, opts);
n
% Plotta koncentrationer
figure(1);
plot(tau, n(:,1), 'r-', 'DisplayName', 'CO2'); % Röd linje för CO2
hold on
plot(tau, n(:,2), 'g--', 'DisplayName', 'H2'); % Grön streckad linje för H2
hold on
plot(tau, n(:,3), 'b-.', 'DisplayName', 'CH4'); % Blå prickad linje för CH4
hold on
plot(tau, n(:,4), 'm:', 'DisplayName', 'H2O'); % Magenta prickad linje för H2O
hold on
xlabel('Rymdtid τ');
ylabel('Molandel');
legend();
title('Koncentrationsprofiler');
hold off;
% Plotta temperaturprofil
figure(2);
plot(tau, n(:,5), 'k-', 'DisplayName', 'Temperatur'); % Svart linje för temperatur
hold on
xlabel('Rymdtid τ');
ylabel('Temperatur (K)');
title('Temperaturprofil');
legend();
hold off
function dn_dtau = reactor(tau, n)
% Deklarera konstanter
k0 = 0.5e-4; % m^3/(mol s)
Ea = 50000; % J/mol
DeltaHr = -165000; % J/mol
cPrho0 = 32; % J/(m^3 K)
Tref = 400; % K
R = 8.314; % J/(mol K)
V0_prime = 1e-3; % m^3/s vid 293 K
UAVR = 45; % Exempelvärde för UA/VR
% Extrahera nuvarande tillstånd
CO2 = n(1);
H2 = n(2);
CH4 = n(3);
H2O = n(4);
T = n(5);
% Beräkna reaktionshastigheten
r = k0 * exp(-Ea / (R * (1/T - 1/Tref))) * CO2 * H2^4;
% Ämnesmängdbalanser
dCO2_dtau = -r;
dH2_dtau = -4 * r;
dCH4_dtau = r;
dH2O_dtau = 2 * r;
% Energibalans
dT_dtau = (DeltaHr * r - UAVR * (T - Tref)) / cPrho0 / V0_prime;
% Samla derivator
dn_dtau = [dCO2_dtau; dH2_dtau; dCH4_dtau; dH2O_dtau; dT_dtau];
end
0 Kommentare
Sibghat
am 28 Feb. 2024
In addition to the already provided solution by Chunru, you can also set the relative tolerance (RelTol) (here 1e-6 is used) and the absolute tolerance (AbsTol) (here it is set to 1e-9) to determine the desired accuracy.
% Initialvillkor för koldioxid (C), väte (H), metan (M), vatten (W), och temperatur (T)
n0 = [0.2, 0.8, 0, 0, 373]; % Molandel för CO2 och H2, inget metan och vatten initialt, starttemperatur 373K
tauSpan = [0, 100]; % Rymdtidspann, exempelvärde
% Set tolerances for the ODE solver
opts = odeset('RelTol', 1e-6, 'AbsTol', 1e-9);
% Lös ODE
[tau, n] = ode45(@reactor, tauSpan, n0, opts);
n
% Plotta koncentrationer
figure(1);
plot(tau, n(:,1), 'r-', 'DisplayName', 'CO2'); % Röd linje för CO2
hold on
plot(tau, n(:,2), 'g--', 'DisplayName', 'H2'); % Grön streckad linje för H2
plot(tau, n(:,3), 'b-.', 'DisplayName', 'CH4'); % Blå prickad linje för CH4
plot(tau, n(:,4), 'm:', 'DisplayName', 'H2O'); % Magenta prickad linje för H2O
xlabel('Rymdtid τ');
ylabel('Molandel');
legend();
title('Koncentrationsprofiler');
hold off;
% Plotta temperaturprofil
figure(2);
plot(tau, n(:,5), 'k-', 'DisplayName', 'Temperatur'); % Svart linje för temperatur
xlabel('Rymdtid τ');
ylabel('Temperatur (K)');
title('Temperaturprofil');
legend();
function dn_dtau = reactor(tau, n)
% Deklarera konstanter
k0 = 0.5e-4; % m^3/(mol s)
Ea = 50000; % J/mol
DeltaHr = -165000; % J/mol
cPrho0 = 32; % J/(m^3 K)
Tref = 400; % K
R = 8.314; % J/(mol K)
V0_prime = 1e-3; % m^3/s vid 293 K
UAVR = 45; % Exempelvärde för UA/VR
% Extrahera nuvarande tillstånd
CO2 = n(1);
H2 = n(2);
CH4 = n(3);
H2O = n(4);
T = n(5);
% Beräkna reaktionshastigheten
r = k0 * exp(-Ea / (R * (1/T - 1/Tref))) * CO2 * H2^4;
% Ämnesmängdbalanser
dCO2_dtau = -r;
dH2_dtau = -4 * r;
dCH4_dtau = r;
dH2O_dtau = 2 * r;
% Energibalans
dT_dtau = (DeltaHr * r - UAVR * (T - Tref)) / cPrho0 / V0_prime;
% Samla derivator
dn_dtau = [dCO2_dtau; dH2_dtau; dCH4_dtau; dH2O_dtau; dT_dtau];
end
0 Kommentare
Siehe auch
Kategorien
Mehr zu Systems of Nonlinear Equations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!