求方阵(矩阵)的特征值和特征向量用的是python中的numpy.linagl.eig方法,它需要一个二维数组作为参数,输出一个一位数组(元素为特征值)和一个二维数组(特征向量组),我们还是在例子中学习一哈:先引入numpy模块创建一个对角矩阵,关于diag的用法可以看我前几篇文章求矩阵x的特征值和特征向量,特征值保存在a中,特征向量保存在b中使用循环的方法,我们来验证一下特征值和特征向量,验证的方法是特征值和特征向量的定义法:设A为n阶矩阵,若存在常数λ及非零的n维向量x,使得Ax=λx,则称λ是矩阵A的特征值,x是A属于特征值λ的特征向量。这是我今天犯的错误:这是今天用到的所有代码:>>> import numpy>>> x=numpy.diag((1,2,3))>>> xarray([[1, 0, 0], [0, 2, 0], [0, 0, 3]])>>> a,b=numpy.linalg.eig(x)>>> aarray([ 1., 2., 3.])>>> barray([[ 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 '', line 2, in 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 '错误'正确正确正确>>>
下一篇:构造方程组求解的应用?