Solving First order ODEs simultaneously
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Valerie
am 28 Sep. 2023
Kommentiert: Valerie
am 29 Sep. 2023
Hello, needed help figuring out why I cannot obtain a solution. I'm sure this is a solvable solution however I keep getting a warning saying no solution is found. Is there any mistake I'm making in the code?
Everything is a constant except E, Sr(t) & Er(t).
% Rigorous Solution Case #1
syms Sr(t) Er(t) E;
E = Ea - Er(t);
ode2a = diff(Sr(t),t) == -(k1*(Ea - Er(t))*Sr(t)) + krev1*Er(t);
ode3a = diff(Er,t) == (k1*(Ea - Er(t))*Sr(t)) - (krev1+k2)*Er(t);
odes = [ode2a; ode3a];
cond1 = Sr(0) == Sa;
cond2 = Er(0) == 0;
conds = [cond1; cond2];
[SrSol(t),ErSol(t)] = dsolve(odes,conds)
4 Kommentare
Walter Roberson
am 28 Sep. 2023
Ea = 123; %just to have SOME value
k1 = 42; %just to have SOME value
k2 = 13; %just to have SOME value
krev1 = 48; %just to have SOME value
Sa = 5; %just to have SOME value
% Rigorous Solution Case #1
syms Sr(t) Er(t) E;
E = Ea - Er(t);
ode2a = diff(Sr(t),t) == -(k1*(Ea - Er(t))*Sr(t)) + krev1*Er(t);
ode3a = diff(Er,t) == (k1*(Ea - Er(t))*Sr(t)) - (krev1+k2)*Er(t);
eqns = [ode2a; ode3a];
cond1 = Sr(0) == Sa;
cond2 = Er(0) == 0;
conds = [cond1; cond2];
[eqs,vars] = reduceDifferentialOrder(eqns, [Sr(t), Er(t)])
[M,F] = massMatrixForm(eqs,vars)
f = M\F
odefun = odeFunction(f,vars)
InitConditions = double(rhs(conds)) %watch out for order though!
[T, Y] = ode45(odefun, [0 0.01], InitConditions);
subplot(2,1,1); plot(T, Y(:,1)); title(string(vars(1)))
subplot(2,1,2); plot(T, Y(:,2)); title(string(vars(2)))
%that almost looks like the initial conditions are reversed.
%what happens if we try reversing the conditions?
[Tr, Yr] = ode45(odefun, [0 0.01], flipud(InitConditions));
figure
subplot(2,1,1); plot(Tr, Yr(:,1)); title(string(vars(1)))
subplot(2,1,2); plot(Tr, Yr(:,2)); title(string(vars(2)))
Akzeptierte Antwort
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Ordinary Differential 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!