在Python中计算精确积分

0 投票
1 回答
1796 浏览
提问于 2025-04-28 10:36

我需要写一段Python代码来计算从-5到5的积分,公式是1/(1+x^2)。我知道答案是2arctan(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...我知道这个差别很小,但毕竟还是有差别,我想尝试得到更精确的结果。

暂无标签

1 个回答

1

你得到的积分近似值是因为你使用了一种近似的方法(用一种一阶近似来计算定积分的值)。

计算积分有两种方式:一种是解析法,也就是通过公式直接计算;另一种是数值法,也就是通过近似来计算。你用的方法属于第二种,由于它是近似的,所以得到的值和真实值之间会有一定的误差。

我想说的是,使用数值方法你无法计算出积分的确切值(尤其是对于这个函数来说更是如此)。所以你需要接受一个你能接受的误差范围,然后选择一个足够小的delta-x,这样才能让结果在这个范围内。

撰写回答