Решение линейных систем
lsolve(M, v) - возвращает решение x для линейной системы уравнений M·x = v с использованием LU-разложения.
Аргументы
M — матрица из действительных или комплексных значений. Если матрица квадратная, она должна быть несингулярной.
v — действительный или комплексный вектор или матрица, имеющая такое же число строк, как и M.
Дополнительные сведения
Матрица называется сингулярной, если ее определитель равен 0. Она близка к сингулярной, если имеет большое число обусловленности. Эти условия затрудняют вычисление обратной матрицы, используемой для решения задачи. В этих случаях функция lsolve может завершить вычисления с ошибкой или вернуть неправдоподобные результаты. Для матриц, близких к сингулярным, могут потребоваться другие разложения.
В функции lsolve используется алгоритм, описанный в книге Press, W. H., et. al., Numerical Recipes in C: The Art of Scientific Computing (Численные методы на языке C: искусство научных расчетов), second ed., Cambridge University Press, Cambridge, 1992. Для LU-разложения используются библиотеки BLAS/LAPACK от Intel.
Чтобы узнать, имеет ли система уникальное решение, нужно проверить, выполняется ли условие: rank(M) = cols(M), т. е. являются ли все столбцы матрицы M линейно независимыми.
Для решения такого типа системы можно воспользоваться непосредственно обращением матрицы, но функция lsolve работает быстрее и в некоторых случаях дает более высокую точность. Чтобы решить линейную систему уравнений в естественной записи, может потребоваться использование блока решения.
В случае несовместимой системы уравнений функция lsolve возвращает решение системы уравнений методом наименьших квадратов, получаемое также из geninv(M)·v.
Для значений матрицы v, lsolve(M, v<i>) возвращает i-й столбец geninv(M)·v.
Было ли это полезно?