如何使用python找到具有特征值和特征向量的整数项的2x2矩阵?

问题描述

例如,如果我有特征向量 (2,3) 和 (1,3) 的特征值 7 和 20,我将如何计算 2x2 矩阵?我可以使用 python 计算包含这些整数条目的数组吗?

解决方法

这与其说是编程问题,不如说是一道数学题。要获得具有特征值 7 和 20 以及特征向量 [2,3] 和 [1,3] 的矩阵,您需要创建一个矩阵 P,该矩阵以特征向量为列和一个具有特征值的对角矩阵 D在主对角线上。使用 numpy 这将是:

import numpy as np

P = np.array([[2,3],[1,3]]).T
D = np.diag([7,20]) 

(这里假设 7 是对应于 [2,3] 的特征值,而 20 是对应于 [1,3])。您要查找的矩阵是通过乘以 PDP^(-1) 获得的。用 numpy:

A = P@D@np.linalg.inv(P)

由于 numpy 使用浮点数,因此在计算 P 的逆矩阵时会损失一些精度。如果您想避免它并获得表示为分数的 A 条目,您可以改用 sympy:

from sympy import Matrix,diag

P = Matrix([[2,3]]).T
D = diag(7,20)
A = P*D*P**(-1)