/ / MATLAB Encontre o ponto máximo de uma fórmula dsolve - matlab, max, equações diferenciais

MATLAB Encontre o ponto máximo de uma fórmula dsolve - matlab, max, equações diferenciais

Eu estou resolvendo duas equações diferenciais e plotando os resultados da segunda equação diferencial. Eu quero encontrar os valores no ponto máximo na plotagem. Entretanto, talvez porque eu esteja usando symEu estou tendo problemas para descobrir como fazer isso. Eu sei que, em matemática, você apenas encontraria a primeira derivada e a colocaria em zero.

% 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)

Então, para a foto acima, eu gostaria de encontrar o ponto máximo. Às vezes, não é em passos de tempo exato, então eu quero que o MATLAB mostre apenas os valores exatos no ponto máximo.

Respostas:

0 para resposta № 1

Você pode usar findpeaks para encontrar o máximo em seus dados. Para fazer isso, primeiro você precisa converter sua solução de ode (expressão algébrica) em uma lista de dados para um intervalo específico de estudo.

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

Agora usando findpeaks

[pks, locs] = findpeaks(z)

pks =

5,7310e + 03

locs =

 2