首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Python计算精确积分

用Python计算精确积分
EN

Stack Overflow用户
提问于 2014-10-19 18:57:59
回答 1查看 1.5K关注 0票数 0

我需要编写一个python代码来计算1/(1+x^2)的积分(-5,5)的确切值。我知道答案是2弧坦(5),大致相当于2.746801.

下面是我所写的代码,但是我得到了一个稍微不同的答案,我想知道我是否可以做些什么来使这段代码更准确?谢谢你的帮助!

代码语言:javascript
运行
复制
## 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.我知道这是一个小的差别,然而,这是一个不同的,我想尝试更准确的东西。

EN

回答 1

Stack Overflow用户

发布于 2014-10-19 19:02:47

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

计算积分有两种方法:解析法或数值法(通过近似)。你的方法是第二种,因为它是一种近似,它将生成一个值,这个值在实际值的一定误差范围内。

我回答的要点是,你没有办法用数值的方法来计算积分的确切值(在这个函数的情况下绝对不是)。因此,您将不得不满足一定的误差幅度,您愿意接受,然后选择一个足够小的增量x,以使您在这个范围内。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26454171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档