- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 numpy 计算对称方形数组的特征值和特征向量。我的数组是:
L = [[ 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.]]
执行 numpy.linalg.eig(L)
的结果如下所示
特征值:
[ 5.00000000e+00,
3.96872205e-16,
1.00000000e+00,
2.00000000e+00,
3.00000000e+00,
3.00000000e+00 ]
特征向量:
[[ -2.88675135e-01 4.08248290e-01 -5.00000000e-01 4.08248290e-01 -4.36632863e-01 4.44614891e-01]
[ 5.77350269e-01 4.08248290e-01 -3.34129212e-16 4.08248290e-01 -1.08813217e-01 -5.41271705e-01]
[ 2.88675135e-01 4.08248290e-01 -5.00000000e-01 4.08248290e-01 5.45446080e-01 9.66568140e-02]
[ -5.77350269e-01 4.08248290e-01 1.06732810e-16 4.08248290e-01 -1.08813217e-01 -5.41271705e-01]
[ 2.88675135e-01 4.08248290e-01 5.00000000e-01 4.08248290e-01 -4.36632863e-01 4.44614891e-01]
[ -2.88675135e-01 4.08248290e-01 5.00000000e-01 -4.08248290e-01 5.45446080e-01 9.66568140e-02]]
结果接近(如果归一化)您在 analytically 时得到的结果计算它们,但似乎在特征值和特征向量中引入了一些错误。有什么方法可以使用 numpy 绕过这些错误吗?
这些错误从何而来? numpy 使用什么算法?
最佳答案
如果你想要解析推导的精度,你需要使用symbolic computation ,这是 Wolfram Alpha、Mathematica 和相关系统使用的。在 Python 中,您可能需要查看 SymPy ,例如。
numerical computation嵌入到您正在使用的 NumPy 包中的那个本质上会受到 floating point numerical representations 的小错误和变迁的影响。 .这种误差和近似值在数值计算中是不可避免的。
这是一个例子:
from sympy import Matrix, pretty
L = Matrix([[ 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,]])
print "eigenvalues:"
print pretty(L.eigenvals())
print
print "eigenvectors:"
print pretty(L.eigenvects(), num_columns=132)
产量:
eigenvalues:
{0: 1, 1: 1, 2: 1, 3: 2, 5: 1}
eigenvectors:
⎡⎛0, 1, ⎡⎡1⎤⎤⎞, ⎛1, 1, ⎡⎡-1⎤⎤⎞, ⎛2, 1, ⎡⎡1 ⎤⎤⎞, ⎛3, 2, ⎡⎡1 ⎤, ⎡0 ⎤⎤⎞, ⎛5, 1, ⎡⎡1 ⎤⎤⎞⎤
⎢⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥ ⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟⎥
⎢⎜ ⎢⎢1⎥⎥⎟ ⎜ ⎢⎢0 ⎥⎥⎟ ⎜ ⎢⎢1 ⎥⎥⎟ ⎜ ⎢⎢-1⎥ ⎢-1⎥⎥⎟ ⎜ ⎢⎢-2⎥⎥⎟⎥
⎢⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥ ⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟⎥
⎢⎜ ⎢⎢1⎥⎥⎟ ⎜ ⎢⎢-1⎥⎥⎟ ⎜ ⎢⎢-1⎥⎥⎟ ⎜ ⎢⎢0 ⎥ ⎢1 ⎥⎥⎟ ⎜ ⎢⎢-1⎥⎥⎟⎥
⎢⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥ ⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟⎥
⎢⎜ ⎢⎢1⎥⎥⎟ ⎜ ⎢⎢0 ⎥⎥⎟ ⎜ ⎢⎢-1⎥⎥⎟ ⎜ ⎢⎢-1⎥ ⎢-1⎥⎥⎟ ⎜ ⎢⎢2 ⎥⎥⎟⎥
⎢⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥ ⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟⎥
⎢⎜ ⎢⎢1⎥⎥⎟ ⎜ ⎢⎢1 ⎥⎥⎟ ⎜ ⎢⎢-1⎥⎥⎟ ⎜ ⎢⎢1 ⎥ ⎢0 ⎥⎥⎟ ⎜ ⎢⎢-1⎥⎥⎟⎥
⎢⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥ ⎢ ⎥⎥⎟ ⎜ ⎢⎢ ⎥⎥⎟⎥
⎣⎝ ⎣⎣1⎦⎦⎠ ⎝ ⎣⎣1 ⎦⎦⎠ ⎝ ⎣⎣1 ⎦⎦⎠ ⎝ ⎣⎣0 ⎦ ⎣1 ⎦⎦⎠ ⎝ ⎣⎣1 ⎦⎦⎠⎦
虽然 ASCII pretty-print 正在努力工作以提供甚至准好看的输出,但您可以看到您正在获得符号计算的精确输出。如果您使用 IPython 并将其设置为显示 LaTeX 输出,您将 get a nicer display .
关于python - 如何计算 numpy 特征值和特征向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28727717/
我对 CBMutableCharacteristic 的特征值可以有多长感到困惑。如果我有一个归档对象数组,我可以将特征值设置为这个归档数组吗?或者我最好为数组中的每个归档对象设置一个单独的特征? 最
我在 Python Sympy 中使用来计算带有变量的矩阵 A 的特征值(例如)。有谁知道如何计算这样的矩阵的特征值?命令 A.eigenvals() 不起作用。例如下面的代码: x = symbol
我正在计算协方差矩阵的特征值,它是实数且对称的半正定矩阵。因此,特征值和特征向量都应该是实数,然而numpy.linalg.eig()返回具有(几乎)零虚部的复数值。 协方差矩阵太大,这里贴不出来,但
我正在尝试对图像使用光谱聚类。我首先计算亲和性矩阵,然后尝试获取特征向量。但是,在 7056x7056 矩阵上,eig() 调用花费的时间太长。关于如何改进这个的任何建议?也许我应该使用不同形式的亲和
我目前正在使用 Dart/Flutter BLE 插件来更好地了解 BLE 设备。 插件: https://pub.dartlang.org/packages/flutter_blue 当我连接到我的
我在使用 Eigen 库时遇到错误,我想做的就是从 Eigen::VectorXf 中减去一个标量。所以,我的代码如下: #define VECTOR_TYPE Eigen::VectorXf #de
假设我有一个对称矩阵 M,它不是正(半)定的,我想计算它的 k 顶(绝对值)特征值(和相应的特征向量)。现在,可以使用截断的 SVD 来做到这一点,它将返回所述特征值的绝对值,然后必须检查符号并找到相
我有一个关于 split 节点的问题。我有 4 个特征,想要预测这个人是否会玩,可能会玩,也可能不会玩。根据信息增益,我将“天气”作为第一个要分割的特征,其中“多雨”、“炎热”和“潮湿”作为分支。下雨
我有一个 ~3000x3000 类似协方差的矩阵,我在该矩阵上计算特征值-特征向量分解(它是一个 OpenCV 矩阵,我使用 cv::eigen() 来完成工作)。 但是,我实际上只需要前 30 个特
我想计算 K*es,其中 K 是一个 Eigen 矩阵(维度 pxp)和 es 是一个 px1 随机二进制 vector ,值为 1。 例如,如果 p=5 和 t=2 一个可能的 es 是 [1,0,
我正在尝试使用 CoreBluetooth 框架从设备读取所有可用服务及其特征值。 - (void)centralManager:(CBCentralManager *)central didDisc
我已经在 Internet 上多次看到这个主题,但从未见过一个完整、全面的解决方案,它可以适用于当前库版本的 sklearn 的所有用例。有人可以尝试使用以下示例解释如何实现吗? In this ex
我的输入 数据框(缩短)如下所示: >>> import numpy as np >>> import pandas as pd >>> df_in = pd.DataFrame([[1, 2, 'a
我想读取低功耗蓝牙(智能)的特征值。我不想使用 gatttool 或 btgatt-client。 d-bus 也没有帮助。我想在 Python 中执行此操作。我在以下内容中找不到任何示例: http
我是一名优秀的程序员,十分优秀!