gpt4 book ai didi

python - eig(A) 和 diag(A) 返回什么,其中 A 是矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 23:56:16 27 4
gpt4 key购买 nike

我正在尝试使用 numpy 包将一些 MATLAB 代码转换为 Python,但不确定 eig(A)diag(A) 返回什么,其中 A 是我的问题标题的矩阵。

例如,我在 matlab 中有以下代码:

[U,autoval] = eig(S);
[d,i] = sort(-diag(autoval));

% where S is a 2 x 2 matrix, [1.1762 1.2076; 1.2076 1.5364]

在 numpy 中,我可以通过以下方式复制第一行:

autoval, U = np.linalg.eig(S)

我必须完成订单。纠正我,如果我在这里错了,在 MATLAB 中,第一行 eig(S) 返回的是特征向量,第二行是特征值,它与 python 相反?

但是在第二行中,在 MATLAB 中,返回的值如下:

d = [-2.5772 -0.1353];
i = [2 1];

在 python 中,在我运行 d, i = np.msort(- np.diag(autoval)) 之后:

d = array([-0.1353, -2.5772]) # why is the order here different
i = array([0.0, 0.0]) # why is this different

提前致谢,干杯!!!

最佳答案

矩阵的特征值没有内在顺序。 MATLAB 中的两个示例代码或 Numpy以不确定的未排序顺序返回特征值。仅确定特征值索引与特征向量矩阵中相应列的关系。

np.msort仅返回排序后的数组,而不是包含排序后索引的附加数组 MATLAB code做。你碰巧没有注意到这一点,因为np.diag返回一个对角矩阵,排序后可以分成两行 di

如果您想要索引,请使用 np.argsort .

另请注意,在 Numpy 情况下,特征值以一维数组形式返回,但在 MATLAB case 中以二维矩阵形式返回.因此调用np.diag在 Numpy 案例中不需要。

关于python - eig(A) 和 diag(A) 返回什么,其中 A 是矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57633948/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com