r - 如何解决数值积分中的 "non-numeric argument.."错误?

标签 r integral numerical-integration

我想在 R 中计算以下积分。enter image description here
我尝试使用 Vectorizeintegrate功能,但我有错误Error in (log(z)) * (InIntegl2) : non-numeric argument to binary operator

  fxyz= function(x,y,z) { (x*y*z)+z+x+2*y}
  InIntegl1 = Vectorize(function(x) { integrate(fxyz, 0,5)$value})
  InIntegl2 = Vectorize(function(y) { integrate( InIntegl1, 0,3)$value})
  InIntegl3 = Vectorize(function(z) { integrate((log(z))*(InIntegl2), 2,6)$value})
  Integral = integrate(InIntegl3 , 2, 6)$value

最佳答案

第一个积分必须由 y 和 z 参数化,第二个积分必须由 z 参数化。然后我们可以进行最后的积分。

int1 <- Vectorize(function(y, z) integrate(fxyz, 0, 5, y = y, z = z)$value)
int2 <- Vectorize(function(z) integrate(int1, 0, 3, z = z)$value)
integrate(function(z) log(z) * int2(z), 2, 6)$value
## [1] 2071.71

关于r - 如何解决数值积分中的 "non-numeric argument.."错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66146606/

相关文章:

python - Python 对数下降曲线上的梯度下降

Matlab 积分并传入常量变量。

c - 将数组传递给函数指针(在C中)?

r - 如何在图形的轴上插入点

r - 生成m个等距的数字,它们在R中的总和为1

r - R Shiny 应用程序的安全性

r - 如何按 R 中列中的次数拆分行?

c++ - 矩形法 C++

algorithm - 是否有时间校正速度 Verlet 算法?

matlab - 求解受约束提供非负解的延迟微分方程 (DDE) 系统