我检查了功能和参数,但我找不到我的错误。如果您知道这里发生了什么,请发表评论。
这是我的代码:
from scipy.integrate import quad, dblquad
from sympy.mpmath import sin, cos, sqrt, pi
k0=0.1
def f(y, k):
return k**2 + (1 - k**2)*y**2
def p1(y,k):
return (1/f(y,k))*(f(y,k) - k**2 + (k**2)*sin(2*pi*sqrt(f(y,k)))/(2*pi*sqrt(f(y,k))))
def p2(y,k):
return (-1*k/(sqrt(1-y**2)*2*pi*f(y,k)))*(1 - cos(2*pi*sqrt(f(y,k)) ))
def p3(y,k):
return (k*y/(f(y,k)*sqrt(1-y**2)))*(f(y,k) - 1 + sin(2*pi*sqrt(f(y,k)))/(2*pi*sqrt(f(y,k))))
def q1(y,k):
return k*(1- y**2)*(1 - cos(2*pi*sqrt(f(y,k))))/f(y,k)
def q2(y,k):
return sqrt(1- y**2)*sin(2*pi*sqrt(f(y,k)))/sqrt(f(y,k))
def q3(y,k):
return y*sqrt(1-y**2)*(1 - cos(2*pi*sqrt(f(y,k))))/f(y,k)
r1 = lambda k: dblquad( lambda y,x: p2(x,k)*q3(y,k) - p3(x,k)*q2(y,k), -1, 1, lambda y: -1 , lambda y: y )
b = quad(r1, k0, 1)
print (b)
答案 0 :(得分:1)
可能是因为dblquad()
返回一个元组(y,error),所以你需要索引到元组以提取浮点数:
r1 = lambda k: dblquad(lambda y, x: p2(x,k)*q3(y,k) - p3(x,k)*q2(y,k),
-1, 1, lambda y: -1, lambda y: y)[0]
b = quad(r1, k0, 1)
print(b)
#Output: (0.2802359612009363, 4.646614072058449e-15)