我在这里看过其他帖子,但还没有人帮助我。 我很困惑。如果您知道这里发生了什么,请发表评论。
我的代码:`
from scipy.integrate import quad
from sympy.mpmath import *
k=0.0
i=0.0
def i_2(x, k):
return cos(2*pi*k/sqrt(1-(1-k**2)*cos(x)**2))-1
while k<=0.2:
k = k + i
result = quad(i_2, 0, pi, k, args=())
print(result)
i=0.1`
答案 0 :(得分:1)
您在此处使用的狂野导入:
from sympy.mpmath import *
隐藏您在此处导入的quad
:
from scipy.integrate import quad
请参阅:
from scipy.integrate import quad
from sympy.mpmath import *
print(quad.__module__) # sympy.mpmath.calculus.quadrature
而是翻转导入顺序:
from sympy.mpmath import *
from scipy.integrate import quad
print(quad.__module__) # scipy.integrate.quadpack
或者(更好)(并且更喜欢)完全避免使用狂野导入:
from scipy.integrate import quad
from sympy.mpmath import cos, pi, sqrt
print(quad.__module__) # scipy.integrate.quadpack
此外,您需要删除args=()
才能使代码正常工作:
from scipy.integrate import quad
from sympy.mpmath import cos, pi, sqrt
k=0.0
i=0.0
def i_2(x, k):
return cos(2*pi*k/sqrt(1-(1-k**2)*cos(x)**2))-1
while k<=0.2:
k = k + i
result = quad(i_2, 0, pi, k)
print(result)
i=0.1
输出:
(0.0, 0.0) (-1.8582851152906286, 8.932955791447448e-09) (-3.376947682538414, 1.3760007564395206e-08) (-4.297856700579023, 2.455769416130881e-12)