2013-10-02 3 views
0

나는 SymPy 0.7.3에서 다음 통합을 시도 : 나는 이미 conds 인수를 사용하지 않는 성공하지 i, k를 선언 할 때 integer=True를 사용하지 않는 시도고차 삼각 함수 적분을 위해 SymPy가 걸리지 않도록하는 방법이 있습니까?

import sympy 
from sympy import cos, sin, pi 
sympy.var('x, L') 
sympy.var('i, k', integer=True) 

integrand = cos(pi*i*x/L)**2*cos(pi*k*x/L)**2*sin(pi*i*x/L)*sin(pi*k*x/L) 

print(sympy.integrate(integrand, (x, 0, L), conds='none')) 

.

이 적분을 해결할 수있는 다른 해결 방법이 있습니까?

이 적분에 대한 해답은 0입니다.

참고 : 누군가가 관심이있는 경우 SymPy가 멈추는 유사한 유사 구성 요소가 있습니다. 통합에 따른 단순화가 0이라는 용어로 이어질 때 SymPy의 경향이 눈에 띄었습니다. 따라서 문제는 통합을 통해 적용된 단순화 알고리즘에있을 수 있습니다.

+0

을 또한,이를 다시 할 수 있다면 하나의 삼각법 용어만을 사용하는 적분은 도움이 될 것입니다. 여기에는 두 개가 있는데, 하나는'i '이고 하나는'k'를가집니다. – asmeurer

답변

1

불행히도 현재 SymPy의 삼각 함수 통합 기능은 그다지 좋지 않습니다. 다른 형식보다 더 잘 처리 할 수있는 형식이있을 수 있습니다 (입력을 trigsimp'ing하면 도움이되는지 확인할 수 있습니다).

출력을 신경 쓸 필요가없는 경우 복잡한 지수로 재 배열 할 수 있습니다. SymPy는 그것들을 통합하는 것이 훨씬 낫습니다. .rewrite(exp)을 사용하십시오. 그래도 마지막에 .rewrite(sin)simplify을 써야만 trig 함수로 되돌릴 수 있습니다. 불행하게도, 정말이 특정 통합 :(

더 나은 삼각 통합을 위해 오는 도움이되지 않습니다. https://github.com/sympy/sympy/pull/2380 요구에서 작업을 완료해야하고, 또 하나의 알고리즘을 구현했습니다.