与黎曼和(Python)的数值积分

时间:2013-07-16 21:59:17

标签: python return integration

我有以下代码,但在运行时,它会提供0.0 由于我尝试在2区间内集成sin(x),因此应返回[0, pi]的值。 请指教。

from math import sin, pi

def Rsum(a,b):
    for i in range(1001):
        s = 0
        delx = float((b-a)/1000)
        g = i*delx
        h = (i+1)*delx

        y_i = float(sin(a+g))
        y_ii = float(sin(a+h))
        s += 1/2 * (y_i + y_ii) * delx

    return s

print Rsum(0,pi)

2 个答案:

答案 0 :(得分:4)

python 2.x中的

1/20。它正在执行整数除法和舍入。您可以使用0.51.0/2来获得所需内容。

答案 1 :(得分:0)

试试这个:

from math import sin, pi

def Rsum(a,b):

    for i in range(1001):
        s = 0.0
        delx = float(b-a)/1000.0
        g = i*delx
        h = (i+1.0)*delx

        y_i = float(sin(a+g))
        y_ii = float(sin(a+h))
        s += 1.0/2.0 * (y_i + y_ii) * delx
        #s += 1/2 * (sin(a+i*delx) + sin(a+(i+1)*delx)) * delx

    return s

print Rsum(0,pi)

如果你有一个整数,你应该注意在浮点方程中使用整数值,然后用float()转换它。如果您的代码中有一个常量,例如10,那么请将其设为十进制... 10.0