Время, необходимое для диагонализации матрицы с помощью SympyPython

Программы на Python
Ответить
Anonymous
 Время, необходимое для диагонализации матрицы с помощью Sympy

Сообщение Anonymous »

Я пытаюсь диагонализировать матрицу 5x5 с помощью Sympy для решения физической задачи. Использование числовых значений кажется достаточно быстрым, но поскольку мне нужно провести диагонализацию большого количества символов в матрице, это занимает очень много времени. Какова временная сложность (и название) алгоритма, используемого в Sympy? Как много времени это займет? Может ли этому действительно понадобиться миллион лет?
H в следующем коде — это матрица
import sympy as sp
from sympy.physics.quantum.constants import hbar

# define symbols
w = sp.Symbol('omega')
e = sp.Symbol('e')
r = sp.Symbol('r')
E_e = sp.Symbol('E_e')
E_t = sp.Symbol('E_t')
E_x = sp.Symbol('E_x')
E_y = sp.Symbol('E_y')
n_1 = sp.Symbol('n_1')
n_2 = sp.Symbol('n_2')
n_3 = sp.Symbol('n_3')

# construct matrices
t2_x_e = sp.Matrix([[0, (5/(16*sp.pi))**sp.Rational(1,2)*n_3*((8*sp.pi)/15)-n_1*(3**(-sp.Rational(1,2)))*sp.sqrt(2)*(15/(4*sp.pi))**sp.Rational(1,2)*((4*sp.pi)/15)], [0, (3**(-sp.Rational(1,2)))*sp.sqrt(2)*(15/(16*sp.pi))**sp.Rational(1,2)*n_3*((8*sp.pi)/15)+n_2*(3**-sp.Rational(1,2))*(15/(16*sp.pi))**sp.Rational(1,2)*((8*sp.pi)/15)], [(3**(-sp.Rational(1,2)))*sp.sqrt(2)*(15/(4*sp.pi))**sp.Rational(1,2)*n_3*((4*sp.pi)/15)-n_2*(3**-sp.Rational(1,2))*(15/(4*sp.pi))**sp.Rational(1,2)*((4*sp.pi)/15),0]])
t2_y_e = sp.Matrix([[((5/(16*sp.pi))**sp.Rational(1,2))*(n_3)*((8*sp.pi)/15)-(n_1)*(3*sp.Rational(-1,2))*(sp.sqrt(2))*(15/(4*sp.pi))**sp.Rational(1,2)*((4*sp.pi)/15),0],[(-3**sp.Rational(-1,2))*(sp.sqrt(2))*((15/(16*sp.pi))**sp.Rational(1,2))*n_3*((8*sp.pi)/15)-n_2*(3**sp.Rational(-1,2))*((15/(4*sp.pi))**sp.Rational(1,2))*((4*sp.pi)/15),0],[0,(3**sp.Rational(-1,2))*(sp.sqrt(2))*((15/(4*sp.pi))**sp.Rational(1,2))*n_3*((4*sp.pi)/15)-n_2*(3**sp.Rational(-1,2))*((15/(16*sp.pi))**sp.Rational(1,2))*((8*sp.pi)/15)]])

H = sp.BlockMatrix([
[(E_t + hbar*w) * sp.eye(3), e*E_x*r*t2_x_e + e*E_y*r*t2_y_e ],
[(e*E_x*r*t2_x_e + e*E_y*r*t2_y_e).T, E_e * sp.eye(2)],
]).as_explicit()


Подробнее здесь: https://stackoverflow.com/questions/684 ... with-sympy
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»