Matlab - разрешение системы разреженных матриц - PullRequest
3 голосов
/ 30 марта 2011

Я участвую в разрешении системы типа Ax = b, где A - квадратная разреженная матрица, x - вектор неизвестных (я должен его вычислить), а b - вектор всех нулей.excpet для последнего элемента, который равен 1. Последний ряд матрицы A используется для нормализации и поэтому выполняется с единицами.

Решения этой системы являются вероятностями и по этой причине условие 0<x(i)<1 должны соблюдаться.

Для решения системы используется команда Matlab x = A \ b;.

Метод работает хорошо, но есть особый случай, когда вектор xтакже содержит отрицательные значения.Добавляя очень маленькое значение (10 ^ -6) к любому элементу Матрицы А, обратно разрешение, чтобы соответствовать условиям.

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

1 Ответ

2 голосов
/ 30 марта 2011

Похоже, что вы действительно хотите: минимизировать || Ax-b ||при условии х> 0 для всех х.Вы можете сделать это с помощью функции lsqlin: http://www.mathworks.com/help/toolbox/optim/ug/lsqlin.html

«Необходимо добавить к 1» - ограничение линейного равенства, положительность - ограничение линейного неравенства.

Связанная проблема с вероятностями вМатрица (не квадратная) это: http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5717139

...