python数学计算_数学学习如此容易:用Python计算特征值和特征向量

什么是NumPy?

NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。

0dd7912397dda1448dabaf4b3a7c1ea70ef486fe.jpeg?token=cedbc0026e94997035e18f11eab44885&s=2F9923C0D3E48FEB10DCFB0F030080D5

NumPy 的前身 Numeric 最早是由 Jim Hugunin 与其它协作者共同开发,2005 年,Travis Oliphant 在 Numeric 中结合了另一个同性质的程序库 Numarray 的特色,并加入了其它扩展而开发了 NumPy。NumPy 为开放源代码并且由许多协作者共同维护开发。

NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:

一个强大的N维数组对象 ndarray广播功能函数整合 C/C++/Fortran 代码的工具线性代数、傅里叶变换、随机数生成等功能特征值和特征向量的定义

设A是n阶方阵,如果数λ和n维非零列向量x使关系式Ax=λx成立,那么这样的数λ称为矩阵A特征值,非零向量x称为A的对应于特征值λ的特征向量。式Ax=λx也可写成( A-λE)X=0。这是n个未知数n个方程的齐次线性方程组,它有非零解的充分必要条件是系数行列式| A-λE|=0。

特征值 是方程式Ax=ax的标量解(scalar solutions),其中A是一个二维矩阵,而x是一维向量。 特征向量 实际上就是表示特征值的向量。

提示:

特征值和特征向量都是基本的数学概念,并且常用于一些重要的算法中,如 主成分分析(PCA) 算法。PCA可以极大地简化大规模数据集的分析过程。

用NumPy进行计算

计算特征值时,可以求助于numpy.linalg程序包提供的eigvals()子例程。函数eig()的返回值是一个元组,其元素为特征值和特征向量。

可以用子程序包numpy.linalg的eigvals()和eig()函数来获得矩阵的特征值和特征向量,并通过dot()函数(详见本书对应的eigenvalues.py文件)来验算结果。

import numpy as npA = np.mat("3 -2;1 0")print "A\n", Aprint "Eigenvalues", np.linalg.eigvals(A)eigenvalues, eigenvectors = np.linalg.eig(A)print "First tuple of eig", eigenvaluesprint "Second tuple of eig\n", eigenvectorsfor i in range(len(eigenvalues)):print "Left", np.dot(A, eigenvectors[:,i])   print "Right", eigenvalues[i] * eigenvectors[:,i]   print下面来计算一个矩阵的特征值。

a686c9177f3e6709c4632b18bc0c5138fadc55c2.jpeg?token=f3731d41dbf8705dc661c27092d0570b&s=21D1AB6EC75A287D1D7B080A030050DA

1.创建矩阵。

下列代码将创建一个矩阵:

A = np.mat("3 -2;1 0")print "A\n", A下面的矩阵即刚才创建的矩阵。

A[[ 3 -2][ 1  0]] 
2.利用e``ig()函数计算特征值。

这时,我们可以使用eig()子例程:

print "Eigenvalues", np.linalg.eigvals(A)该矩阵的特征值如下:

Eigenvalues [ 2.  1.] 3.利用eig()``函数取得特征值和特征向量。

c8ea15ce36d3d53984e3ebf9b34c2755342ab07b.jpeg?token=af73c63723f5e3c62a7c28020f40f9ac&s=505531C46BF79BCE56FF9411030050CB

利用eig()函数,可以得到特征值和特征向量。注意,该函数返回的是一个元组,其第一个元素是特征值,第二个元素为相应的eigenvectors,其以面向列的方式 排列:

eigenvalues, eigenvectors = np.linalg.eig(A)print "First tuple of eig", eigenvaluesprint "Second tuple of eig\n", eigenvectors特征值eigenvalues和特征向量eigenvectors的值为:

First tuple of eig [ 2.  1.]Second tuple of eig[[ 0.89442719  0.70710678][ 0.4472136   0.70710678]] 4.验算结果。

通过dot()函数计算特征值方程式Ax = ax两边的值,就可以对结果进行验算:

for i in range(len(eigenvalues)):print "Left", np.dot(A, eigenvectors[:,i])   print "Right", eigenvalues[i] * eigenvectors[:,i]   print输出内容如下所示:

Left [[ 1.78885438][ 0.89442719]]Right [[ 1.78885438] [ 0.89442719]]Left [[ 0.70710678] [ 0.70710678]]Right [[ 0.70710678] [ 0.70710678]]

1c950a7b02087bf4c689606f7518992910dfcf24.jpeg?token=690ffb8b8f5d28a283cae14da0fbe2c8&s=D1B53C724F31518206E5BDC10000A0B3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值