如何用矩形法(梯形法)求定积分

当我们需要求一个函数在某一区间上的定积分时,可以采用矩形法(梯形法)进行计算。下面是具体的步骤:

步骤1:将区间等分成若干个小区间

将要求定积分的区间[a,b]等分成n个小区间,步长为Δx = (b-a)/n,n通常会选择2的倍数,如n=2、4、8、16等,这样可以使得每个小区间的宽度相等。用x_i表示第i个小区间左端点的位置,则有x_0=a, x_1=a+Δx, ..., x_n=b.

步骤2:在每个小区间中选择一个样本点

在每个小区间中,可以任意地选择一个样本点x_i(i∈[0,n-1]),可以是左端点、右端点、中点等。这里以左端点为例,即x_i=x_i。

步骤3:计算每个小区间上的函数平均值

对于每个小区间[i, i+1],可以计算出函数f(x)在该区间的平均值:f_ave[i]=(f(x_i)+f(x_i+1))/2。

步骤4:计算矩形(梯形)的面积

以左端点为例,对于每个小区间,可以计算出一个矩形的面积:S_i=f(x_i)Δx。这个矩形的宽度就是Δx,高度就是在该区间的函数值f(x_i)。对于梯形法,我们可以计算出梯形的面积:S_i=((f(x_i)+f(x_i+1))/2)Δx。

步骤5:将每个小矩形(梯形)的面积相加

将每个小矩形(梯形)的面积相加,即可得到定积分的近似结果。对于某个函数f(x)在区间[a, b]上的定积分,则有如下近似结果:

矩形法:∫f(x)dx ≈ Δx * (f(x_0)+f(x_1)+ ... +f(x_n-1))

梯形法:∫f(x)dx ≈ Δx/2 * (f(x_0)+2f(x_1)+ ... +2f(x_n-1)+f(x_n))

下面通过两个具体的例子来说明矩形法和梯形法的使用。

示例1

要求函数f(x) = x^2在区间[0, 1]上的定积分,将该区间等分成4个小区间,用左端点为样本点。

首先,计算步长Δx = (b-a)/n=1/4=0.25,可以得到x_0=0, x_1=0.25, x_2=0.5, x_3=0.75, x_4=1。

其次,计算每个小区间上的函数平均值:
f_ave[0]=(f(x_0)+f(x_1))/2 = (0^2+(0.25)^2)/2 = 0.03125
f_ave[1]=(f(x_1)+f(x_2))/2 = ((0.25)^2+(0.5)^2)/2 = 0.140625
f_ave[2]=(f(x_2)+f(x_3))/2 = ((0.5)^2+(0.75)^2)/2 = 0.421875
f_ave[3]=(f(x_3)+f(x_4))/2 = ((0.75)^2+1^2)/2 = 0.9453125

然后,计算每个小矩形的面积:
S_0 = f(x_0)Δx = 00.25 = 0
S_1 = f(x_1)Δx = (0.25)^20.25 = 0.015625
S_2 = f(x_2)Δx = (0.5)^20.25 = 0.0625
S_3 = f(x_3)Δx = (0.75)^20.25 = 0.1328125

最后,将每个小矩形的面积相加:
∫f(x)dx ≈ S_total = S_0 + S_1 + S_2 + S_3 = 0 + 0.015625 + 0.0625 + 0.1328125 = 0.2109375

因此,函数f(x) = x^2在区间[0, 1]上的定积分约等于0.2109375。

示例2

要求函数f(x) = sin(x)在区间[0, π]上的定积分,将该区间等分成8个小区间,用梯形法计算。

首先,计算步长Δx = (b-a)/n=π/8=0.3926991,可以得到x_0=0, x_1=0.3926991, x_2=0.7853982, x_3=1.1780972, x_4=1.5707963, x_5=1.9634954, x_6=2.3561945, x_7=2.7488936, x_8=3.1415927。

其次,计算每个小区间上的函数平均值:
f_ave[0]=(f(x_0)+f(x_1))/2 = (sin(0)+sin(0.3926991))/2 = 0.1951417
f_ave[1]=(f(x_1)+f(x_2))/2 = (sin(0.3926991)+sin(0.7853982))/2 = 0.47033548
f_ave[2]=(f(x_2)+f(x_3))/2 = (sin(0.7853982)+sin(1.1780972))/2 = 0.6852743
f_ave[3]=(f(x_3)+f(x_4))/2 = (sin(1.1780972)+sin(1.5707963))/2 = 0.8196466
f_ave[4]=(f(x_4)+f(x_5))/2 = (sin(1.5707963)+sin(1.9634954))/2 = 0.6852743
f_ave[5]=(f(x_5)+f(x_6))/2 = (sin(1.9634954)+sin(2.3561945))/2 = 0.47033548
f_ave[6]=(f(x_6)+f(x_7))/2 = (sin(2.3561945)+sin(2.7488936))/2 = 0.1951417
f_ave[7]=(f(x_7)+f(x_8))/2 = (sin(2.7488936)+sin(3.1415927))/2 = -0.15038373

