scipy.linalg.

cdf2rdf#

scipy.linalg.cdf2rdf(w, v)[источник]#

Преобразует комплексные собственные значения w и собственные векторы v к вещественным собственным значениям в блочно-диагональной форме wr и соответствующие вещественные собственные векторы vr, такой что:

vr @ wr = X @ vr

продолжает выполняться, где X является исходным массивом, для которого w и v являются собственными значениями и собственными векторами.

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

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

Комплексные или вещественные собственные значения, массив или стек массивов

Сопряжённые пары не должны перемешиваться, иначе будет получен неправильный результат. Поэтому [1+1j, 1, 1-1j] даст правильный результат, но [1+1j, 2+1j, 1-1j, 2-1j] не будет.

v(…, M, M) array_like

Комплексные или вещественные собственные векторы, квадратный массив или стек квадратных массивов.

Возвращает:
wr(..., M, M) ndarray

Вещественная диагональная блочная форма собственных значений

vr(..., M, M) ndarray

Вещественные собственные векторы, связанные с wr

Смотрите также

eig

Собственные значения и правые собственные векторы для несимметричных массивов

rsf2csf

Преобразовать вещественную форму Шура в комплексную форму Шура

Примечания

w, v должна быть собственная структура для некоторого вещественный матрица X. Например, получено с помощью w, v = scipy.linalg.eig(X) или w, v = numpy.linalg.eig(X) в этом случае X также может представлять сложенные массивы.

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

Примеры

>>> import numpy as np
>>> X = np.array([[1, 2, 3], [0, 4, 5], [0, -5, 4]])
>>> X
array([[ 1,  2,  3],
       [ 0,  4,  5],
       [ 0, -5,  4]])
>>> from scipy import linalg
>>> w, v = linalg.eig(X)
>>> w
array([ 1.+0.j,  4.+5.j,  4.-5.j])
>>> v
array([[ 1.00000+0.j     , -0.01906-0.40016j, -0.01906+0.40016j],
       [ 0.00000+0.j     ,  0.00000-0.64788j,  0.00000+0.64788j],
       [ 0.00000+0.j     ,  0.64788+0.j     ,  0.64788-0.j     ]])
>>> wr, vr = linalg.cdf2rdf(w, v)
>>> wr
array([[ 1.,  0.,  0.],
       [ 0.,  4.,  5.],
       [ 0., -5.,  4.]])
>>> vr
array([[ 1.     ,  0.40016, -0.01906],
       [ 0.     ,  0.64788,  0.     ],
       [ 0.     ,  0.     ,  0.64788]])
>>> vr @ wr
array([[ 1.     ,  1.69593,  1.9246 ],
       [ 0.     ,  2.59153,  3.23942],
       [ 0.     , -3.23942,  2.59153]])
>>> X @ vr
array([[ 1.     ,  1.69593,  1.9246 ],
       [ 0.     ,  2.59153,  3.23942],
       [ 0.     , -3.23942,  2.59153]])