현재 작업으로 120 * 120 매트릭스의 고유 값과 고유 벡터를 계산해야합니다. 처음에는 Java (Apache Commons Math 라이브러리)와 Python 2.7 (Numpy 라이브러리)에서 간단한 2 x 2 행렬로 계산을 테스트했습니다. I는, 고유 값과 일치하지 않는 문제가 아래와 같이 표시 :자바와 파이썬으로 고유 벡터 계산시 차이점
고유 벡터의 출력 {real_value + imaginary_value로서 도시//Java
import org.apache.commons.math3.linear.EigenDecomposition;
import org.apache.commons.math3.linear.MatrixUtils;
import org.apache.commons.math3.linear.RealMatrix;
public class TemporaryTest {
public static void main(String[] args) {
double[][] testArray = {{2, -1}, {1, 1}};
RealMatrix testMatrix = MatrixUtils.createRealMatrix(testArray);
EigenDecomposition decomposition = new EigenDecomposition (testMatrix);
System.out.println("eigenvector[0] = " + decomposition.getEigenvector(0));
System.out.println("eigenvector[1] = " + decomposition.getEigenvector(1));
}
; real_value + imaginary_value} : 파이썬에서
//Java output
eigenvector[0] = {-0.8660254038; 0}
eigenvector[1] = {0.5; 1}
같은 코드 만 사용 NumPy와 라이브러리 : 유사하게 표시됩니다 파이썬에서 고유 벡터의
# Python
import numpy as np
from numpy import linalg as LA
w, v = LA.eig(np.array([[2, -1], [1, 1]]))
print (v[:, 0])
print (v[:, 1])
출력, [실제 +의 IMAG 리얼 + IMAG] :
[ 0.35355339+0.61237244j 0.70710678+0.j ]
[ 0.35355339-0.61237244j 0.70710678-0.j ]
내 관심사는 왜 그 벡터가 다른가요? 제가 누락 된 것이 있습니까? Ty 어떤 종류의 도움이나 조언이든지
자바 출력의 벡터는 고유 벡터가 아닙니다. 'getEigenvector (i)'는'RealVector'를 반환하지만 여러분의 행렬은 복잡한 고유 값과 고유 벡터를 가지고 있습니다. 아파치 커먼즈 수학 라이브러리가 복잡한 고유 벡터를 어떻게 표현하는지 모르겠습니다. 라이브러리에 익숙한 누군가는 자바 함수에서 반환 된 실제 값을 실제 복잡한 고유 벡터로 변환하는 데 도움이되기를 바랍니다. –
나는 동의하지만 알 수 있듯이 실제 값조차 일치하지 않습니다. -/ – borgmater
자바는 정규화되지 않았습니다. – user3684792