线性代数Python计算:对称矩阵的对角化
numpy.linalg包提供了函数
eigh(A)\text{eigh(A)}eigh(A)
计算并返回参数A表示的对称矩阵的特征值v和由特征向量经过标准正交化后构成正交矩阵P。其中返还的特征值数组v中元素按升序排列,P中的各列对应属于v中特征值的特征向量。
例1 用Python计算使得矩阵A=(22−225−4−2−45)\boldsymbol{A}=\begin{pmatrix}2&2&-2\\2&5&-4\\-2&-4&5\end{pmatrix}A=⎝⎛22−225−4−2−45⎠⎞与对角阵合同的正交矩阵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函数计算矩阵的积PTAP\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。最后输出验证了PTAP\boldsymbol{P}^{\text{T}}\boldsymbol{AP}PTAP确实为由特征值构成的对角阵(1000100010)\begin{pmatrix}1&0&0\\0&1&0\\0&0&10\end{pmatrix}⎝⎛1000100010⎠⎞。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
线性代数Python计算:对称矩阵的对角化相关推荐
- 线性代数Python计算导引
线性代数是深度学习的数学基础之一,理论完备,方法经典.Python是当下AI系统首选开发工具,易学好用.教学中攒下两者结合的多个课题,覆盖大学理工科<线性代数>课程内容,写成博文以飨读者. ...
- python判断矩阵是否对称_矩阵的特征分解(推导+手算+python计算+对称矩阵的特征分解性质)...
1. 前言 最近几天一直在学习矩阵的知识,恶补了特征分解和SVD算法,发现网上很多资料都是不全的,所以想记录一下这里面的特征分解推导过程. 2.矩阵的进阶知识 2.1 特征分解(谱分解)=> ...
- 矩阵的特征分解(推导+手算+python计算+对称矩阵的特征分解性质)
文章目录 1. 前言 2.矩阵的进阶知识 2.1 特征分解(谱分解)=>只可以用在方阵上 2.1.1 特征分解的原理 2.1.2 特征分解的合理性 2.1.3 特征分解的计算 2.1.4 对称矩 ...
- 线性代数Python计算:向量的模及向量间的夹角
numpy的dot函数计算两个向量α\boldsymbol{\alpha}α和β\boldsymbol{\beta}β的内积: dot(a,b)\text{dot(a,b)}dot(a,b) 两个参数 ...
- 线性代数Python计算:向量空间坐标变换
向量空间中两组基AAA和BBB之间相互线性表示构成的矩阵为过渡阵.若两组基中之一为自然基,譬如AAA为自然基,则基BBB的各向量在自然基下的坐标即构成基AAA到基BBB的过渡阵P\boldsymbol ...
- 线性代数Python计算:向量组的最大无关组计算
对给定的mmm-维向量组 α1=(a11a21⋮am1),α2=(a12a22⋮am2),⋯,αn=(a1na2n⋮amn)\boldsymbol{\alpha}_1=\begin{pmatrix}a ...
- 线性代数Python计算:线性变换的值域与核
设数域PPP上的向量空间PnP^nPn的线性变换TTT,在某个基下其变换矩阵A=(α1,α2,⋯,αn)\boldsymbol{A}=(\boldsymbol{\alpha}_1,\boldsymbo ...
- 线性代数Python计算:Python的布尔代数
设B={0,1}B=\{0,1\}B={0,1},定义BBB上的或.与.非运算如下 构成布尔代数(B,∨,∧,¬)(B,\vee,\wedge,\neg)(B,∨,∧,¬). Python中所有的关系 ...
- 线性代数Python计算:消元法与矩阵初等变换
对线性方程组 {a11x1+a12x2+⋯+a1nxn=b1a21x1+a22x2+⋯+a2nxn=b2⋯⋯⋯am1x1+am2x2+⋯+amnxn=bn\begin{cases}a_{11}x_1+ ...
- 线性代数Python计算:Python数系
Python作为计算机程序设计语言,受计算机物理结构的限制,无法表示出完整的整数集合ℤ.有理数集合ℚ.实数集合ℝ及复数集合ℂ.然而,Python所模拟的ℤ.ℚ.ℝ和ℂ在大多数实际应用中可以满足需求. ...
最新文章
- solve Ax+By+C=0
- 在java中构建高效的结果缓存
- 监督学习 | ID3 C4.5 决策树原理
- 小c下载样式插件Xiaocstyle适用于emlog系统
- linux lockf文件锁存在,进程停止,Linux文件锁学习-flock, lockf, fcntl
- linux命令 选项,Linux常用命令及选项
- lua反射的一个例子
- 机器人开发--编码器
- AXI总线的一些知识
- HDU - 1234 开门人和关门人
- 计算机房宣传标语,机房安全标语
- day03_20170514_字符编码/文件存储/函数(一)
- Vue在线编译器:vue-running
- 华为服务器centos安装系统版本,华为服务器安装centos7.4
- 服务器宝塔安装Jenkins
- SpringBoot整合Elasticsearch详细步骤以及代码示例(附源码)
- 在Windows10上安装CentOS7子系统
- 骨传导耳机是什么意思,骨传导耳机的好处具体有哪些
- 抵抗敌人的攻击_英雄联盟:很抗打的中单英雄,冲在前排可以抵挡敌人的强势攻击!...
- python-图像分类数据集,给三级目录里的文件打标签,并且标签根据第二级级目录自动生成