我有一个关于加速度a( t )的函数,如果我对t积分两次,就可以找到位置x(t)。我正试图找到t= 10秒的位置。
因为a(t)不是多变量,所以我在使用Scipy dblquad函数来计算我需要的二重积分时遇到了问题。请看我到目前为止所拥有的:
def a(t):
return (2.5 / (1 + math.exp((t-8)/0.8)))
def upperbound():
return 10
def lowerbound():
return 0
x = dblquad(a,0,10,lowerbound,upperbound)这不起作用,因为从我收集的数据来看,dblquad需要一个多变量的a(t)。有人能帮上忙吗?
发布于 2017-10-26 03:50:08
您可以使用scipy的单变量集成两次来实现这一点
import math
from scipy.integrate import quad
def a(t):
return (2.5 / (1 + math.exp((t-8)/0.8)))
lb, ub = 0, 10
integral = quad(lambda t: quad(a, 0, t)[0], lb, ub)[0]
print(integral)
# 86.28470375472537这是必要的,因为您想要实现的不是对两个变量的函数进行积分,而是对一个变量的函数进行两次积分。在上面的积分语句中,内部quad对函数进行了一次积分,但将积分保持为t的函数。外部quad对函数进行了超过定义限制的第二次积分。
注意,有必要从quad的输出中获取第一个参数,因为它输出一个元组。第二个参数是数值积分误差的上界。
https://stackoverflow.com/questions/46940556
复制相似问题