2017-05-02 2 views
0

일부 컨볼 루션 적분을 풀려고 노력하고 있지만 행운이 없습니다.Sympy가 컨볼 루션 적분을 풀지 않습니다

import matplotlib.pyplot as plt 
import numpy as np 
import sympy as sp 

t1 = 0.01 
t1_sym = sp.Symbol('t_1') 
F0 = 30e3 
F0_sym = sp.Symbol('F_0') 
m = 4000 
m_sym = sp.Symbol('m') 
k = 5000e3 
k_sym = sp.Symbol('k') 
omega0_sym = sp.sqrt(k_sym/m_sym) 
t = sp.Symbol('t') 
tau = sp.Symbol(r'\tau') 

F1_sym= 2*F0_sym*tau/t1_sym 


x1_sym = sp.integrate((F1_sym*sp.sin(omega0_sym*(t-tau))/(omega0_sym*m_sym)) ,(tau,0,t)) 

나는 모든 통찰력에 대해 정말로 감사 할 것입니다.

답변

1

일반적으로 간단하게 symbols이라고 선언하는 대신 정수에 관련된 매개 변수와 변수에 대해 sympy를 제공하는 것이 좋습니다. 사용하고있는 수치로부터 모든 변수와 매개 변수가 실제적이고 긍정적임을 분명히 알 수 있습니다. Sympy를 정의 할 때이 정보를 제공 할 수 있습니다. 이 정보를 sympy는 (이 올바른지 아닌지 내가 확인하는 당신에게 그것을 떠나)

t1_sym = sp.Symbol('t_1', positive = True) 
F0_sym = sp.Symbol('F_0', positive = True) 
m_sym = sp.Symbol('m', positive = True) 
k_sym = sp.Symbol('k', positive = True) 
omega0_sym = sp.sqrt(k_sym/m_sym) 
t = sp.Symbol('t', positive = True) 
tau = sp.Symbol(r'\tau', positive = True) 

F1_sym= 2*F0_sym*tau/t1_sym 
x1_sym = sp.integrate((F1_sym*sp.sin(omega0_sym*(t-tau))/(omega0_sym*m_sym)) ,(tau,0,t)) 
print(x1_sym) 

2*F_0*t/(k*t_1) - 2*F_0*sqrt(m)*sin(sqrt(k)*t/sqrt(m))/(k**(3/2)*t_1)

+1

오른쪽 키 포인트는 것을되는 통합에 대한 식을 제공합니다 가정은'omega0_sym'이 진짜임을 보장합니다. – FTP

+0

생명의 은인 : D – AndrazStrnisnik