Sympy没有解决卷积积分

时间:2017-05-02 13:52:49

标签: sympy convolution integral

我正试图解决一些卷积积分,但没有任何运气。

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 个答案:

答案 0 :(得分:1)

一般而言,优先提供有关积分中涉及的参数和变量的任何可用信息,而不是简单地将它们声明为symbols。根据您使用的数值,很明显所有变量和参数都是实数和正数。您可以在定义时提供此信息。通过这些信息,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)