# Given matrix A
matrixA <- matrix(c(18, -15, 33, -15, -4, 8, -6, 6, -9, 9, -16, 9, 5, -6, 9, -4), 4, 4)
# Step 1: Find eigenvalues and eigenvectors
eigen_result <- eigen(matrixA)
# eigenvalues and eigenvectors
eigenvalues <- eigen_result$values
eigenvectors <- eigen_result$vectors
# Check algebraic and geometric multiplicities
for (i in 1:length(eigenvalues)) {
lambda <- eigenvalues[i]
algebraic_multiplicity <- sum(eigenvalues == lambda)
# Calculate geometric multiplicity
eigenspace_matrix <- eigenvectors[, i]
geometric_multiplicity <- length(eigenspace_matrix)
print(paste("Eigenvalue:", lambda))
print(paste("Algebraic Multiplicity:", algebraic_multiplicity))
print(paste("Geometric Multiplicity:", geometric_multiplicity))
# Print eigenspace matrix if geometric multiplicity > 1
if (geometric_multiplicity > 1) {
print(eigenspace_matrix)
}
}
## [1] "Eigenvalue: 3.00000000000002"
## [1] "Algebraic Multiplicity: 1"
## [1] "Geometric Multiplicity: 4"
## [1] 0.3592106 -0.5388159 0.5388159 -0.5388159
## [1] "Eigenvalue: 2"
## [1] "Algebraic Multiplicity: 1"
## [1] "Geometric Multiplicity: 4"
## [1] 0.03286845 -0.44884904 -0.22253965 -0.86482964
## [1] "Eigenvalue: 1.99999999999994"
## [1] "Algebraic Multiplicity: 1"
## [1] "Geometric Multiplicity: 4"
## [1] -0.4080325 0.4308769 -0.6648245 0.4537213
## [1] "Eigenvalue: -0.99999999999997"
## [1] "Algebraic Multiplicity: 1"
## [1] "Geometric Multiplicity: 4"
## [1] 0.3779645 -0.3779645 0.7559289 -0.3779645