求助:用R绘制任意函数曲线下区间面积的矩形覆盖图
用R绘制函数曲线并覆盖区间内的曲线下面积(以x²为例)
以下是针对需求的分步实现代码,注释会说明每一步的作用:
- 定义目标函数
先定义我们要绘制的函数,这里以x²为例:
# 定义函数f(x) = x² f <- function(x) x^2
- 生成绘图用的x值序列
生成足够密集的x值,确保曲线平滑:
# 生成从-2到2的100个等距x值,用于绘制平滑曲线 x_curve <- seq(-2, 2, length.out = 100)
- 绘制函数曲线
先画出基础的函数曲线:
# 绘制曲线,type="l"表示线条图,lwd设置线条粗细,添加坐标轴标签和标题 plot(x_curve, f(x_curve), type = "l", lwd = 2, xlab = "x", ylab = "f(x) = x²", main = "函数x²的曲线与区间[0,2]下的矩形面积")
- 在指定区间绘制覆盖面积的矩形
这里选择区间[0,2],将其分成10个小矩形(可调整n_rect的值改变矩形数量),以左端点的函数值作为矩形高度为例:
# 设置要覆盖的区间和矩形数量 interval_start <- 0 interval_end <- 2 n_rect <- 10 # 矩形数量 # 生成区间分割点 x_intervals <- seq(interval_start, interval_end, length.out = n_rect + 1) # 循环绘制每个矩形 for (i in 1:n_rect) { # rect参数:xleft(左x)、ybottom(下y,这里取0)、xright(右x)、ytop(上y,函数在左端点的值) # col设置半透明蓝色,rgb最后一个值是透明度(0-1),border保留矩形边框 rect(x_intervals[i], 0, x_intervals[i+1], f(x_intervals[i]), col = rgb(0, 0, 1, 0.2), border = "black") }
其他可选调整
- 如果想用右端点的函数值作为矩形高度,只需把
f(x_intervals[i])改成f(x_intervals[i+1])。 - 如果想用区间中点的函数值,改成
f((x_intervals[i] + x_intervals[i+1])/2)。 - 调整
n_rect的值可以改变矩形精细程度,值越大矩形越密,越接近真实的曲线下面积。
内容的提问来源于stack exchange,提问作者user20549084
相关产品推荐
相关产品推荐

