Решает неотрицательную линейную задачу методом наименьших квадратов
Решает неотрицательные задачи аппроксимации методом наименьших квадратов вида
Примечание
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.
Задача Optimize Live Editor обеспечивает визуальный интерфейс для lsqnonneg.
[1] Лоусон, К. Л. и Р. Дж. Хэнсон. Решение задач наименьших квадратов. Верхняя Седловая река, Нью-Джерси: Prentice Hall. 1974. Глава 23, стр. 161.
lsqlin | mldivide | Оптимизировать | optimset