- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想用 lambda * M * v = K * v 计算广义特征值问题的特征值,其中 lambda 是特征值,v 是特征向量,M 和 K 是矩阵。假设我们有
K =
1.8000 + 0.0000i -1.0970 + 0.9550i
-1.0970 - 0.9550i 1.8000 + 0.0000i
M =
209 0
0 209
在 Octave 中,如果我执行 [V,D]=eig(K,M)
,我得到:
V =
0.53332 - 0.46429i -0.53332 + 0.46429i
0.70711 + 0.00000i 0.70711 + 0.00000i
D =
Diagonal Matrix
0.34555 0
0 3.25445
但是,如果我在 python 中使用 Scipy 执行 scipy.linalg.eig(K, b=M),我会得到不同的结果:
>>> import numpy as np
>>> import scipy as sp
>>> import scipy.linalg
>>> K = np.mat([[1.8, -1.097+0.995j], [-1.097-0.955j, 1.8]])
>>> M = np.mat([[209., 0.], [0., 209.]])
>>> M
matrix([[ 209., 0.],
[ 0., 209.]])
>>> K
matrix([[ 1.800+0.j , -1.097+0.955j],
[-1.097-0.955j, 1.800+0.j ]])
>>> D, V = sp.linalg.eig(K, b=M)
>>> D
array([ 0.00165333 -1.99202696e-19j, 0.01557155 +0.00000000e+00j])
>>> V
array([[ 0.70710678 +0.00000000e+00j, -0.53332494 +4.64289256e-01j],
[ 0.53332494 +4.64289256e-01j, 0.70710678 -8.38231384e-18j]])
特征值应该是 D 数组中的特征值。
为什么这两个例子的特征值不同?我是不是误会了什么?
编辑:更正拼写错误并重新计算。
编辑:我使用的是 Octave 3.8.2。在 Mac OS X 10.10.3 中。
最佳答案
我想我明白发生了什么。 Scipy 可能提供了正确的特征值。 Octave accepts a second matrix in its eig() function但没有具体说明它的作用。 Matlab's documentation确实说这是针对广义特征值问题,但在 Octave 中添加第二个矩阵似乎对特征值没有影响。这看起来像是 Octave 中的错误。
关于python - Scipy.linalg.eig() 给出与 GNU Octave 的 eig() 不同的特征向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31327630/
我为此进行了很多搜索,但找不到关于“eig”和“eigs”这两种方法有何不同的答案。从他们那里得到的特征值和特征向量有什么区别? 最佳答案 他们使用不同的算法,针对不同的问题和不同的目标量身定制。 e
我使用 eigs 计算较大(数万)的稀疏方阵的特征向量。我想要的是最小的一组特征向量。但是 eigs(A, 10, 'sm') % Note: A is the matrix 运行很慢。 但
有没有办法提高numpy.linalg.eig()和scipy.linalg.eig()的输出精度? 我正在对角化一个非对称矩阵,但我希望在物理基础上得到正负特征值对的实谱。事实上,特征值确实成对出现
我想用 lambda * M * v = K * v 计算广义特征值问题的特征值,其中 lambda 是特征值,v 是特征向量,M 和 K 是矩阵。假设我们有 K = 1.8000 + 0.00
上下文: 我的目标是创建一个 Python3 程序来对大小为 N 的向量 V 进行微分运算。我这样做了,测试了它的基本操作并且它有效(微分、梯度...)。 我尝试以此为基础编写更复杂的方程(Navie
我有以下矩阵 sigma 和 sigmad: 西格玛: 1.9958 0.7250 0.7250 1.3167 西格玛德: 4.8889 1.1944 1.
我尝试在 MATLAB 和 NumPy 上分析 EIG 函数,以比较我的 Macbook Pro(2 GHz,运行 OS X 10.6 的四核 i7)上的性能。与 MATLAB 相比,NumPy EI
我有一个稀疏的实数对称矩阵,我正在尝试将其分解为其 e.v.奇怪的是:如果我使用 eigs 计算前 20 个特征向量,我得到的结果与我计算前 50 个然后选出前 20 个的结果不同。 opts.v0
在 matlab 中,我使用函数“eigs()”获取大型矩阵 (5000x5000) 的几个(大约 10 个)最小特征向量。像这样: [V,UU] = eigs(A, 10,'sm'); 经过一番尝试
我正在尝试编写一个程序来获取任意大小的矩阵 A,然后 SVD 对其进行分解: A = U * S * V' 其中A是用户输入的矩阵,U是由A * A'的特征向量组成的正交矩阵,S是奇异值的对角矩阵,V
我正在尝试使用 eig 查找矩阵的特征值。我用示例数据定义矩阵: A = magic(5) A = 17 24 1 8 15 23 5 7 14
我正在使用 eigs() 函数(来自 Arpack 包)来查找稀疏矩阵的特征值(eigen() 不适用于备用矩阵)。显然,即使在非常简单的情况下,eigs() 也无法找到所有特征值: using Ar
我遇到了这个烦人的问题,但我还没有弄清楚。我有一个矩阵,我想找到特征向量,所以我写: val,vec = np.linalg.eig(mymatrix) 然后我得到了 vec 。我的问题是,当我小组中
我在 Matlab 中使用了一个函数: [V,D] = eig(C); 我看到 V 和 D 始终按升序排序。它总是这样还是应该在获得 V 和 D 值后对它们进行排序? 最佳答案 如果你想保证按升序排序
尝试使用 scipy 的 linalg.eig 来解决广义特征值问题。然后我检查我得到的解决方案,它似乎没有返回正确的特征向量。此外,文档表明返回的向量已归一化,但事实并非如此(尽管这并没有那么困扰我
考虑以下最小示例: function CoderEigFail() %#codegen A = [0 sqrt(2); sqrt(2) 0]; [B C] = eig(A) 当我通过 codegen
考虑以下最小示例: function CoderEigFail() %#codegen A = [0 sqrt(2); sqrt(2) 0]; [B C] = eig(A) 当我通过 codegen
我有一个关于 scipy.linalg.eig 如何计算左右特征向量的问题。也许我误解了一切,但事情似乎对我来说不对...... 从一开始就。为了获得特征值和两个特征向量,我使用了以下内容:ev, l
当我使用 numpy.linalg.eig 时 eValues, eVectors = numpy.linalg.eig(someMatrix) 返回的 eValues 几乎是按降序排列的。 nump
协方差矩阵的特征值应该是实数且非负,因为协方差矩阵是对称的和半正定的。 但是,请看下面的 scipy 实验: >>> a=np.random.random(5) >>> b=np.random.ran
我是一名优秀的程序员,十分优秀!