フィルターのクリア

why cant I see any lines on the graph

1 回表示 (過去 30 日間)
Kasper Wallenius
Kasper Wallenius 2024 年 2 月 28 日
回答済み: Sibghat 2024 年 2 月 28 日
% 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

回答 (2 件)

Chunru
Chunru 2024 年 2 月 28 日
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
n = 77×5
0.2000 0.8000 0 0 373.0000 0.2000 0.8000 0 0 373.0948 0.2000 0.8000 0 0 373.1892 0.2000 0.8000 0 0 373.2833 0.2000 0.8000 0 0 373.3770 0.2000 0.8000 0 0 373.8409 0.2000 0.8000 0 0 374.2967 0.2000 0.8000 0 0 374.7446 0.2000 0.8000 0 0 375.1847 0.2000 0.8000 0 0 377.2727
% 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

Sibghat
Sibghat 2024 年 2 月 28 日
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
n = 117×5
0.2000 0.8000 0 0 373.0000 0.2000 0.8000 0 0 375.1911 0.2000 0.8000 0 0 377.2043 0.2000 0.8000 0 0 379.0541 0.2000 0.8000 0 0 380.7538 0.2000 0.8000 0 0 382.3157 0.2000 0.8000 0 0 383.7508 0.2000 0.8000 0 0 385.0693 0.2000 0.8000 0 0 386.2809 0.2000 0.8000 0 0 387.4993
% 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

カテゴリ

Help Center および File ExchangeSystems of Nonlinear Equations についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by