然后,计算每个小梯形的面积:
S_0 = ((f(x_0)+f(x_1))/2)Δx = 0.19514170.3926991 = 0.07646452
S_1 = ((f(x_1)+f(x_2))/2)Δx = 0.470335480.3926991 = 0.18400249
S_2 = ((f(x_2)+f(x_3))/2)Δx = 0.68527430.3926991 = 0.26862728
S_3 = ((f(x_3)+f(x_4))/2)Δx = 0.81964660.3926991 = 0.32016606
S_4 = ((f(x_4)+f(x_5))/2)Δx = 0.68527430.3926991 = 0.26862728
S_5 = ((f(x_5)+f(x_6))/2)Δx = 0.470335480.3926991 = 0.18400249
S_6 = ((f(x_6)+f(x_7))/2)Δx = 0.19514170.3926991 = 0.07646452
S_7 = ((f(x_7)+f(x_8))/2)Δx = -0.150383730.3926991 = -0.0589904

最后,将每个小梯形的面积相加:
∫f(x)dx ≈ S_total = S_0 + S_1 + S_2 + S_3 + S_4 + S_5 + S_6 + S_7 = 0.07646452 + 0.18400249 + 0.26862728 + 0.32016606 + 0.26862728 + 0.18400249 + 0.07646452 -0.0589904 = 1.21935334

因此,函数f(x) = sin(x)在区间[0, π]上的定积分约等于1.21935334。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:如何用矩形法(梯形法)求定积分 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • cExcel怎么仅显示数据条? excel单元格显示数据条的技巧

    首先,我们需要使用Excel的数据验证功能来实现单元格数据条的显示。 步骤 1:准备数据 首先,我们需要准备一列数据,这些数据将在单元格中显示数据条。 步骤 2:创建数据条 在Excel中,点击“数据”选项卡,然后点击“数据验证”按钮。在“设置”选项卡下,选择“整数”或者“小数”或者“时间”格式,并且在“下限”和“上限”中输入数据的取值范围。 然后,在“输入…

    C 2023年5月23日
    00
  • Golang Gin框架实现多种数据格式返回结果详解

    Golang Gin框架是常用的Web框架之一,它提供了丰富的API和中间件,能够快速搭建Web服务,同时还支持多种数据格式的返回结果。下面是一份实现多种数据格式返回结果的攻略,包括JSON、XML、HTML和Plain Text格式的返回结果。 简介 首先,为了使用Gin框架,需要先安装Gin模块: go get -u github.com/gin-gon…

    C 2023年5月23日
    00
  • 如何在在Vue3中使用markdown 编辑器组件

    以下是在Vue3中使用markdown编辑器组件的攻略: 安装markdown编辑器组件 我们可以使用vue-markdown-editor组件,这是一个基于Vue3的markdown编辑器组件。 在终端中输入下列命令安装: npm install vue3-markdown-editor –save 引入组件 在Vue3项目中,可以使用以下代码引入组件:…

    C 2023年5月23日
    00
  • C++学生信息管理系统

    C++学生信息管理系统攻略 简介 本文将详细讲解如何开发一款基于 C++ 的学生信息管理系统,该系统可以实现添加学生、删除学生、修改学生信息、查询学生信息等常见的学生信息管理操作。该系统可以帮助学校、班级或老师方便地管理学生信息,提高信息管理效率。 技术方案 C++语言 C++是一种高效的面向对象编程语言,具有良好的性能和可扩展性。它是学生信息管理系统的常用…

    C 2023年5月22日
    00
  • Python实现字典按key或者value进行排序操作示例【sorted】

    下面是Python实现字典按key或value进行排序的攻略: 1. 字典按key排序 如果你想按dict的key进行排序,可以使用Python的内置方法sorted()实现。下面是一个示例代码: d = {‘banana’: 3, ‘apple’: 4, ‘pear’: 1, ‘orange’: 2} sorted_dict = sorted(d.item…

    C 2023年5月23日
    00
  • 利用Jackson解析JSON的详细实现教程

    下面我将为你详细讲解利用Jackson解析JSON的实现教程。 一、Jackson解析库 Jackson是一个高效的JSON解析库,它可以快速方便地将JSON解析成Java对象,也可以将Java对象转换成JSON格式的字符串。Jackson支持多种数据格式,包括:JSON、XML、YAML等。但在本文中,重点介绍其JSON解析的应用。 Jackson主要由以…

    C 2023年5月23日
    00
  • C++ 中的类型详细

    C++ 中的类型详细 数据类型的定义 在C++中,常用的数据类型包括: 基本类型:整型、字符型、布尔类型、浮点型等。 构造类型:数组、结构体、联合体、枚举等。 指针类型:指向其他变量的指针。 引用类型:引用是某个变量的别名。 类类型:类是一个自定义的数据类型,可以包含属性和方法。 基本数据类型 C++中的基本数据类型包括:整型、浮点型、字符型、布尔类型等。 …

    C 2023年5月22日
    00
  • php json_encode()函数返回json数据实例代码

    下面是关于php json_encode()函数返回json数据实例代码的详细攻略: 1. json_encode()函数简介 json_encode()函数是PHP内置的一个函数,是将PHP变量转换为JSON格式的字符串的常用方法。在实际开发中,通过该函数将PHP数组、对象等数据类型转换为JSON格式后,可以通过Ajax技术在前端页面实现异步数据传输。 2…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部