python 线性代数:[10]求方阵的特征值特征向量

 时间:2024-10-15 08:29:13

求方阵(矩阵)的特征撕良滤儆值和特征向量用的是python中的numpy.linagl.eig方法,它需要一个二维数组作为参数,输出一个一位数组(元素为特征值)和一个二维数组(特征向量组),我们还是在例子中学习一哈:

先引入numpy模块python 线性代数:[10]求方阵的特征值特征向量

创建一个对角矩阵,关于diag的用法可以看我前几篇文章python 线性代数:[10]求方阵的特征值特征向量

求矩阵x的特征值和特征向量,特征值保存在a中,特征向量保存在b中python 线性代数:[10]求方阵的特征值特征向量

使用循环的方法,我们来验证一下特征值和特征向量,验证的方法是特征值和特征向量的定义法:

设A为n阶矩阵,若存在常数λ及非零的n维向量x,使得

Ax=λx,

则称λ是矩阵A的特征值,x是A属于特征值λ的特征向量。

python 线性代数:[10]求方阵的特征值特征向量

这是我今天犯的错误:python 线性代数:[10]求方阵的特征值特征向量

这是今天用到的所有代码:

>>> import numpy

>>> x=numpy.diag((1,2,3))

>>> x

array([[1, 0, 0],

[0, 2, 0],

[0, 0, 3]])

>>> a,b=numpy.linalg.eig(x)

>>> a

array([ 1., 2., 3.])

>>> b

array([[ 1., 0., 0.],

[ 0., 1., 0.],

[ 0., 0., 1.]])

>>>

>>>

>>> for i in range(3):

if numpy.dot(x,b[:][i])==a[i]*b[:][i]:

print '正确'

else:print '错误‘

SyntaxError: EOL while scanning string literal

>>> for i in range(3):

if numpy.dot(x,b[:][i])==a[i]*b[:][i]:

print '正确'

else:print '错误'

Traceback (most recent call last):

File "<pyshell#38>", line 2, in <module>

if numpy.dot(x,b[:][i])==a[i]*b[:][i]:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

>>> for i in range(3):

if (numpy.dot(x,b[:][i])==a[i]*b[:][i]).all():

print '正确'

else:print '错误'

正确

正确

正确

>>>

  • C语言如何输出当前文件名
  • 查看android手机的界面布局
  • Visual Studio添加行号的操作
  • Sniffer使用攻略经验:[2]分析SYN数据包
  • QTP10中如何为设置参数化?
  • 热门搜索
    画画图片大全简单 凉拌菜做法大全 结尾摘抄大全 田汉简介 农业机械大全 电动工具大全 艾斯奥特曼怪兽大全 六年级画画图片大全 企业规模怎么填 无底洞怎么加点