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

2025-10-24 16:44:20

求方阵(矩阵)的特征值和特征向量用的是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 '错误'

    正确

    正确

    正确

    >>> 

(共篇)上一篇:计算矩阵距离|下一篇:
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