Иллюстрированный самоучитель по MatLab

Функции для решения систем линейных уравнений с ограничениями

Теперь рассмотрим функции, введенные для решения систем линейных уравнений с ограничениями методом наименьших квадратов:

  • X =lscov(A,B.V) – возвращает вектор X решения СЛУ вида А*Х=В+е, гдее – вектор шумов, который имеет ковариационную матрицу V. Реализуется метод наименьших квадратов в присутствии шумов с известной ковариацией. Прямоугольная матрица А должна быть размера тхn, где т>n. При решении минимизируется следующее выражение: (AX-b)'*inv(V)*(AX-b). Решение имеет вид X=inv(A'* inv(V)*A)*A'*inv(V)*B. Алгоритм решения, однако, построен так, что операция инвертирования матрицы V не проводится;
  • [X.dX] = lscov(A,B,V) – возвращает также стандартную погрешность X, помещая ее в переменную dX. Статистическая формула для стандартной погрешности вычисления коэффициентов имеет следующий вид:
mse = B'*(inv(V)-inv(V)*A*inv(A'*inv(V)*A)*A'*inv(V))*B./(m-n)
dX = sqrt(diag(inv(A'*inv(V)*A)*mse))
  • X =isqnonneg(A,B) – решение СЛУ АХ=В методом наименьших квадратов с неотрицательными ограничениями. А – действительная прямоугольная матрица, В – действительный вектор. Вектор X содержит неотрицательные элементы X>=Q, где j = 1, 2,… n. Критерий: минимизация второй нормы вектора В=АХ;
  • X = Isqnonneg(A.B.X0) – решение СЛУ с явно заданным неотрицательным начальным значением X для итераций;
  • [X,W] = Isqnonneg (…) – вместе с решением возвращает вторую норму вектора остатков в квадрате;
  • [X.W.W1] = Isqnonneg(..) – вместе с решением возвращает вторую норму вектора остатков в квадрате и вектор остатков W1;
  • [X.W.Wl.exitflag] = Isqnonneg (…) – вместе с решением возвращает вторую норму вектора остатков в квадрате, вектор остатков W1 и флаг exi tflаg, равный 1, если решение сходится после заданного по умолчанию числа итераций, и 0 – в противном случае;
  • [X.'W.Wl.exitflag,output] = Isqnonneg(…) – дополнительно возвращает число итераций в output;
  • [X.W.Wl.exitflag,output,lambda] = lsqnonneg(…) – дополнительно возвращает вектор lambda, минимизирующий произведение lambda W1 на последнем шаге итераций решения, lambda (i) близко к нулю, когда X(i) положительно, lambda (i) отрицательно, когда Х(1) равно 0;
  • [X.W.Wl.exitflag,output,lambda] = lsqnonneg(A.В,ХО,options) – обычно используется, если при предыдущей попытке решения системы exitflag=l или если необходимо изменить заданный по умолчанию порог отбора по X – tol X. равный 10*max(size(A))*norm(A, l)*eps (произведению первой нормы матрицы, большего из измерений матрицы, машинной точности и 10). Также используется такая форма записи, как X=lsqnonneg(A,B,XO,options). Параметры options должны быть предварительно заданы при помощи функции optimset. Функция Isqnonneg использует только поля 'display' и 'tolX' структуры options. Поэтому наиболее часто используемая вместе с Isqnonneg форма записи функции – options= optimset С tol X'.tol value), где tolvalue – новое значение порога отбора по X.

Применение ограничений позволяет избежать получения отрицательных корней, хотя и ведет к появлению несколько больших погрешностей решения, чем в случае решений без ограничений. Пример:

>> C=[4 3:12 5:3 12];b=[1.45.41];
D=lsqnonneg(C.b')
D =
2.2242
2.6954
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.