【问题标题】:Computing definite integrals in python在python中计算定积分
【发布时间】:2014-10-24 16:33:25
【问题描述】:

我正在尝试编写一个循环来计算每一步的定积分值。函数bigF 非常复杂。简单来说,它集成了一堆关于sfrom s=tn-(n/2)s=tn+(n/2)的术语。整合后,bigF 仍有变量t。所以你可以说bigF(t) = integral(f(s,t)),其中f(s,t)integrate.integ 之后的一大堆术语。在最后一行,我想在bigF 计算f(s,t) 的积分后,在t=tn 处评估bigF(t)

运行后,我收到错误global name 's' is not defined。但是s 只是集成中的一个虚拟变量,因为我正在计算卷积。我需要做什么?

import numpy as np  
import scipy.integrate as integ 
import math 

nt=5001#; %since (50-0)/.01 = 5000
dt = .01#; % =H
H=.01

theta_n = np.ones(nt)
theta_n[1]=0#; %theta_o
omega_n = np.ones(nt)
omega_n[1]=-0.4# %omega_o
epsilon=10^(-6)
eta = epsilon*10
t_o=0

def bigF(t, n):
    return integrate.integ((422.11/eta)*math.exp((5*(4*((eta*t-s-tn)^2)/eta^2)-1)^(-1))*omega, s,tn-(n/2),tn+(n/2))

for n in range(1,4999)
    tn=t_o+n*dt;
    theta_n[n+1] = theta_n[n] + H*bigF(tn, n);

【问题讨论】:

  • ^ 在 Python 中表示 XOR,而不是“幂”。这是代码中多个地方的严重错误。 1^1 为零,这让您大吃一惊。
  • 我猜您的意思是将函数传递给 integ,而不是计算值。因此,您可能应该将 lambda s: 放在您对 integ 的参数前面。

标签: python integration integral


【解决方案1】:

如果你在做卷积,听起来你想要numpy.convolve

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-25
    • 1970-01-01
    • 2021-06-20
    • 2014-03-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 2018-04-11
    相关资源
    最近更新 更多