How to use eig with the nobalance option as in MAT

2019-06-20 05:04发布

问题:

In MATLAB I can issue the command:

[X,L] = eig(A,'nobalance'); 

In order to compute the eigenvalues without the balance option.

What is the equivalent command in NumPy? When I run the NumPy version of eig, it does not produce the same result as the MATLAB result with nobalance turned on.

回答1:

NumPy can't currently do this. As horchler said, there has been an open ticket open for this for a while now. It is, however, possible to do it using external libraries. Here I write up how to do it using the Python bindings to the NAG library

http://www.walkingrandomly.com/?p=5303

It should be possible to do something similar using any interface to LAPACK such as the Intel MKL etc.



回答2:

You can also consider installing GNU Octave and embed it in Python using oct2py. For example, to determine the eigenvalue of matrix A without balancing,

from oct2py import octave
...
[X,L] = octave.eig(A)

The function eig in Octave does not perform balancing of matrix A.

If you want to balance the matrix A, you can go ahead and write:

from oct2py import octave
...
A = octave.balance(A)
[X,L] = octave.eig(A)

oct2py can be downloaded from this website: https://pypi.python.org/pypi/oct2py

Before you install oct2py, you need to make sure SciPy and GNU Octave have been already installed. Good luck!