/ / MATLAB dsolve फॉर्मूले से अधिकतम बिंदु खोजें - matlab, max, gap-equations

MATLAB एक dsolve सूत्र से अधिकतम बिंदु खोजें - matlab, अधिकतम, अंतर-समीकरण

मैं दो अंतर समीकरणों को हल कर रहा हूं और दूसरे अंतर समीकरण के परिणामों की साजिश रच रहा हूं। मैं भूखंड में अधिकतम मूल्यों को खोजना चाहता हूं। sym, मुझे पता है कि यह कैसे करना है, मुझे परेशानी हो रही है। मुझे पता है कि गणित में, आप सिर्फ पहला व्युत्पन्न पाएंगे और इसे शून्य पर सेट करेंगे।

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

बी (टी) की साजिश

तो ऊपर की तस्वीर के लिए, मैं "अधिकतम बिंदु को खोजना पसंद करता हूं। कभी-कभी, यह सटीक समय चरणों में नहीं होता है" इसलिए मैं चाहता हूं कि MATLAB अधिकतम बिंदु पर सटीक मान दिखाए।

उत्तर:

जवाब के लिए 0 № 1

आप उपयोग कर सकते हैं findpeaks अपने डेटा में अधिकतम खोजने के लिए। ऐसा करने के लिए, पहले आपको अध्ययन के विशिष्ट अंतराल के लिए अपने ode समाधान (बीजगणितीय अभिव्यक्ति) को डेटा सूची में बदलने की आवश्यकता है।

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

अब उपयोग कर रहा है findpeaks

[pks, locs] = findpeaks(z)

pks =

5.7310e +03

लोक =

 2