Ошибка подбора Matlab с использованием lsqcurvefit
Я разрабатываю код, чтобы привести уравнение Гомперца в соответствие с кривой роста бактерий, и практикуюсь с некоторыми примерами данных, приведенными на следующем веб-сайте:
http://www.math.tamu.edu/~phoward/m442/ia3sol.pdf.
Согласно этому коду соответствие должно почти соответствовать данным (график приведен на веб-странице выше, стр. 3). Однако когда я запускаю код, фактические данные отображаются правильно, но подгонка lsqcurve очень плохо подходит и выдает следующее сообщение:
Local minimum possible.
lsqcurvefit stopped because the size of the current step is less than
the default value of the step size tolerance.
Что-то я делаю не так?
Спасибо за ваше время,
Лаура
1 ответ
Проблема заключается в связанном документе.
Функция Гомперца параметризуется следующим образом:
%with parameters p(1) = K and p(2) = initial population
%p(3) = r.
V = p(1).*(p(2)/p(1)).^exp(-p(3)*t);
Однако начальные параметры для подгонки кривой приведены для другого упорядочения параметров в p
вектор ([r, K, p0]
вместо [K, p0, r]
). Кроме того, вектор результата также испорчен в документе.
Путем изменения p0
к этому [1000, 3.93, 0.01]
подгонка кривой сойдется, и вы получите хорошую подгонку: