我需要编写一个python代码来计算1/(1+x^2)的积分(-5,5)的确切值。我知道答案是2弧坦(5),大致相当于2.746801.
下面是我所写的代码,但是我得到了一个稍微不同的答案,我想知道我是否可以做些什么来使这段代码更准确?谢谢你的帮助!
## The function to be integrated
def func(x):
return 1/(1 + x**2)
## Defining variables
a = -5.0
b = 5.0
dx = 1.0
Area = 0
## Number of trapezoids
n = int((b-a)/dx)
## Loop to calculate area and sum
for i in range(1, n+1):
x0 = a + (i-1)*dx
x1 = a + i*dx
## Area of each trapezoid
Ai = dx*(func(x0) + func(x1))/2.0
## Cumulative sum of areas
Area = Area + Ai
print("The exact value is: ", Area)我得到的答案是2.756108.我知道这是一个小的差别,然而,这是一个不同的,我想尝试更准确的东西。
发布于 2014-10-19 19:02:47
你得到积分的近似值是因为你使用了一种近似技巧(一阶近似来计算定积分的值)。
计算积分有两种方法:解析法或数值法(通过近似)。你的方法是第二种,因为它是一种近似,它将生成一个值,这个值在实际值的一定误差范围内。
我回答的要点是,你没有办法用数值的方法来计算积分的确切值(在这个函数的情况下绝对不是)。因此,您将不得不满足一定的误差幅度,您愿意接受,然后选择一个足够小的增量x,以使您在这个范围内。
https://stackoverflow.com/questions/26454171
复制相似问题