Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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 - Fatal编程技术网

其中';我用Python进行数值集成的错误是什么?

其中';我用Python进行数值集成的错误是什么?,python,Python,我尝试将cos(x)从0积分到2pi,但没有找到0 我的代码使用此数值积分: def rectangles(f,a,b,n) : h=(b-a)/n/1.0 print h z=0.0 for i in range(n) : z=z+f(a+i*h) return h*z 功能是: def f1(x): return cos(x) 我使用mpmath biblio: from mpmath import * mp.dps=300

我尝试将cos(x)从0积分到2pi,但没有找到0

我的代码使用此数值积分:

def rectangles(f,a,b,n) :
    h=(b-a)/n/1.0
    print h
    z=0.0
    for i in range(n) :
        z=z+f(a+i*h)
    return h*z
功能是:

def f1(x):
    return cos(x)
我使用mpmath biblio:

from mpmath import *
mp.dps=300; mp.pretty=True
电话是:

rectangles(f1,0.0,2.0*pi,100000)
从0到π/2都可以,从π/2到π都可以,等等。但是如果我想从0到2pi,我发现:-4.81

这很奇怪,因为如果我写1.9999*pi或2.00001*pi,它就可以工作了

但是如果我想从0到2pi,我发现:-4.81

不,你可以

>>> rectangles(f1,0.0,2.0*pi,100000)
0.000062831853071795864[boring digits deleted]...
-4.81306306411824111[boring digits deleted]...1775099222873051479e-301
并且-4.813e-301=-4.813*10^(-301)非常非常接近于零


[旁白:
h=(b-a)/n/1.0
中的
/1.0
没有多大帮助——如果
b
a
n
都是整数,你已经失去了除法的精度。]

你的代码在我的机器上运行得很好。你确定打印出来的答案不是科学记数法,你是误读了吗?打印矩形(f1,0.0,2.0*pi,100000)不起作用,你是从0.0到2.0*pi进行积分吗?(通过@DSM的更正)
z=sum((f(a+i*h)表示范围(n)内的i),0.0)
(在我后来添加0.0之前,括号是不必要的。)