lsqcurvefit
соответствует вашим данным в смысле наименьших квадратов. Таким образом, все сводится к минимизации, и поскольку ваши данные нелинейны, у вас нет никакой гарантии, что это глобальный минимум или что он уникален.
Например. Рассмотрим функцию sin (x), значение x которой минимизирует эту функцию, ну, все x = 2 * pi * n + 3/2 * pi для n = 0,1,2, ... но ваш числовой метод может только возвращать одно решение, которое будет зависеть от вашего первоначального предположения.
Чтобы подробнее остановиться на проблеме. Самый простой (на мой взгляд) алгоритм минимизации известен как самый крутой спуск. он использует известную из математического анализа идею о том, что самый крутой спуск проходит в направлении минус градиента. Таким образом, он обнаруживает, что градиент в предложенной точке делает шаг в отрицательном направлении (масштабируется на некоторый размер шага) и продолжает делать это до тех пор, пока шаг / производная не станет значительно меньше.
Однако, даже если вы рассмотрите функцию cos (3 pi x) / x от 0,5 до бесконечности, которая имеет уникальный глобальный минимум в 1, вы найдете ее только в том случае, если ваше предположение находится в диапазоне от 0,7 до 1,3 (или около того). Все остальные предположения найдут свои соответствующие локальные минимумы.
Этим мы можем ответить на ваши вопросы:
1) resnorm
- 2-норма остатков. Что бы это значило, что конкретная норма будет приемлемой? Алгоритм ищет минимум, если у вас уже есть минимум, что будет значить продолжить поиск?
2) Не в (псевдо) точном смысле. Обычно делается либо использование ваших знаний, чтобы придумать разумное первоначальное предположение. Если это невозможно, вам просто придется многократно делать случайные начальные предположения, а затем сохранять лучшее.
3) Зависит от того, что вы хотите сделать, если вы хотите провести статистические тесты, которые зависят от нормального распределения остатков, тогда ДА. Если вы заинтересованы исключительно в подгонке функции с наименьшей нормой невязки, тогда НЕТ.
person
Nicky Mattsson
schedule
10.04.2018
resnorm
действительноsum((y_measured-y_calculated).^2)
. Так что resnorm сам по себе не очень полезен, вы можете разделить resorm на количество измеренных точек, чтобы получить среднюю ошибку. На мой взгляд, нет хорошего или плохогоresnorm
, все зависит от необходимой точности. - person obchardon   schedule 10.04.2018