Continuum Anaconda 분포의 Sympy 0.7.2를 사용하여 (자체 스택을 빌드하기에는 너무 싫어서 싫어하지 않음) 복잡한 행렬 대수를 수행 할 때이 문제가 계속 발생합니다. 기본 함수 인 '1j'를 'I'로 바꿉니다. 다른 산술 연산과 잘 작동하지 않기 때문에 기본적으로 형태를 유지하고 요약 된 결과를 계산하는 대신 요소를 추가하기 때문에 성가신 일입니다. 예 :Sympy 복합 행렬 반전/연산
>>> T
[ 1, 1.0 - 1.0*I]
[1.0 + 1.0*I, 0]
>>> T.inv()
[-(0.5 + 0.5*I)*(1.0 - 1.0*I) + 1, 0.5 - 0.5*I]
[ 0.5 + 0.5*I, -0.5]
>>> T.inv()*T
[-(0.5 + 0.5*I)*(1.0 - 1.0*I) + 1 + (0.5 - 0.5*I)*(1.0 + 1.0*I), (1.0 - 1.0*I)*(
-(0.5 + 0.5*I)*(1.0 - 1.0*I) + 1)]
[ 0,
(0.5 + 0.5*I)*(1.0 - 1.0*I)]
T.INV() * T가 분명히있다 (단위 행렬이 아닌 숫자)이 아닌 것을 엉망 1이다 Beacause은 명확하게 지각 (도 서식 disgusti이고 어떤 이유로 든). "I"를 "1j"로 수동 교체하면 이 표시됩니다. 위의 결과는 잘못이 아닙니다().하지만 "단위 행렬을 찾을 수 없습니다"라는보다 복잡한 문제의 경우 매우 신속하게 처리 할 수 있습니다.
나는 문자열로 행렬을 변환하고, '나는'.... 수동 '1J'로
#If A is a complex matrix, Let AI be its inverse.
A_STR = string(A).replace("I", "1j").replace("\n", "")
exec("AI=Matrix("+str(A.shape()).replace("(", "").replace(")", "")+"," + A_STR + ")")
를 대체하는 것입니다 내가 현재 가지고있는 한,보다 더 나은 솔루션이 궁금하네요
감사합니다.
대단히 감사합니다. –