Filter löschen
Filter löschen

Equivalent of Excel Solver, fminunc?

5 Ansichten (letzte 30 Tage)
Orongo
Orongo am 26 Mär. 2018
Kommentiert: Orongo am 26 Mär. 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?

Antworten (1)

Torsten
Torsten am 26 Mär. 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 Kommentare
Torsten
Torsten am 26 Mär. 2018
Could you include a plot of y_given vs. x ?
Orongo
Orongo am 26 Mär. 2018

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

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

Start Hunting!

Translated by