Equivalent of Excel Solver, fminunc?

3 ビュー (過去 30 日間)
Orongo
Orongo 2018 年 3 月 26 日
コメント済み: Orongo 2018 年 3 月 26 日
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?

回答 (1 件)

Torsten
Torsten 2018 年 3 月 26 日
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 件のコメント
Orongo
Orongo 2018 年 3 月 26 日

サインインしてコメントする。

Community Treasure Hunt

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

Start Hunting!

Translated by