How to use eig with the nobalance option as in MATLAB?

南楼画角 提交于 2020-01-14 08:49:21

问题


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!



来源:https://stackoverflow.com/questions/20625532/how-to-use-eig-with-the-nobalance-option-as-in-matlab

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!