'int'类型的对象没有len()

时间:2015-03-28 19:18:42

标签: python

我在这里看过其他帖子,但还没有人帮助我。 我很困惑。如果您知道这里发生了什么,请发表评论。

我的代码:`

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`

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)