R-Studio用cubature包做有限二重积分adaptIntegrate报错求解
问题核心原因
cubature包的adaptIntegrate()函数对被积函数的输入格式有固定要求:多元被积函数只能接受一个向量类型的输入参数,向量的第1个元素对应第一个积分变量,第2个元素对应第二个积分变量,以此类推,你两次编写的函数都不符合这个格式要求。
两次报错的具体问题
- 第一次代码错误:你定义的
f10需要传入两个独立参数x和y,但adaptIntegrate调用函数时只会传一个长度为2的向量进去,自然会提示y参数缺失。 - 第二次代码错误:你把函数改成了只接受一个参数
x,但函数体里直接调用了未定义的变量y,自然会提示y未找到。
可正常运行的正确代码
# 加载cubature包 library(cubature) # 正确定义二元被积函数:输入是单个向量x,x[1]对应第一个积分变量,x[2]对应第二个积分变量 f10 <- function(x) { 1/(sqrt(1 - x[1]^2) * sqrt(1 - x[2]^2)) } # 调用二重积分计算 a10 <- adaptIntegrate(f10, lower = c(0, 0), upper = c(1, 1))$integral print(a10)
该积分的理论值为$(\frac{\pi}{2})^2 \approx 2.4674$,运行上述代码会得到与理论值一致的计算结果。
内容的提问来源于stack exchange,提问作者Chandan Chaurasiya
相关产品推荐
相关产品推荐

