Equivalent of Excel Solver, fminunc?
2 views (last 30 days)
Show older comments
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?
0 Comments
Answers (1)
Torsten
on 26 Mar 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 Comments
See Also
Categories
Find more on Dialog Boxes in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!