You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python新手求助:如何用近似法求给定曲线下的面积

用近似法计算曲线下面积(以3x²+2x+11为例)

近似法的核心逻辑是把曲线下的区间拆成大量小的几何图形(矩形或梯形),计算每个小图形的面积后求和,拆分的数量越多,结果越接近真实面积。下面以计算区间x=0到x=2的面积为例,演示几种适合新手的实现方式:

1. 左端点矩形法

把区间分成n个等宽的小区间,每个矩形的高度取区间左端点的函数值,宽度为区间总长度除以n。

def f(x):
    return 3 * x**2 + 2 * x + 11

# 定义区间和拆分份数
a = 0
b = 2
n = 1000
delta_x = (b - a) / n

total_area = 0.0
for i in range(n):
    x_i = a + i * delta_x
    total_area += f(x_i) * delta_x

print(f"左端点矩形法近似面积: {total_area}")

2. 右端点矩形法

和左端点逻辑一致,只是每个矩形的高度取区间右端点的函数值:

def f(x):
    return 3 * x**2 + 2 * x + 11

a = 0
b = 2
n = 1000
delta_x = (b - a) / n

total_area = 0.0
for i in range(1, n+1):
    x_i = a + i * delta_x
    total_area += f(x_i) * delta_x

print(f"右端点矩形法近似面积: {total_area}")

3. 中点矩形法

取每个小区间中点的函数值作为矩形高度,精度比左右端点法更高:

def f(x):
    return 3 * x**2 + 2 * x + 11

a = 0
b = 2
n = 1000
delta_x = (b - a) / n

total_area = 0.0
for i in range(n):
    mid_x = a + (i + 0.5) * delta_x
    total_area += f(mid_x) * delta_x

print(f"中点矩形法近似面积: {total_area}")

4. 梯形法

把每个小区间看作梯形,用(上底+下底)*高/2计算面积,精度比矩形法更优:

def f(x):
    return 3 * x**2 + 2 * x + 11

a = 0
b = 2
n = 1000
delta_x = (b - a) / n

total_area = 0.0
for i in range(n):
    x_i = a + i * delta_x
    x_next = x_i + delta_x
    total_area += (f(x_i) + f(x_next)) * delta_x / 2

print(f"梯形法近似面积: {total_area}")

补充说明

这个函数的精确积分结果是34(原函数为x³ + x² + 11x,代入x=2和x=0相减得到)。你可以调整n的值,n越大,近似结果越接近34。

内容的提问来源于stack exchange,提问作者Joe Joplin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 08:55:17