首页 > 解决方案 > R:计算未知参数等于某个值的积分(例如:int x = 0.6)

问题描述

我尝试从未知积分中模拟值(以创建气候预报器)

我的函数是:$\int_{x = 0}^{x = 0.25} 4*y^(-1/x) dx$

通常,输入变量y并获得一个值作为输出。但是,我想输入这个积分等于的值,并获得y作为输出的值。我有 3runif个长度为 1 000、10 000 和 100 000 的向量(值介于 0 和 1 之间),我将它们用作输入值。假设第一个值为 0.3,第二个值为 0.78

我想计算哪个y,上面的积分等于 0.3(或第二个值等于 0.78)。

我怎么能在 R 中做到这一点?我已经尝试了一些带有集成功能的东西,但是我需要一个 y 的值才能使其工作

标签: rvariablesintegrate

解决方案


您正在尝试求解一个内部有积分的非线性方程。

直观地说,您需要做的是从所需 y 所在的区间开始。然后尝试不同的 y 值并计算积分,根据结果缩小区间。
您可以使用 R 在 R 中实现它,integrate如下optimize所示:

f <- function(x, y) { 
  4*y^(-1/x)
}

intf <- function(y) {
  integrate(f, 0, 0.25, y=y)
}

objective <- function(y, value) {
  abs(intf(y)$value - value)
}

optimize(objective, c(1, 10), value=0.3)
#$minimum
#[1] 1.14745
#
#$objective
#[1] 1.540169e-05

optimize(objective, c(1, 10), value=0.78)
#$minimum
#[1] 1.017891
#
#$objective
#[1] 0.0001655954

这里,f是要积分的函数,intf计算给定 y 的积分,并objective测量积分值与所需值之间的距离。
由于optimize函数找到函数的最小值,因此它找到 y 使得目标最接近目标值。

请注意,内部具有积分的非线性方程通常很难求解。这种情况似乎是可控的,因为函数在 y 中是单调且连续的。解 y 应该是唯一的,并且可以通过缩小区间很容易找到。


推荐阅读