Решение линейных систем
• 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.