gpt4 book ai didi

python - 如何使用 SymPy 查找矩阵的特征值和特征向量?

转载 作者:太空宇宙 更新时间:2023-11-03 12:55:40 24 4
gpt4 key购买 nike

我想通过以下方法计算系统 A 的特征向量 x:A x = < em>λ x

问题是我不知道如何使用 SymPy 求解特征值。这是我的代码。我想从矩阵 A

中获取 x1 和 x2 的一些值
from sympy import *
x1, x2, Lambda = symbols('x1 x2 Lambda')
I = eye(2)
A = Matrix([[0, 2], [1, -3]])
equation = Eq(det(Lambda*I-A), 0)
D = solve(equation)
print([N(element, 4) for element in D]) # Eigenvalus in decimal form
print(pretty(D)) # Eigenvalues in exact form

X = Matrix([[x1], [x2]]) # Eigenvectors
T = A*X - D[0]*X # The Ax = %Lambda X with the first %Lambda = D[0]
print(pretty(solve(T, x1, x2)))

最佳答案

方法 eigenvalseigenvects是通常在这里使用的。

A.eigenvals() 返回 {-sqrt(17)/2 - 3/2: 1, -3/2 + sqrt(17)/2: 1} code> 这是特征值及其重数的字典。如果您不关心多重性,请使用 list(A.eigenvals().keys()) 获取特征值的简单列表。

eigenvects 的输出有点复杂,由三元组组成(特征值、该特征值的重数、特征空间的基)。请注意,多重性是 algebraic multiplicity ,而返回的特征向量数是 geometric multiplicity , 可能更小。由于某种原因,特征向量作为 1 列矩阵返回...

对于您的矩阵,A.eigenvects() 返回特征向量 [-2/(-sqrt(17)/2 + 3/2), 1]特征值 -3/2 + sqrt(17)/2 和特征向量 [-2/(3/2 + sqrt(17)/2), 1]特征值 -sqrt(17)/2 - 3/2

如果您希望将特征向量呈现为简单的坐标列表,则以下

[list(tup[2][0]) for tup in A.eigenvects()]

将输出 [[-2/(-sqrt(17)/2 + 3/2), 1], [-2/(3/2 + sqrt(17)/2), 1]] 。 (注意这只是为每个特征值选择一个特征向量,这并不总是你想要的)

关于python - 如何使用 SymPy 查找矩阵的特征值和特征向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43689076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com