所以我试图做的是计算y上的积分,然后我想计算exp(-t *解决方案)并将其整合到x上。
它应该是这样的:
x(exp(-t * B))从0到Pi
的积分B = y上的积分(3.0 *(sin(x)* sin(y)* sin(TM)+ cos(x)* cos(TM))** 2.0-1.0)** 2.0从0到2Pi
我尝试用scipy来做,但是在没有x的情况下它不会在y上进行整合。
到目前为止,这是我的代码:
from numpy import cos, sin, exp
import math
import scipy.integrate as integrate
t=0.0
TM=(54.74/180)*math.pi
def integrand(y,x):
return (3.0*A(y,x)**2.0-1.0)**2.0
def A(y,x):
return sin(x)*sin(y)*sin(TM)+cos(x)*cos(TM)
while t<10:
t+=4
resultbet, err=integrate.nquad(integrand, [(0.0, 2*math.pi)])
result=exp(-t*resultbet)
resultalph, err=integrate.nquad(result, [(0.0, math.pi)])
答案 0 :(得分:1)
你想整合y,然后应用指数函数,然后整合 超过x。这不是双积分,这是根据积分定义的函数的积分。我相应地重写了代码,保留了A和被积函数的定义:
def B(x):
return integrate.quad(lambda y: integrand(y,x), 0, 2*math.pi)[0]
while t<10:
t += 4
result = integrate.quad(lambda x: x*exp(-t*B(x)), 0, math.pi)
print(result)
输出:
(0.28030701904213656, 1.0526577138223263e-08)
(0.1972630762340601, 1.3996736645569703e-12)
(0.16081518182419666, 9.188712047715815e-11)
这里,第一个数字是积分值,第二个是误差估计值;这就是integrate.quad返回的内容。 (这就是为什么在函数B的末尾有[0]。)
函数B将x作为参数,并将y上的一维积分结果从0返回到2 * pi。然后在循环中,函数x*exp(-t*B(x))
被集成。