R:计算一个未知参数等于某个值的积分(例如:int x = 0.6)。

问题描述 投票:0回答:1

我试着从一个未知的积分中模拟出数值(以创建一个气候学预报器

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

通常情况下,人们会输入变量 y 并得到一个值作为输出。但是,我想输入这个积分的值,并得到的值是 y 作为输出,我有3 runif 长度为1 000、10 000和100 000的向量(数值在0和1之间),我用它们作为我的输入值。假设第一个值是0.3,第二个值是0.78。

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

我怎样才能在R中做到这一点呢?我已经尝试了一些使用积分函数的东西,但我需要一个y的值来使其工作。

r variables integrate
1个回答
0
投票

你正试图解决一个带有积分的非线性方程。

直观地讲,你需要做的是从一个区间开始,在这个区间内,所需的y位于。 然后尝试不同的y值并计算积分,通过结果缩小区间。你可以在R中使用 integrateoptimize 如下图所示。

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应该是唯一的,可以通过缩小区间很容易找到。

© www.soinside.com 2019 - 2024. All rights reserved.