2017-09-03 4 views
3

doit()에있는 함수는 sympy이며 가능하면 표현식을 평가합니다. 예를 들어 :symPy에서 symPy의 doit() 함수를 표현식의 바깥 부분에만 적용합니다.

from sympy import * 
u = IndexedBase('u') 
i = symbols('i') 
test = Sum(u[i],(i,1,3)) 
test.doit() 

enter image description here

또한 반환합니다 :

from sympy import * 
u,x = symbols('u, x') 
test = Derivative(u,x) 
test.doit() 

는 상징적 인 차이를 작성하고이를 평가한다. 평가는이 경우에 제로로 밝혀 : 나는 Sum의 내부 Derivative를 원

enter image description here

enter image description here

하지만 경우에? doit() 함수가 너무 멀리 이동합니다.

from sympy import * 
u = IndexedBase('u') 
x = IndexedBase('x') 
i = symbols('i') 
test = Sum(Derivative(u[i],x[i]),(i,1,3)) 
test.doit() 

이 값은 다시 0으로 돌아갑니다. 나는 합계를 확장하고 싶지만 미분을 실제로 평가하지는 않습니다. 는

는 어떻게 출력으로이를 얻을 수 있습니다 enter image description here

: 이것은 다음과 같이 표현 될 것인가? doit() 명령이 외부 함수 ( Sum())에서만 작동하지만 내부 함수 ( Derivative())에서 작동하지 않습니까? 내가 잘못 했니?

답변

1

나는 그것을하는 한 가지 방법을 발견했습니다.

doit() 명령 인수를주의해서 검사하면 deep = False 옵션을 설정하면 평가가 표현식에 너무 깊숙해지는 것을 방지 할 수 있습니다. 또한 일부 징후는 이것을보다 철저하게 통제 할 수 있음을 보여줍니다. 명령 문서는 보여줍니다

이 제한 적분, 금액 및 제품과 마찬가지로 기본적으로 평가되지 않는 객체를 평가합니다. 이 종류의 모든 객체는 '힌트' 을 통해 일부 종을 제외시키지 않거나 '딥'힌트를 '거짓'으로 설정하지 않은 한 으로 재 계산되어 이됩니다.

내 생각에는 '힌트'가 어떻게 활용 될 수 있는지 매우 궁금합니다. 누군가가 '힌트'작업이 얼마나 훌륭한 지에 대한 추가적인 통찰력을 제공 할 수 있다면. 감사.