Singular matrix doesn't shrink space dimensions

58 views Asked by At

4x4 Matrix A in the python code has det(A)=0, this suggest the space should shring by at least 1 dimension under this transformation, yet has 4 distinct nonzero eigenvalues and Ax=b has a unique solution, which doesn't make sence for a singular matrix (but im a beginner in LA). Also I dont think there is any nonzero x for Ax = 0. Theese properties shouldn't come along with det(A)=0 Any idea what this can mean? edited to better explain the situation

I did the calculations in python, maybe there is a problem?

 import numpy as np

def apply_transformation(original_matrix, sorted_eigenvectors):
    # Construct the transformation matrix
    transformation_matrix = sorted_eigenvectors
    
    # Apply the transformation to the original matrix A
    transformed_matrix = np.linalg.inv(transformation_matrix) @ original_matrix @ transformation_matrix

    # Solve the linear system Ax = b, where A is the transformed matrix and b is a column vector of ones
    b = np.ones((original_matrix.shape[0], 1))
    solution = np.linalg.solve(transformed_matrix, b)

    return transformed_matrix, solution

# Original matrix
matrix = np.array([
    [15.0, 8.0, 6.0, 1.0],
    [4.0, 3.0, 13.0, 10.0],
    [9.0, 14.0, 0.0, 7.0],
    [2.0, 5.0, 11.0, 12.0]
])

# Compute eigenvalues and eigenvectors
eigenvalues, eigenvectors = np.linalg.eigh(matrix)

# Sort eigenvalues and eigenvectors by axis
sorted_indices = np.argsort(eigenvalues)
sorted_eigenvalues = eigenvalues[sorted_indices]
sorted_eigenvectors = eigenvectors[:, sorted_indices]

# Print sorted eigenvalues
print("Sorted Eigenvalues:", sorted_eigenvalues)

# Print sorted eigenvectors (normalized)
print("Sorted and Normalized Eigenvectors:")
for i, eigenvector in enumerate(sorted_eigenvectors.T):
    # Normalize the eigenvector
    normalized_eigenvector = eigenvector / eigenvector[-1]
    print(f"Eigenvalue {i + 1}:", normalized_eigenvector)

# Check the determinant of the matrix
matrix_determinant = np.linalg.det(matrix)
print("Determinant of the Matrix:", matrix_determinant)

# Print the transformation matrix
print("Transformation Matrix:")
print(sorted_eigenvectors)

# Apply the transformation to the original matrix and solve the linear system
transformed_matrix, solution = apply_transformation(matrix, sorted_eigenvectors)

# Print the transformed matrix
print("Transformed Matrix:")
print(transformed_matrix)

# Print the solution to the linear system
print("Solution to the Linear System Ax = b:")
print(solution)

returns:

Sorted Eigenvalues: [-14.33324848   2.22064808  11.92144515  30.19115526]

Sorted and Normalized Eigenvectors:
Eigenvalue 1: [ 0.71391039  2.50479489 -3.6622767   1.        ]
Eigenvalue 2: [ 0.52881558 -1.19572376 -0.44166948  1.        ]
Eigenvalue 3: [-1.32998337  0.19401269  0.14648622  1.        ]
Eigenvalue 4: [0.99857055 0.8822837  1.07114506 1.        ]

Determinant of the Matrix: 0.0

Transformation Matrix:
[[-0.15506629  0.31029198 -0.79087887 -0.50416659]
 [-0.54405884 -0.70161227  0.11537027 -0.44545472]
 [ 0.79547192 -0.25915745  0.0871085  -0.54080861]
 [-0.21720694  0.58676786  0.5946532  -0.5048883 ]]

Transformed Matrix:
[[-11.94463818  -3.1985937   -3.4011859    2.63213619]
 [ -0.25343154  -0.22298114  -1.53093773   0.97556332]
 [  3.2953323    2.23266413  12.35922435  -0.32617691]
 [  2.55908423   1.165752     0.19961432  29.80839497]]

Solution to the Linear System Ax = b:
[[ 3.59332203e+14]
 [-1.50829941e+15]
 [ 1.77373384e+14]
 [ 2.69499722e+13]]

note:

Transformed matrix = T^-1 x A x T Transformation Matrix = T

0

There are 0 answers