广义特征值问题

发布于 2024-11-25 01:34:21 字数 351 浏览 1 评论 0原文

我正在尝试将广义特征值问题转换为正常的特征值计算。

我有这样的代码:

[V,D,flag] = eigs(A, T);

现在我将其转换为:

A1 = inv(T)*A;
[V1,D1,flag1] = eigs(A1);

我不应该得到相同的结果吗?根据我在 Matlab 文档中的理解,第一个方程求解:

A*V = B*V*D

第二个方程求解:

A*V = V*D

我遗漏了什么吗?

谢谢!!

I'm trying to convert a generalized eigenvalue problem into a normal eigenvalue calculation.

I have this code:

[V,D,flag] = eigs(A, T);

Now I convert it into:

A1 = inv(T)*A;
[V1,D1,flag1] = eigs(A1);

Shouldn't I get the same result? From what I understand in the Matlab documentation, the first equation solves:

A*V = B*V*D

and the second one solves:

A*V = V*D

am I missing something?

Thanks!!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

垂暮老矣 2024-12-02 01:34:21

一个简单的例子:

A = rand(4); B = randn(4); B = B'*B;         %'# some matrices
[VV,DD] = eig(B\A);
[V,D] = eigs(A,B);
V = bsxfun(@rdivide, V, sqrt(sum(V.*V)));    %# make: norm(V(:,i))==1

结果:

V =
     -0.64581       0.8378      0.77771      0.50851
      0.70571     -0.51601     -0.32503     -0.70623
      0.27278     0.076874     -0.51777      0.25359
      0.10245      0.16095     -0.14641     -0.42232
VV =
     -0.64581       0.8378     -0.77771     -0.50851
      0.70571     -0.51601      0.32503      0.70623
      0.27278     0.076874      0.51777     -0.25359
      0.10245      0.16095      0.14641      0.42232
D =
       17.088            0            0            0
            0      0.27955            0            0
            0            0     -0.16734            0
            0            0            0     0.027889
DD =
       17.088            0            0            0
            0      0.27955            0            0
            0            0     -0.16734            0
            0            0            0     0.027889

注意:特征值的排序并不总是相同,符号约定也可能不同......

A quick example:

A = rand(4); B = randn(4); B = B'*B;         %'# some matrices
[VV,DD] = eig(B\A);
[V,D] = eigs(A,B);
V = bsxfun(@rdivide, V, sqrt(sum(V.*V)));    %# make: norm(V(:,i))==1

The result:

V =
     -0.64581       0.8378      0.77771      0.50851
      0.70571     -0.51601     -0.32503     -0.70623
      0.27278     0.076874     -0.51777      0.25359
      0.10245      0.16095     -0.14641     -0.42232
VV =
     -0.64581       0.8378     -0.77771     -0.50851
      0.70571     -0.51601      0.32503      0.70623
      0.27278     0.076874      0.51777     -0.25359
      0.10245      0.16095      0.14641      0.42232
D =
       17.088            0            0            0
            0      0.27955            0            0
            0            0     -0.16734            0
            0            0            0     0.027889
DD =
       17.088            0            0            0
            0      0.27955            0            0
            0            0     -0.16734            0
            0            0            0     0.027889

Note: The eigenvalues are not always sorted the same, also the sign convention might be different...

孤者何惧 2024-12-02 01:34:21

首先检查 T 是否可逆。其次,我确定 D = D1V = V1 达到比例因子。检查V1 的每一列是否与V 的相应列在比例因子上相同(即查看V./V1) 。

First check if T is invertible. Second, I'm sure D = D1 and that V = V1 up to a scale factor. Check if each column of V1 is the same as the corresponding column of V up to a scale factor (i.e. look at V./V1).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文