gpt4 book ai didi

python - 在 python 中使用 Newton-Cotes 方法进行集成

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:49:13 25 4
gpt4 key购买 nike

我试图在 python 中编写一个函数,它将使用 Newton-Cotes 方法集成给定的函数,并返回一些非常奇怪的结果,有时它会给出正确的答案而其他人则不会(大多数情况下是错误的 -ve 界限) .这是我的代码,如果有人能指出任何错误,将不胜感激:)

def integrate(function, a, b):
coeff = [7,32,12,32,7]
result = 0
for i in range(0,len(coeff)):
x = a + (i*(b-a))/(len(coeff)-1)
result += coeff[i]*eval(function)
print eval(function)
result = result*((b-a)/90.)
return result

我一直遵循的牛顿科特斯公式来自 wikipedia .

例子:

print integrate("x**3-4*x+9", -7, 7)

返回:-38 当实际答案为 126

最佳答案

神秘的数学行为通常是忘记在 Python 2 中整数除法的默认行为是截断的结果。在循环中添加 print x, eval(function):

>>> integrate("x**2+4", 0, 5)
0 4
1 5
2 8
3 13
5 29
50.166666666666664

但是

>>> integrate("x**2+4", 0., 5.)
0.0 4.0
1.25 5.5625
2.5 10.25
3.75 18.0625
5.0 29.0
61.666666666666664

注意第一个的评价点是错误的。在添加 from __future__ import division 之后,或者'a = 1.0*a; b = 1.0*b` 开始:

>>> integrate("x**2+4", 0, 5)
0.0 4.0
1.25 5.5625
2.5 10.25
3.75 18.0625
5.0 29.0
61.666666666666664

或者你的例子:

>>> integrate("x**3-4*x+9", -7, 7)
-7.0 -306.0
-3.5 -19.875
0.0 9.0
3.5 37.875
7.0 324.0
126.0

eval 是一个糟糕的设计选择,但它不是错误的来源。

关于python - 在 python 中使用 Newton-Cotes 方法进行集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12987072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com