矩阵的特征值是指矩阵在某个方向上的拉伸倍数,数学表达式为:
其中,
为原矩阵,
为特征向量,
为特征值。
在数学上,通常求解特征方程来求解特征值:
但是,由于题目明确输入是2*2的矩阵,所以可以利用公式:
标准代码如下
def calculate_eigenvalues(matrix: List[List[Union[int, float]]]) -> List[float]:
a, b, c, d = matrix[0][0], matrix[0][1], matrix[1][0], matrix[1][1]
trace = a + d
determinant = a * d - b * c
discriminant = trace**2 - 4 * determinant
lambda_1 = (trace + discriminant**0.5) / 2
lambda_2 = (trace - discriminant**0.5) / 2
return [lambda_1, lambda_2]
本代码中,利用了上述公式,通过求解二次方程来求解特征值,这种方法在2*2矩阵中是可行的,但在更高维度的矩阵中,这种方法的计算复杂度会变得非常高,所以需要使用更高效的算法来求解特征值。
当然,也可以使用numpy库中的eig方法来简化计算
def calculate_eigenvalues(matrix: List[List[Union[int, float]]]) -> List[float]:
import numpy as np
return np.sort(np.round(np.linalg.eigvals(matrix), 2))[::-1].tolist()