Решает неотрицательную линейную задачу методом наименьших квадратов
Решает неотрицательные задачи аппроксимации методом наименьших квадратов вида
Примечание
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