scipy.linalg.

solve_triangular#

scipy.linalg.solve_triangular(a, b, trans=0, lower=False, unit_diagonal=False, overwrite_b=False, check_finite=True)[источник]#

Решить уравнение a @ x = b для x, где a является треугольной матрицей.

Документация написана в предположении, что аргументы-массивы имеют указанные «основные» формы. Однако аргументы-массивы этой функции могут иметь дополнительные «пакетные» измерения, добавленные перед основной формой. В этом случае массив обрабатывается как пакет низкоразмерных срезов; см. Пакетные линейные операции подробности.

Параметры:
a(M, M) array_like

Треугольная матрица

b(M,) или (M, N) array_like

Матрица правой части в a x = b

lowerbool, необязательно

Используйте только данные, содержащиеся в нижнем треугольнике a. По умолчанию используется верхний треугольник.

trans{0, 1, 2, 'N', 'T', 'C'}, необязательно

Тип решаемой системы:

trans

система

0 или 'N'

a x = b

1 или ‘T’

a^T x = b

2 или 'C'

a^H x = b

unit_diagonalbool, необязательно

Если True, диагональные элементы a предполагаются равными 1 и не будут использоваться.

overwrite_bbool, необязательно

Разрешить перезапись данных в b (может улучшить производительность)

check_finitebool, необязательно

Проверять ли, что входные матрицы содержат только конечные числа. Отключение может повысить производительность, но может привести к проблемам (сбоям, бесконечному выполнению), если входные данные содержат бесконечности или NaN.

Возвращает:
x(M,) или (M, N) ndarray

Решение системы a x = b. Форма возвращаемого значения соответствует b.

Вызывает:
LinAlgError

Если a сингулярна

Примечания

Добавлено в версии 0.9.0.

Примеры

Решить нижнюю треугольную систему a x = b, где:

     [3  0  0  0]       [4]
a =  [2  1  0  0]   b = [2]
     [1  0  1  0]       [4]
     [1  1  1  1]       [2]
>>> import numpy as np
>>> from scipy.linalg import solve_triangular
>>> a = np.array([[3, 0, 0, 0], [2, 1, 0, 0], [1, 0, 1, 0], [1, 1, 1, 1]])
>>> b = np.array([4, 2, 4, 2])
>>> x = solve_triangular(a, b, lower=True)
>>> x
array([ 1.33333333, -0.66666667,  2.66666667, -1.33333333])
>>> a.dot(x)  # Check the result
array([ 4.,  2.,  4.,  2.])