首页 > 解决方案 > Python 中 [V, D] = eig(A, B) 的等效代码是什么?广义特征值问题

问题描述

我正在尝试用 Java 解决广义特征值问题,我目前正在使用 OjAlgo,但它无法解决随机对称AB. 仅正定对称AB暂时。我的AB随机对称的。不是肯定的

所以这次我会尝试使用Python。从 Java 调用 Python 代码。我有一个问题。

调用此 MATLAB 代码:

[V, D] = eig(A, B)

将解决这个问题:

A*V = B*V*D

[V, D] = eig(A, B)Python 或其他可以从 Java 控制的语言/库中的等效代码是什么?

当前解决此问题的设置,我目前一直在使用 GNU Octave,通过编写一个文件AB,然后使用ProcessBuilder类来运行一个.m文件,该文件将加载该文件,AB然后执行其过程,然后保存一个文件VD,然后,Java将读取该VD文件。是的......它正在工作。但我认为必须有更好的方法来做到这一点?

看看我的项目。这是Java中的图像分类。它与耶鲁数据库和 Jaffed 数据库一起使用。很好。

https://github.com/DanielMartensson/jFaces---Image-classification-in-Java-

示例我如何解决AB八度:

>> A
A =

   3.509281  -0.290541   0.849415   2.013013   0.063750
  -0.290541   1.818891  -0.474449   0.278068  -1.287872
   0.849415  -0.474449   1.340873   0.739895   0.882484
   2.013013   0.278068   0.739895   1.645680   0.414309
   0.063750  -1.287872   0.882484   0.414309   4.045986

>> B
B =

   5.4158   2.8121   2.6082   3.7357  -3.8168
   2.8121   6.7481   1.6286   2.6166  -1.5062
   2.6082   1.6286   3.9394   1.7020  -3.1379
   3.7357   2.6166   1.7020   3.2538  -2.6001
  -3.8168  -1.5062  -3.1379  -2.6001   3.4518

>> [V, D] = eig(A, B)
V =

   0.300780  -0.195288   0.209747   0.946256   1.940305
   0.366251  -0.228222  -0.050912  -0.057503  -0.652739
   0.243410   0.292928   0.295219  -0.315470   2.340029
  -0.538232   0.328562  -0.767245  -0.821764   0.776394
   0.098344  -0.251445   0.047482  -0.026229   4.613170

D =

Diagonal Matrix

     0.086670            0            0            0            0
            0     0.219835            0            0            0
            0            0     0.420197            0            0
            0            0            0     1.207737            0
            0            0            0            0   157.713007

>>

标签: javapythonnumpyoctaveeigenvalue

解决方案


推荐阅读