Решение неотрицательной задачи линейных наименьших квадратов
Решение неотрицательных задач подгонки кривой наименьших квадратов формы
Примечание
lsqnonneg применяется только к подходу, основанному на решателе. Обсуждение двух подходов к оптимизации см. в разделе Первый выбор подхода на основе проблем или подхода на основе решателей.
Для проблем, где d имеет длину более 20, lsqlin может быть быстрее, чем lsqnonneg. Когда d имеет длину менее 20, lsqnonneg как правило, является более эффективным.
Преобразование между решателями при C имеет больше строк, чем столбцов (что означает, что система переопределена),
[x,resnorm,residual,exitflag,output,lambda] = lsqnonneg(C,d)
эквивалентно
[m,n] = size(C); [x,resnorm,residual,exitflag,output,lambda_lsqlin] = ... lsqlin(C,d,-eye(n,n),zeros(n,1));
Единственное отличие состоит в том, что соответствующие множители Лагранжа имеют противоположные знаки: lambda = -lambda_lsqlin.ineqlin.
lsqnonneg использует алгоритм, описанный в [1]. Алгоритм начинается с набора возможных базисных векторов и вычисляет соответствующий двойной вектор. lambda. Затем выбирается базовый вектор, соответствующий максимальному значению в lambda выменять его из основы в обмен на другого возможного кандидата. Это продолжается до lambda ≤ 0.
Задача «Оптимизировать интерактивный редактор» обеспечивает визуальный интерфейс для lsqnonneg.
[1] Лоусон, C. L. и Р. Дж. Хэнсон. Решение задач наименьших квадратов. Река Верхнее Седло, Нью-Джерси: Прентис Холл. 1974. Глава 23, стр. 161.
lsqlin | mldivide | Оптимизировать | optimset