Numpy 似乎产生了不正确的特征向量

2023-12-01

我想使用 Numpy 计算特征值和特征向量。这是我的代码:

import numpy as np
from numpy import linalg as LA

lapl = np.array(
       [[ 2, -1, -1,  0,  0,  0],
        [-1,  3,  0, -1,  0, -1],
        [-1,  0,  2, -1,  0,  0],
        [ 0, -1, -1,  3, -1,  0],
        [ 0,  0,  0, -1,  2, -1],
        [ 0, -1,  0,  0, -1,  2]])

w, v = LA.eigh(lapl)

print ('Eigenvalues:', np.round(w,0))
print ('Eigenvectors:', np.round(v,2))

结果如下:

Eigenvalues: [ 0.  1.  2.  3.  3.  5.]
Eigenvectors: [[ 0.41  0.5   0.41 -0.46  0.34  0.29]
               [ 0.41  0.    0.41  0.53  0.23 -0.58]
               [ 0.41  0.5  -0.41 -0.07 -0.57 -0.29]
               [ 0.41  0.   -0.41  0.53  0.23  0.58]
               [ 0.41 -0.5  -0.41 -0.46  0.34 -0.29]
               [ 0.41 -0.5   0.41 -0.07 -0.57  0.29]]

然而,当我在 Wolfram Alpha 中运行相同的矩阵时,我得到了不同的结果 - 特征值相同,但特征向量不同:

v1 = ( 1, -2, -1,  2, -1,  1)
v2 = ( 0, -1,  1, -1,  0,  1)
v3 = ( 1, -1,  0, -1,  1,  0)
v4 = ( 1,  1, -1, -1, -1,  1)
v5 = (-1,  0, -1,  0,  1,  1)
v6 = ( 1,  1,  1,  1,  1,  1)

以下是 Wolfram Alpha 计算的链接:http://bit.ly/1wC9EHJ

为什么我得到不同的结果?我应该在 Python 中做什么才能得到与 Alpha 产生的结果相同的结果?

非常感谢您的帮助!


由于多种原因,结果有所不同:

  1. 您可能注意到了,numpy 矩阵v包含水平堆叠的特征向量columns,当您打印 Wolfram 结果时v1 to v6 as rows.

  2. The scale特征向量(或长度)未定义。所以它通常缩放为长度 1。Wolfram 结果的缩放方式不同,我猜这会引起一些混乱。

  3. 请注意,通过缩放向量,即使sign可以换。这就是为什么积极和消极的因素可能会颠倒。

  4. 最后但并非最不重要的一点是:order特征向量的数量是未定义的,只要它们与相应的特征值具有相同的顺序即可。因此,您还需要查看 Wolfram 的特征值,并可能重新排序v1 to v6因此。 (按特征值大小排序是一种常见的约定。Wolfram 似乎按降序排序,而 numpy 则按升序排序。)

  5. 如果矩阵有非唯一特征值,相应的特征向量可以任意旋转,只要它们跨越相应的子空间即可。但是,在您的示例中似乎并非如此。

