/ / MATLAB Encuentre el punto máximo a partir de una fórmula dsolve - matlab, max, Ecuaciones diferenciales

MATLAB Encuentre el punto máximo de una fórmula dsolve - matlab, max, ecuaciones diferenciales

Estoy resolviendo dos ecuaciones diferenciales y trazando los resultados de la segunda ecuación diferencial. Quiero encontrar los valores en el punto máximo de la gráfica. Sin embargo, tal vez porque estoy usando symEstoy teniendo problemas para calcular cómo hacerlo. Sé que en matemáticas, solo encontrarías la primera derivada y la pondrías a cero.

% Constants
k1 = 1/10;
k2 = 1/1.3;
k3 = 1/1.3;
k4 = 1/(1/48);
k5 = 1/3.9;
t = 1:5;
% Initial concentration
A0 = 5891.694;
B0 = 0;
%%% Mass balance equation 1
syms A(t) t
eqn = diff(A,t) == -k1*A -k2*A -k3*A -k4*A;
cond = A(0) == A0;
A(t) = dsolve(eqn,cond);
% A(t) = exp(-k1*t);
%%% Mass balance equation 2
syms B(t) t
eqn = diff(B,t) == k1*A +k2*A +k3*A +k4*A - k5*B;
cond = B(0) == B0;
B(t) = dsolve(eqn,cond);

%%% Plot
figure("visible","on");
t = 0:20;
plot(t,B(t))

parcela de B (t)

Así que para la imagen de arriba, me gustaría encontrar el punto máximo. A veces, no es en los pasos de tiempo exactos, así que quiero que MATLAB muestre los valores exactos en el punto máximo.

Respuestas

0 para la respuesta № 1

Puedes usar findpeaks Para encontrar los máximos en tus datos. Para hacerlo, primero necesita convertir su solución oda (expresión algebraica) en una lista de datos para un intervalo específico de estudio.

B(t) = dsolve(eqn,cond,"t") ;
t = 0:0.1:20;
z=eval(B(t))

Ahora usando findpeaks

[pks, locs] = findpeaks(z)

pks =

5.7310e + 03

locs =

 2