r - 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 的值才能使其工作
解决方案
您正在尝试求解一个内部有积分的非线性方程。
直观地说,您需要做的是从所需 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 应该是唯一的,并且可以通过缩小区间很容易找到。
推荐阅读
- ipv6 - 在 eBPF 中将 IPv4 转换为 IPv6 时,“bpf_l4_csum_replace”的校验和计算问题
- mongodb - Mongo 4.2 错误输出阶段需要一个字符串参数,但找到了对象
- javascript - 为字符串添加右填充,使其以一致的行/列结构显示
- paypal - Paypal 沙箱 INVALID_RESOURCE_ID RESOURCE_NOT_FOUND
- flutter - 如何在 Flutter 的 Choice Chip 中不选择索引的情况下打印值
- javascript - 满载后使用javascript读取网页
- pdf - 将 Windows .PRN 文件 (PCL) 转换为 PDF
- python - Jupyter Notebook中具有相对路径的局部图像,具有宽度和高度
- php - 在其分组名称属性中列出来自 WooCommerce 产品的属性
- c++ - 在 CMAKE 中为库目标生成 grpc 文件