решить#
- scipy.linalg.решить(a, b, lower=False, overwrite_a=False, overwrite_b=False, check_finite=True, assume_a=None, транспонированный=False)[источник]#
Решить уравнение
a @ x = bдляx, где a является квадратной матрицей.Если известно, что матрица данных относится к определённому типу, то передача соответствующей строки в
assume_akey выбирает конкретный решатель. Доступные варианты:диагональ
'diagonal'
трёхдиагональный
‘tridiagonal’
ленточная
‘banded’
верхняя треугольная
'верхняя треугольная'
нижняя треугольная
«нижняя треугольная»
symmetric
‘symmetric’ (или ‘sym’)
эрмитов
‘hermitian’ (или ‘her’)
симметричная положительно определённая
‘положительно определенная’ (или ‘pos’)
общий
‘general’ (или ‘gen’)
Документация написана в предположении, что аргументы-массивы имеют указанные «основные» формы. Однако аргументы-массивы этой функции могут иметь дополнительные «пакетные» измерения, добавленные перед основной формой. В этом случае массив обрабатывается как пакет низкоразмерных срезов; см. Пакетные линейные операции подробности.
- Параметры:
- a(N, N) array_like
Возвести входные данные в квадрат
- b(N, NRHS) array_like
Входные данные для правой части.
- lowerbool, по умолчанию: False
Игнорируется, если
assume_aявляется одним из'sym','her', или'pos'. Если True, вычисление использует только данные в нижнем треугольнике a; элементы выше диагонали игнорируются. Если False (по умолчанию), вычисления используют только данные в верхнем треугольнике a; элементы ниже диагонали игнорируются.- overwrite_abool, по умолчанию: False
Разрешить перезапись данных в a (может повысить производительность).
- overwrite_bbool, по умолчанию: False
Разрешить перезапись данных в b (может повысить производительность).
- check_finitebool, по умолчанию: True
Проверять ли, что входные матрицы содержат только конечные числа. Отключение может повысить производительность, но может привести к проблемам (сбоям, бесконечному выполнению), если входные данные содержат бесконечности или NaN.
- assume_astr, optional
Допустимые записи описаны выше. Если опущено или
None, выполняются проверки для определения структуры, чтобы можно было вызвать соответствующий решатель.- транспонированныйbool, по умолчанию: False
Если True, решить
a.T @ x == b. Вызывает исключение NotImplementedError для комплексных a.
- Возвращает:
- x(N, NRHS) ndarray
Массив решений.
- Вызывает:
- ValueError
Если обнаружено несоответствие размеров или входная матрица a не квадратная.
- LinAlgError
Если вычисление не удалось из-за сингулярности матрицы.
- LinAlgWarning
Если обнаружен плохо обусловленный вход a.
- NotImplementedError
Если transposed равен True и входная матрица a является комплексной.
Примечания
Если входная матрица b представляет собой 1-D массив с N элементами, при предоставлении вместе с входной матрицей a размером NxN, она считается допустимым вектором-столбцом, несмотря на очевидное несоответствие размеров. Это совместимо с поведением numpy.dot(), и возвращаемый результат по-прежнему является 1-D массивом.
Общие, симметричные, эрмитовые и положительно определённые решения получаются путём вызова подпрограмм ?GESV, ?SYSV, ?HESV и ?POSV соответственно из LAPACK.
Тип данных массивов определяет, какой решатель вызывается, независимо от значений. Другими словами, даже когда записи комплексного массива имеют точно нулевые мнимые части, комплексный решатель будет вызван на основе типа данных массива.
Примеры
Учитывая a и b, решить для x:
>>> import numpy as np >>> a = np.array([[3, 2, 0], [1, -1, 0], [0, 5, 1]]) >>> b = np.array([2, 4, -1]) >>> from scipy import linalg >>> x = linalg.solve(a, b) >>> x array([ 2., -2., 9.]) >>> np.dot(a, x) == b array([ True, True, True], dtype=bool)