Optimizing parameters in ODE
4 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Bibek Dhami
el 18 de Sept. de 2019
Comentada: Star Strider
el 24 de Sept. de 2019
Hi I have a set of experimental data. I want to fit this experimental data to first order differential equation of the form dy/dt = -a*n-b*n^2-c*n^3 to optimize the value of constants a,b and c. Can anyone help in this regards? I am new to matlab as this question might be too simple for others. Thanks in advance.
0 comentarios
Respuesta aceptada
Star Strider
el 18 de Sept. de 2019
This is a simple, separable differential equation that you can likely solve by hand.
Using the Symbolic Math Toolbox:
syms a b c n y(t) y0
DEqn = diff(y) == -a*n-b*n^2-c*n^3;
Eqn = dsolve(DEqn, y(0)==y0)
fcn = matlabFunction(Eqn, 'Vars',{[a,b,c],t,n,y0})
produces:
Eqn =
y0 - t*(c*n^3 + b*n^2 + a*n)
fcn =
function_handle with value:
@(in1,t,n,y0) y0-t.*(in1(:,1).*n+in1(:,2).*n.^2+in1(:,3).*n.^3)
or more conveniently:
fcn = @(in1,t,n,y0) y0-t.*(in1(:,1).*n+in1(:,2).*n.^2+in1(:,3).*n.^3);
with ‘in1’ corresponding to [a,b,c] in that order. Supply values for ‘n’ and ‘y0’, then present it to the nonlinear parameter estimation function of your choice as:
objfcn = @(in1,t) fcn(in1,t,n,y0)
Or, since it is ‘linear in the parameters’ you can re-write it as a design matrix and use linear methods such as mldivide,\ to solve it as well.
4 comentarios
Star Strider
el 24 de Sept. de 2019
As always, my pleasure!
My code estimates the initial condition as well, estimating it as ‘b(4)’, in the printed results as ‘ic’. So an initial estimate for it shoulld be ‘B0(4)’.
Más respuestas (0)
Ver también
Categorías
Más información sobre Solver Outputs and Iterative Display en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!