线性代数Python计算:对称矩阵的对角化

这篇博客介绍了如何利用numpy.linalg.eigh函数计算对称矩阵的特征值和正交特征向量。通过实例展示了如何设置矩阵A,并演示了如何获取特征值和正交矩阵P,以及验证A与对角阵合同的正交矩阵P的过程。文章强调了正确理解和应用线性代数函数在数值计算中的重要性。
摘要由CSDN通过智能技术生成

在这里插入图片描述
numpy.linalg包提供了函数
eigh(A) \text{eigh(A)} eigh(A)
计算并返回参数A表示的对称矩阵的特征值v和由特征向量经过标准正交化后构成正交矩阵P。其中返还的特征值数组v中元素按升序排列,P中的各列对应属于v中特征值的特征向量。
例1 用Python计算使得矩阵 A = ( 2 2 − 2 2 5 − 4 − 2 − 4 5 ) \boldsymbol{A}=\begin{pmatrix}2&2&-2\\2&5&-4\\-2&-4&5\end{pmatrix} A= 222254245 与对角阵合同的正交矩阵 P \boldsymbol{P} P

import numpy as np                              #导入numpy
np.set_printoptions(precision=4, suppress=True) #设置输出精度
A=np.array([[2,2,-2],                           #设置矩阵A
            [2,5,-4],
            [-2,-4,5]])
v,P=np.linalg.eigh(A)                           #计算A的特征值和正交特征向量
print(v)
print(P)
print(np.matmul(np.matmul(P.T,A),P))            #验证A与对角阵合同

程序的第3~5行设置矩阵数据A。第6行调用numpy.linalg包的函数eigh,计算矩阵参数A的特征值v和正交特征向量组成的正交矩阵P。第7、8行分别输出v和P,第9行调用numpy的matmul函数计算矩阵的积 P T A P \boldsymbol{P}^{\text{T}}\boldsymbol{AP} PTAP并输出。运行程序,输出

[ 1.  1. 10.]
[[-0.9314 -0.1464 -0.3333]
 [ 0.1231  0.7351 -0.6667]
 [-0.3426  0.6619  0.6667]]
[[ 1. -0. -0.]
 [ 0.  1.  0.]
 [-0.  0. 10.]]

第1行输出的是 A \boldsymbol{A} A的3个特征值1,1,10。接下来输出的是正交特征向量构成的正交阵 P \boldsymbol{P} P。最后输出验证了 P T A P \boldsymbol{P}^{\text{T}}\boldsymbol{AP} PTAP确实为由特征值构成的对角阵 ( 1 0 0 0 1 0 0 0 10 ) \begin{pmatrix}1&0&0\\0&1&0\\0&0&10\end{pmatrix} 1000100010
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
代码诚可贵,原理价更高。若为AI学,读正版书好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值