scipy.linalg.

решить#

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_a key выбирает конкретный решатель. Доступные варианты:

диагональ

'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)