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