我是uniroot()函数的新手,并反复遇到我要解决的函数输入值的特定组合问题。
这是我收到的错误消息:
uniroot中的错误(有趣,较低= 0.001,较高= 1e + 08,extendInt = “ downX”):未能成功扩展以下时间间隔的端点 f(下)* f(上)<= 0
这是我正在运行的代码:
genTactFun = function(T1, T2, T3, T4, Tactive_exp = 0) {
force(T1)
force(T2)
force(T3)
force(T4)
force(Tactive_exp)
function(x) {
0.25 * (1 - x ^ 1.2 / (x ^ 1.2 + 20 ^ 1.2)) * T1 +
0.5 * (1 - x ^ 1.2 / (x ^ 1.2 + 150 ^ 1.2)) * T2 +
0.75 * (1 - x ^ 1.2 / (x ^ 1.2 + 1500 ^ 1.2)) * T3 +
1 * (1 - x ^ 1.2 / (x ^ 1.2 + 60000 ^ 1.2)) * T4 -
Tactive_exp
}
}
T1_obs = 1.131538625
T2_obs = 0.1921480684
T3_obs = 0.01067489269
T4_obs = 0.001186099188
fun = genTactFun(T1_obs, T2_obs, T3_obs, T4_obs, 0.3910554)
Res = uniroot(fun, lower = 1e-3, upper = 1e8, extendInt = "downX")$root
我仍然可以使用uniroot()解决我的问题吗?还是这意味着即使更改设置,uniroot()函数也无法计算解决方案?