Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
黎曼和数值积分(Python)_Python_Return_Integration - Fatal编程技术网

黎曼和数值积分(Python)

黎曼和数值积分(Python),python,return,integration,Python,Return,Integration,我有下面的代码,但是当它运行时,它给出了0.0 它应该返回一个值2,因为我试图在区间[0,pi]中积分sinx。 请告知 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))

我有下面的代码,但是当它运行时,它给出了0.0 它应该返回一个值2,因为我试图在区间[0,pi]中积分sinx。 请告知

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)
在Python2.x中,1/2是0。它正在执行整数除法和舍入。您可以使用0.5或1.0/2来获得所需的内容。

1/2在Python2.x中是0。它正在执行整数除法和舍入。您可以使用0.5或1.0/2来获得所需的内容。

试试以下方法:

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)
在浮点方程中使用整数值时应该小心,如果您有一个整数,那么就用浮点转换它。如果您的代码中有一个常量,比如10,那么将其设为十进制。。。10.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)

在浮点方程中使用整数值时应该小心,如果您有一个整数,那么就用浮点转换它。如果您的代码中有一个常量,比如10,那么将其设为十进制。。。10.0.

谢谢。当然,新手犯了错误利用这个,我得到了一个答案-4.93479408312e-06。然而,这并不是人们所期望的。该函数应该使用梯形规则来计算曲线下的面积,在这种情况下为sinx。有什么建议吗?谢谢。当然,新手犯了错误利用这个,我得到了一个答案-4.93479408312e-06。然而,这并不是人们所期望的。该函数应该使用梯形规则来计算曲线下的面积,在这种情况下为sinx。有什么建议吗?谢谢。当然,新手犯了错误利用这个,我得到了一个答案-4.93479408312e-06。然而,这并不是人们所期望的。该函数应该使用梯形规则来计算曲线下的面积,在这种情况下为sinx。有什么建议吗?尝试将s=0移出循环。谢谢!现在可以了我得到1.9999942027,但是,这到底有什么帮助?在上一个例子中,是否每次运行循环时都会将“s”重新定义并重置为0?@user2589188:是的,完全正确。谢谢。当然,新手犯了错误利用这个,我得到了一个答案-4.93479408312e-06。然而,这并不是人们所期望的。该函数应该使用梯形规则来计算曲线下的面积,在这种情况下为sinx。有什么建议吗?尝试将s=0移出循环。谢谢!现在可以了我得到1.9999942027,但是,这到底有什么帮助?在上一个例子中,是否每次运行循环时都将“s”重新定义为0?@user2589188:是的,完全正确。