如何在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
相关产品推荐
相关产品推荐

