2
我正在尝试编写一个循环来计算每一步中定积分的值。功能bigF
非常复杂。简而言之,它集成了一系列关于s
,from s=tn-(n/2)
到s=tn+(n/2)
的术语。整合后,bigF
仍然有一个变量t
。所以你可以说bigF(t) = integral(f(s,t))
,其中f(s,t)
是integrate.integ
之后的大项混乱。在最后一行,我想在t=tn
评估bigF(t)
bigF
计算的f(s,t)
在Python中计算定积分
积分后运行后,我得到的错误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,而不是“power”。这是代码中几个地方的严重错误。 '1^1'为零,让您大吃一惊。 – 2014-08-31 04:49:16
我猜你的意思是要传递一个函数来整合,而不是一个计算值。所以你应该把'lambda s:'放在你的参数前面来整合。 – happydave 2014-08-31 04:50:54