【python】求矩阵的特征值和特征向量

本文介绍了如何使用Python的NumPy库中的np.linalg.eig函数同时求解矩阵A的特征值和特征向量,展示了如何处理复数特征值和提取最大特征值及其对应的特征向量。
摘要由CSDN通过智能技术生成

使用np.linalg.eig同时求特征值和特征向量

import numpy as np

#输入矩阵
A = np.array([[1, 1/2, 1/6, 1/9],
              [2, 1, 1/3, 1/5],
              [6, 3,1,1/2],
              [9, 5,2,1]])

#求解特征值和其对应的特征向量
eigval,eigvec = np.linalg.eig(A)
for i in range(len(eigval)):
    print(f'特征值:{eigval[i]}\n对应的特征向量:\n{np.array_str(eigvec[:,i], precision=2)}\n')

# 求出最大特征值和对应的特征向量
index = np.argmax(eigval)  # 最大特征值下标
eigval_max = np.real(eigval[index])  # 最大特征值
vector = eigvec[:,index]  # 最大特征值对应特征向量
vector_final = np.transpose((np.real(vector)))  # 只求出向量的实部

print(f'最大特征值为:{eigval_max}\n对应的特征向量:\n{vector_final}')

返回结果

特征值1:4.01+0.00j
对应的特征向量1:[0.09+0.j 0.17+0.j 0.48+0.j 0.86+0.j]

特征值2:-0.00+0.18j
对应的特征向量2:[-0.03-0.07j -0.06-0.02j -0.16+0.43j 0.88+0.j ]

特征值3:-0.00-0.18j
对应的特征向量3:[-0.03+0.07j -0.06+0.02j -0.16-0.43j 0.88-0.j ]

特征值4:0.00+0.00j
对应的特征向量4:[ 2.29e-01+0.j -6.88e-01+0.j 6.88e-01+0.j -4.38e-15+0.j]

注意

1.np.linalg.eig(A)返回的eigvec是一个矩阵,而特征向量是每一列
在这里插入图片描述
2.特征向量概念,这里求出的特征向量不是唯一的,不一定是基础解系
3.
np.array_str() 是 NumPy 库中的函数,用于将数组转换为字符串。在上述代码中,我们使用 np.array_str() 函数来将特征向量的数组以字符串形式输出。允许指定精度 (precision),以及其他格式化选项。
在这里,我们使用 np.array_str(eigvec[:, i], precision=2),其中 eigvec[:, i] 是第 i 列的特征向量数组,而 precision=2 表示要显示的小数点后的位数为两位。这样可以确保特征向量以更整洁的方式显示。

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值