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

如何在R语言中将函数作为变量传入自定义积分函数?

实现R语言自定义积分函数(计算曲线下面积)

方法一:借助R内置integrate()函数(推荐)

这种方式不需要手动求原函数,能直接处理任意可积分的函数,是最实用的方案。我们只需要把被积函数、积分上下限作为参数传入,调用内置的integrate()即可:

my.integrate <- function(func, lower, upper) {
  # 调用内置积分函数,获取结果
  integration_result <- integrate(func, lower = lower, upper = upper)
  # 返回积分的数值结果
  return(integration_result$value)
}

# 测试:计算x²在区间[1,2]的积分
my.integrate(function(x) x^2, 1, 2)
# 输出结果:2.333333(即7/3,符合理论值)

方法二:基于牛顿-莱布尼茨公式(需传入原函数)

如果你明确知道被积函数的原函数,可以直接通过“原函数上限值 - 原函数下限值”计算积分:

my.integrate_antideriv <- function(antideriv_func, lower, upper) {
  # 应用牛顿-莱布尼茨公式
  result <- antideriv_func(upper) - antideriv_func(lower)
  return(result)
}

# 测试:x²的原函数是(1/3)x³,计算[1,2]的积分
my.integrate_antideriv(function(x) (1/3)*x^3, 1, 2)
# 输出结果:2.333333

原有代码的问题说明

你之前的代码里用replace()处理函数/表达式的变量替换是错误的,R中处理函数参数应该直接传入函数对象,而不是表达式。另外anzac <- Gl2[1] - Gl2[1]的逻辑完全错误,这只会得到0,正确的逻辑应该是上限对应值减下限对应值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 07:40:04