在Python中计算定积分

2 投票
1 回答
1747 浏览
提问于 2025-04-19 01:13

我正在尝试写一个循环,用来计算每一步的定积分值。这个函数 bigF 非常复杂。简单来说,它是对一堆和 s 有关的项进行积分,积分的范围是从 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) 的积分后,评估 bigF(t)t=tn 的值。

运行后,我遇到了一个错误 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);

1 个回答

0

如果你在做卷积运算,听起来你需要用到 numpy.convolve 这个工具。

撰写回答