考虑到前 4 个问题,结果实际上非常接近。奇点并不重要,因为只有一个零特征值,因此相应的特征向量是唯一的(直到符号和长度)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Numpy 似乎产生了不正确的特征向量 的相关文章

  • 如何配置散景图以具有响应宽度和固定高度

    我使用通过组件功能嵌入的散景 实际上我使用 plot sizing mode scale width 它根据宽度进行缩放并保持纵横比 但我想要一个响应宽度但固定或最大高度 这怎么可能实现呢 有stretch both and scale b
  • 如何将经度和纬度转换为国家或城市?

    我需要将经度和纬度坐标转换为国家或城市 python中有这样的例子吗 提前致谢 我使用谷歌的API from urllib2 import urlopen import json def getplace lat lon url http
  • OpenCV Python 删除图像中的某些对象

    我正在使用带有 opencv 和 numpy 的 python 来检测天文中的星星 例如这个1 https i stack imgur com AKwEJ jpg图片 使用模板匹配 我可以用阈值检测星星 单击 2 2 https i sta
  • 使用 GeoDjango 在坐标系之间进行转换

    我正在尝试将坐标信息添加到我的数据库中 添加django contrib gis支持我的应用程序 我正在写一个south数据迁移 从数据库中获取地址 并向 Google 询问坐标 到目前为止 我认为我最好的选择是使用geopy为了这 接下来
  • 在一张图中同时绘制两个截面强度

    我有一个形状数组 512 512 看起来像 行 x 列 y 密度 z 数组的数量 0 012825 0 020408 0 022976 0 015938 0 02165 0 024357 0 036332 0 031904 0 025462
  • 如何编写高效的配对算法?

    我需要一种算法的帮助 该算法可以有效地将人们分组 并确保以前的配对不会重复 例如 假设我们有 10 位候选人 candidates 0 1 2 3 4 5 6 7 8 9 并假设我们有一个先前匹配的字典 这样每个键值对即candidate
  • Python - 为什么这段代码被视为生成器?

    我有一个名为 mb 的列表 其格式为 Company Name Rep Mth 1 Calls Mth 1 Inv Totals Mth 1 Inv Vol Mth 2 等等 在下面的代码中 我只是添加了一个包含 38 个 0 的新列表 这
  • 在 Python 中比较日期 - 如何处理时区修饰符

    我正在做Python日期比较 假设我有一个这样的约会 Fri Aug 17 12 34 00 2012 0000 我按以下方式解析它 dt datetime strptime Fri Aug 17 12 34 00 2012 0000 a
  • Python 3.x 中的 PIL ImageTk 等效项

    我正在使用 Tkinter 开发一个应用程序 它使用以下数据库png图标的图像文件 为了在应用程序中使用所述图像 我使用 PIL 打开它们Image open 运行它通过ImageTk PhotoImage函数 然后将其传递给小部件构造函数
  • Python NLP 英式英语与美式英语

    我目前正在用Python 进行NLP 工作 然而 在我的语料库中 既有英式英语也有美式英语 实现 实现 我正在考虑将英式英语转换为美式英语 但是 我没有找到一个好的工具 包来做到这一点 有什么建议么 我也找不到包 但试试这个 请注意 我必须
  • 如何通过facebook-sdk python api获取用户帖子?

    我使用 facebook jssdk 授权我的应用程序读取用户个人资料和用户帖子 FB login function response scope user status user likes user photos user videos
  • 超时时杀死或终止子进程?

    我想尽可能快地重复执行子进程 然而 有时这个过程会花费太长的时间 所以我想杀死它 我使用 signal signal 如下所示 ppid pipeexe pid signal signal signal SIGALRM stop handl
  • 如何在Python中正确声明ctype结构+联合?

    我正在制作一个二进制数据解析器 虽然我可以依靠 C 但我想看看是否可以使用 Python 来完成该任务 我对如何实现这一点有一些了解 我当前的实现如下所示 from ctypes import class sHeader Structure
  • 如何在 Tkinter 的 Button 小部件中创建多个标签?

    我想知道如何在 Tkinter 中创建具有多个标签的按钮小部件 如下图所示 带有子标签的按钮 https i stack imgur com jOZRw jpg正如您所看到的 在某些按钮中有一个子标签 例如按钮 X 有另一个小标签 A 我试
  • Scrapy - 不会爬行

    我正在尝试运行递归爬行 由于我编写的爬行不能正常工作 因此我从网络上提取了一个示例并进行了尝试 我真的不知道问题出在哪里 但是爬行没有显示任何错误 谁能帮我这个 另外 是否有任何逐步调试工具可以帮助理解蜘蛛的爬行流程 非常感谢任何与此相关的
  • 从 subprocess.Popen 获取整个输出

    我通过调用 subprocess Popen 得到了一个有点奇怪的结果 我怀疑这与我对 Python 的陌生有很大关系 args cscript USERPROFILE tools jslint js USERPROFILE tools j
  • 对 pandas 数据框中的每一列应用函数

    我如何以更多的熊猫方式编写以下函数 def calculate df columns mean self df means for column in df columns columns tolist cleaned data self
  • Elastic Beanstalk 上的 Django + MySQL - 查询 MySQL 时出错

    当我在 Elastic beanstalk 上托管的 Django 应用程序上查询 MySQL 时 出现错误 错误说 admin login 处出现操作错误 1045 用户 adminDB 172 30 23 5 的访问被拒绝 使用密码 Y
  • 如何指定一个变量作为类或类实例的成员变量?

    在最新的 Python 2 7 x 中 给定类定义内的任何成员变量 该成员变量是否始终处于类级别 因为它是由该类的所有实例共享的单个变量 在类的定义中 如何指定 类定义中的哪些成员变量属于该类 因此由该类的所有实例共享 以及 哪些属于该类的
  • 获取长度为 n 的所有(n-选择-k)组合

    我怎样才能获得长度的所有组合 按顺序 n从数字列表中 例如 给定列表 1 2 3 4 并设置n 3 我怎样才能得到这些结果 1 2 3 1 2 4 1 3 4 2 3 4 For combinations of all possible l

随机推荐