Примерка модели с использованием Matlab
Я пытаюсь научиться делать примерку в Matlab и написал простой код с использованием функции lsqnonlin, но я изо всех сил пытаюсь получить желаемый результат. Пожалуйста, если кто-то может помочь с этим, было бы здорово.
% Generate x-values
x=1:10:1000;
% Generate y-values
y = 8*exp(-x/100) + 1*exp(-x/500) + 4*exp(-x/750);
% define Objective function
z= @(r) 8*exp(-x/r(1)) + 1*exp(-x/r(2)) + 4*exp(-x/r(3))-y;
% set initial parameters
x0= rand(3,1);
options=optimset('TolFun',1e-14,'TolX',1e-14, 'MaxFunEvals',1000);
% Do fit
r_new= lsqnonlin(z,x0,[],[],options)
Вывод гласит:
Местный минимум возможен.
lsqnonlin остановлен, потому что окончательное изменение суммы квадратов относительно его начального значения меньше, чем выбранное значение допуска функции.
r_new =
433.6595; 57,2552; 57,2552;
Оптимизация остановлена, потому что относительная сумма квадратов (r) изменяется меньше, чем параметры.TolFun = 1.000000e-14.
Относительное изменение параметров метрики оптимизации r = 3.01e-16 TolFun = 1e-14 (выбрано)
Как вы можете видеть, значения подходят далеко. Я попытался изменить значения TolFun, TolX и MaxFunEvals; несколько раз безрезультатно и я застрял. Если кто-то может указать мне, где я иду не так, буду очень признателен.
Приветствия.