目录
{1}几个例子🌰
{2}特征值
{3}奇异矩阵
{4}特征向量
{5}特征值和特征向量的计算方法
特征值性质
特征向量性质
{6}巩固练习
{7}迭代法
什么时候收敛?收敛速度如何?
{8}雅可比迭代法
{1}几个例子🌰
例1:
import numpy as np
A = np.array([[3,-1],[-1,3]])
print('输出矩阵A:\n',A)
eigenvalue, eigenvector = np.linalg.eig(A)
print('输出矩阵A特征值eigenvalue:\n',eigenvalue)
print('输出矩阵A特征向量eigenvector:\n',eigenvector)
输出:
输出矩阵A:
[[ 3 -1]
[-1 3]]
输出矩阵A特征值eigenvalue:
[4. 2.]
输出矩阵A特征向量eigenvector:
[[ 0.70710678 0.70710678]
[-0.70710678 0.70710678]]
例2:
import numpy as np
A = np.array([[-1,1,0],[-4,3,0],[1,0,2]])
print('打印矩阵A:\n',A)
eigenvalue, eigenvector = np.linalg.eig(A)
print('打印矩阵A特征值:\n',eigenvalue)
print('打印矩阵A特征向量:\n',eigenvector)
输出:
打印矩阵A:
[[-1 1 0]
[-4 3 0]
[ 1 0 2]]
打印矩阵A特征值:
[2.+0.00000000e+00j 1.+1.57775604e-09j 1.-1.57775604e-09j]
打印矩阵A特征向量:
[[ 0. +0.00000000e+00j -0.40824829+3.22058103e-10j
-0.40824829-3.22058103e-10j]
[ 0. +0.00000000e+00j -0.81649658+0.00000000e+00j
-0.81649658-0.00000000e+00j]
[ 1. +0.00000000e+00j 0.40824829+3.22058103e-10j
0.40824829-3.22058103e-10j]]
例子3:
import numpy as np
A = np.array([[-2,1,1],[0,2,0],[-4,1,3]])
print('输出矩阵A:\n',A)
eigenvalue, eigenvector = np.linalg.eig(A)
print('输出矩阵特征值:\n',eigenvalue)
print('输出矩阵特征向量:\n',eigenvector)
输出:
输出矩阵A:
[[-2 1 1]
[ 0 2 0]
[-4 1 3]]
输出矩阵特征值:
[-1. 2. 2.]
输出矩阵特征向量:
[[-0.70710678 -0.24253563 0.30151134]
[ 0. 0. 0.90453403]
[-0.70710678 -0.9701425 0.30151134]]
{2}特征值
{3}奇异矩阵
判断矩阵是不是方阵(即行数和列数相等的矩阵。若行数和列数不相等,那就谈不上奇异矩阵和非奇异矩阵)。
看矩阵的行列式|A|是否等于0,若等于0,称矩阵A为奇异矩阵;若不等于0,称矩阵A为非奇异矩阵。
若|A|≠0可知矩阵A可逆,可逆矩阵就是非奇异矩阵,非奇异矩阵也是可逆矩阵。
若A为奇异矩阵,则AX=0有无穷解,AX=b有无穷解或者无解。
若A为非奇异矩阵,则AX=0有且只有唯一零解,AX=b有唯一解。
{4}特征向量
一旦己知矩阵的特征值,则通过解上图中式(3.73)给出的齐次线性方程组,可获得对应的特征向量。由于是一个奇异矩阵,其对应的简约矩阵至少有1行元素全部为 0,因此,该方程组有无穷多个解。式(3.72) 一个明显的性质是,如果是与特征值对应特征向量,则其与标量的乘积也为特征向量,a可以为任意非0常数,如果需要,特征向量可以写成单位长度为1的形式。
对于nxm矩阵M来说,当且仅当,对任意的i和j,有,则该矩阵M为对称矩阵。也就是说,一个矩阵的元素相对主对角线对称,则称该矩阵为对称矩阵。
由实数元素组成的对称矩阵M的特征值为实数。
对称矩阵M的两个不同特征值分别对应的特征向量正交。
{5}特征值和特征向量的计算方法
特征值性质
特征向量性质
n 阶矩阵A 的互不相等的特征值对应的特征向量线性无关。
若为矩阵A的重特征值,则属于特征值的线性无关的特征向量的个数不超过其特
征值的重数。
若为特征值对应的特征向量,则其非零线性组合(为不全为零
的常数)也是属于特征值入的特征向量。
{6}巩固练习
例1
解答
import numpy as np
A = np.array([[1,2,2],[2,1,2],[2,2,1]])
print('输出矩阵A:\n',A)
eigenvalue, eigenvector = np.linalg.eig(A)
print('输出矩阵特征值:\n',eigenvalue)
print('输出矩阵特征向量:\n',eigenvector)
输出矩阵A:
[[1 2 2]
[2 1 2]
[2 2 1]]
输出矩阵特征值:
[-1. 5. -1.]
输出矩阵特征向量:
[[-0.81649658 0.57735027 0.03478434]
[ 0.40824829 0.57735027 -0.72385699]
[ 0.40824829 0.57735027 0.68907264]]
例2
解答
import numpy as np
A = np.array([[2,-3,1],[1,-2,1],[1,-3,2]])
print('输出矩阵A:\n',A)
eigenvalue, eigenvector = np.linalg.eig(A)
print('输出矩阵特征值:\n',eigenvalue)
print('输出矩阵特征向量:\n',eigenvector)
输出矩阵A:
[[ 2 -3 1]
[ 1 -2 1]
[ 1 -3 2]]
输出矩阵特征值:
[1.45253876e-15 1.00000000e+00 1.00000000e+00]
输出矩阵特征向量:
[[ 0.57735027 0.86169762 -0.01087995]
[ 0.57735027 0.39386989 0.31294319]
[ 0.57735027 0.31991206 0.94970953]]
例3
解答
import numpy as np
A = np.array([[2,-1,2],[5,-3,3],[-1,0,-2]])
print('输出矩阵A:\n',A)
eigenvalue, eigenvector = np.linalg.eig(A)
print('输出矩阵特征值:\n',eigenvalue)
print('输出矩阵特征向量:\n',eigenvector)
输出矩阵A:
[[ 2 -1 2]
[ 5 -3 3]
[-1 0 -2]]
输出矩阵特征值:
[-0.99999912+1.51927785e-06j -0.99999912-1.51927785e-06j
-1.00000175+0.00000000e+00j]
输出矩阵特征向量:
[[-0.57735027+8.77151627e-07j -0.57735027-8.77151627e-07j
0.57735027+0.00000000e+00j]
[-0.57735078+0.00000000e+00j -0.57735078-0.00000000e+00j
0.57734926+0.00000000e+00j]
[ 0.57734976-1.75430479e-06j 0.57734976+1.75430479e-06j
-0.57735128+0.00000000e+00j]]
{7}迭代法
什么时候收敛?收敛速度如何?
{8}雅可比迭代法
常数向量:
参考:
https://www.cnblogs.com/brightyuxl/p/9296623.html
雅可比(Jacobi)迭代法 - 百度文库
利用Python计算各个矩阵的特征向量和最大特征值 python 求特征值_恋上一只猪的技术博客_51CTO博客