2

我有以下代码,但是当它运行时,它给出了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)
4

2 回答 2

4

1/20python 2.x 中。它正在执行整数除法和向下舍入。0.5你可以通过使用or来获得你想要的东西1.0/2

于 2013-07-16T22:04:25.583 回答
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......

于 2013-07-16T22:08:01.793 回答