Borrar filtros
Borrar filtros

Equivalent of Excel Solver, fminunc?

5 visualizaciones (últimos 30 días)
Orongo
Orongo el 26 de Mzo. de 2018
Comentada: Orongo el 26 de Mzo. de 2018
I'm replicating a calculation done in Excel with Matlab. The spreadsheet used Solver to find the smallest difference between a given value and an estimated value from a known function. The function is y=a+b*exp(c*x) where parameters a, b and c are to be estimated, x is the age. The formula is applied for range of ages and the minimum is the square difference (y_given-y_estimated)^2.
I'm able to use the function fminunc for one age but struggle to have this to a range of ages. My program looks like this
param0 = [0,0.2,1.2];
fun=@(param)f_Makeham(param0,y_given);
[S2, fval]=fminunc(fun,param0);
function res = f_Makeham(param,y_given)
x=(77.5:1:100.5)';
res = a0+b0.*exp(c0.*x);
This obviously generates an error.
How can I change the program to consider the minimum difference for a range of ages, and estimate a, b and c for those ages?

Respuestas (1)

Torsten
Torsten el 26 de Mzo. de 2018
function res=f_Makeham(param,y_given)
a0=param(1);
b0=param(2);
c0=param(3);
x=(77.5:1:100.5)';
res=sum((a0+b0*exp(c0*x)-y_given).^2);
  5 comentarios
Torsten
Torsten el 26 de Mzo. de 2018
Could you include a plot of y_given vs. x ?
Orongo
Orongo el 26 de Mzo. de 2018

Iniciar sesión para comentar.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by