Решите нелинейный подбор кривых (подбор кривой данных) проблемы в смысле наименьших квадратов
Решатель нелинейного метода наименьших квадратов
Найдите коэффициенты x, которые решают проблему
учитывая входные данные xdata и наблюдаемый вывод ydata, где xdata и ydata являются матрицами или векторами, и F (x, xdata) являются функцией с векторным знаком или с матричным знаком, одного размера как ydata.
Опционально, компоненты x могут иметь нижние и верхние границы lb и ub. Аргументы x, lb и ub могут быть векторами или матрицами; смотрите Матричные аргументы.
Функция lsqcurvefit
использует тот же алгоритм в качестве lsqnonlin
. lsqcurvefit
просто обеспечивает удобный интерфейс для соответствующих данным проблем.
Вместо того, чтобы вычислять сумму квадратов, lsqcurvefit
требует, чтобы пользовательская функция вычислила функцию с векторным знаком
x = lsqcurvefit(fun,x0,xdata,ydata)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub)
x = lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)
x = lsqcurvefit(problem)
[x,resnorm]
= lsqcurvefit(___)
[x,resnorm,residual,exitflag,output]
= lsqcurvefit(___)
[x,resnorm,residual,exitflag,output,lambda,jacobian]
= lsqcurvefit(___)
запускается в x
= lsqcurvefit(fun
,x0
,xdata
,ydata
)x0
и находит коэффициенты x
, чтобы лучше всего соответствовать нелинейному функциональному fun(x,xdata)
к данным ydata
(в смысле наименьших квадратов). ydata
должен быть одного размера как вектор (или матрица) F
, возвращенный fun
.
Передача Дополнительных Параметров объясняет, как передать дополнительные параметры вектор-функции fun(x)
при необходимости.
задает набор нижних и верхних границ на переменных проекта в x
= lsqcurvefit(fun
,x0
,xdata
,ydata
,lb
,ub
)x
, так, чтобы решением всегда был в области значений lb
≤ x ≤
ub
. Можно зафиксировать компонент решения x(i)
путем определения lb(i) = ub(i)
.
Если заданные входные границы для проблемы противоречивы, выводом x
является x0
, и выходными параметрами resnorm
и residual
является []
.
Компоненты x0
, которые нарушают границы lb ≤ x ≤ ub
, сбрасываются к внутренней части поля, заданного границами. Компоненты, которые уважают границы, не изменяются.
находит минимум для x
= lsqcurvefit(problem
)problem
, где problem
является структурой, описанной во Входных параметрах. Создайте структуру problem
путем экспорта проблемы из приложения Оптимизации, как описано в Экспорте работы.
Алгоритм Levenberg-Marquardt не обрабатывает связанные ограничения.
Доверительная область отражающий алгоритм не решает недоопределенные системы; это требует, чтобы количество уравнений, т.е. размерность строки F, было, по крайней мере, столь же большим как количество переменных. В недоопределенном случае lsqcurvefit
использует алгоритм Levenberg-Marquardt.
Поскольку доверительная область, отражающий алгоритм не обрабатывает недоопределенные системы и Levenberg-Marquardt, не обрабатывает связанные ограничения, проблемы, которые имеют обе из этих характеристик, не могут быть решены lsqcurvefit
.
lsqcurvefit
может решить проблемы с комплексным знаком непосредственно с алгоритмом levenberg-marquardt
. Однако этот алгоритм не принимает связанные ограничения. Для комплексной проблемы со связанными ограничениями, разделение переменные в действительные и мнимые части и использование алгоритм trust-region-reflective
. Сочтите целесообразным Модель к Данным с комплексным знаком.
Вычисление перед формирователем использовало в предобусловленной части метода сопряженных градиентов доверительной области, отражающий метод формирует JTJ (где J является якобиевской матрицей) прежде, чем вычислить предварительный формирователь. Поэтому строка J со многими ненулями, который приводит к почти плотному продукту JTJ, может привести к процессу дорогостоящего решения для больших проблем.
Если компоненты x имеют не верхний (или ниже) границы, lsqcurvefit
предпочитает, чтобы соответствующие компоненты ub
(или lb
) были установлены в inf
(или -inf
для нижних границ) в противоположность произвольному, но положительному очень большому (или отрицательные для нижних границ) номер.
Можно использовать доверительную область отражающий алгоритм в lsqnonlin
, lsqcurvefit
и fsolve
с маленьким - к проблемам средней шкалы, не вычисляя якобиан в fun
или обеспечивая якобиевский шаблон разреженности. (Это также применяется к использованию fmincon
или fminunc
, не вычисляя Гессиан или предоставляя шаблон разреженности Гессиана.), Как маленький является маленьким - к средней шкале? Никакой абсолютный ответ не доступен, когда это зависит от суммы виртуальной памяти в вашей настройке компьютерной системы.
Предположим, что ваша проблема имеет уравнения m
и неизвестные n
. Если команда , J = sparse(ones(m,n))
вызывает ошибку Out of memory
на вашей машине, то это - конечно, слишком большая проблема. Если это не приводит к ошибке, проблема может все еще быть слишком большой. Можно узнать только путем выполнения его и наблюдения, запускается ли MATLAB в сумме виртуальной памяти, доступной в системе.
Levenberg-Marquardt и доверительная область отражающие методы основаны на алгоритмах нелинейного метода наименьших квадратов, также используемых в fsolve
.
Доверительная область по умолчанию отражающий алгоритм является методом доверительной области подпространства и основан на внутреннем отражающем методе Ньютона, описанном в [1] и [2]. Каждая итерация включает приближенное решение большой линейной системы с помощью метода предобусловленных методов сопряженных градиентов (PCG). Смотрите Доверительную область Отражающие Наименьшие квадраты.
Метод Levenberg-Marquardt описан в ссылках [4], [5], и [6]. См. Метод Levenberg-Marquardt.
[1] Коулман, Т.Ф. и И. Ли. “Внутренний, Доверительный Подход области для Нелинейной Минимизации Согласно Границам”. SIAM Journal на Оптимизации, Издании 6, 1996, стр 418–445.
[2] Коулман, Т.Ф. и И. Ли. “На Сходимости Отражающих Методов Ньютона для Крупномасштабной Нелинейной Минимизации Согласно Границам”. Математическое программирование, Издание 67, Номер 2, 1994, стр 189–224.
[3] Деннис, J. E. “Нелинейный метод наименьших квадратов” младший. Состояние в Числовом Анализе, редакторе Д. Джейкобсе, Academic Press, стр 269–312.
[4] Levenberg, K. “Метод для Решения Определенных проблем в Наименьших квадратах”. Ежеквартальная Прикладная математика 2, 1944, стр 164–168.
[5] Marquardt, D. “Алгоритм для Оценки Наименьших квадратов Нелинейных Параметров”. Прикладная математика SIAM Journal, Издание 11, 1963, стр 431–441.
[6] Moré, J. J. “Алгоритм Levenberg-Marquardt: Реализация и Теория”. Числовой Анализ, редактор Г. А. Уотсон, Примечания Лекции в Математике 630, Springer Verlag, 1977, стр 105–116.
[7] Moré, J. J. бакалавр наук Гарбоу и К. Э. Хиллстром. Руководство пользователя для MINPACK 1. Национальная лаборатория Аргонна, Rept. ANL–80–74, 1980.
[8] Пауэлл, M. J. D. “Стандартная подпрограмма Фортрана для Решения Систем Нелинейных Алгебраических уравнений”. Численные методы для Нелинейных Алгебраических уравнений, П. Рабиновица, редактора, Ch.7, 1970.