Примерка модели с использованием 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; несколько раз безрезультатно и я застрял. Если кто-то может указать мне, где я иду не так, буду очень признателен.

Приветствия.

0 ответов

Другие вопросы по тегам