r - 在 R 中使用优化。
问题描述
所以我有一个函数 wrt $x$,它实际上是一个被评估 wrt $t$的积分。所以我做了一个嵌套函数,但是一旦我尝试优化它,我就会得到一个恼人的错误。
我相信这是因为积分需要假设$x > 5/2$才能进行评估。如何在 R 中假设参数?这是我的代码和错误:
g = function(x){
f = function(t) {exp(-((x*t)^3))^(1/3)*(1-(1-exp(-((10*x/(2*x-5))*t)^(1/3)))^2)}
R = integrate(f,0,Inf)
}
g=Vectorize(g)
optimize(g, c(0.1, 10), tol = 0.0001)
错误:
Error in optimize(g, c(0.1, 10), tol = 1e-04) :
invalid function value in 'optimize'
使用 Maple 执行此操作要容易得多。只是 [integral] 假设$x >5/2$我得到的答案是$x=5.258565455$,这是正确的。
任何帮助深表感谢。
解决方案
R 中的integrate()
函数为您提供了一个元素列表。从逻辑上讲,您只需要积分的值,即
g <- function (x) {
f <- function (t) exp(-((x*t)^3))^(1/3)*(1-(1-exp(-((10*x/(2*x-5))*t)^(1/3)))^2)
integrate(f, 0, Inf)$value
}
optimize(g, c(0.1, 10), tol = 0.0001)
推荐阅读
- c# - 当 Newtonsoft.JSON 反序列化失败时,有没有办法返回自定义错误?
- javascript - 从 App Module 导航到子模块
- c# - 将多列从c#传递到sql server中的用户定义表类型
- php - 如何从另一台服务器连接 SQL 数据库?
- r - 如何在闪亮中重复创建新列
- postgresql - 带有过滤数据的备份数据库
- c# - 与 OPC UA 服务器通信 OPCDA 客户端
- php - Laravel / Lumen 只读模型?
- node.js - 每次我为新文件执行 JSON.stringify 时都替换 JSON 文件(刷新每个键和值)
- python - 根据某些行/条件将表格格式化为多列