Diagonalization Issues

75 views
Skip to first unread message

Indranil

unread,
Dec 30, 2024, 6:58:26 PM12/30/24
to sympy
Hi

I've been facing an issue diagonalizing a particular matrix. Through Sympy the resulting eigVecs do not form the diagonalizing transform. A further 45deg rotation is required to get the matrix diagonal.
What is the source of this error? 

numpy ver: 1.26.4
sympy ver: 1.13.2

I've included the snippet below.

import sympy as sp
import numpy as np

from IPython.display import display, Math, HTML

delta, J, g = sp.symbols('delta J g')

A_1 = sp.Matrix([[J, 0, 0, g],
                 [0, J, 0, g],
                 [0, 0, J, g],
                 [g, g, g, 0]])

eigVals = A_1.eigenvals()
eigVecs = A_1.eigenvects()

P = sp.Matrix.hstack(*[vec for eig in eigVecs for vec in eig[2]])
display(Math(sp.latex(P)))

rows, cols = P.shape

# normalized transformation
normalized_columns = []

for i in range(cols):
    col_new = P[:, i] / sp.sqrt(P[:, i].dot(P[:, i]))
    # print(col_new)
    normalized_columns.append(col_new)

P_norm = sp.Matrix.hstack(*normalized_columns)

display(Math(sp.latex(P_norm)))

A_1_val = A_1.subs({J: 66.14, g: 20 * np.sqrt(2)})

U_chk = P_norm.subs({J: 66.14, g: 20 * np.sqrt(2)})

res_mat = U_chk.transpose() @ A_1_val @ U_chk

display(Math(sp.latex(res_mat)))

Oscar Benjamin

unread,
Jan 7, 2025, 12:57:34 PM1/7/25
to sy...@googlegroups.com
You have probably not normalised the vectors correctly. It looks like
you have made a matrix in which the rows are the eigenvectors but then
normalised the columns.

In a symbolic context it is usually a bad idea to normalise the unit
vectors. Instead use inverse rather than transpose in the formula:

In [48]: T, D = A_1.diagonalize()

In [49]: simplify(T.inv() * A_1 * T - D).is_zero_matrix
Out[49]: True
> --
> You received this message because you are subscribed to the Google Groups "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to sympy+un...@googlegroups.com.
> To view this discussion visit https://groups.google.com/d/msgid/sympy/d92c066c-b7e5-41ed-81e1-d898f17ded69n%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages