给定的是F1函数:
F1 <- function(C1,C2,C3,...,x,u_target) {
# a lot of equations follow
...
u_actual - u_target
}
F1返回最后一个等式的结果
u_actual - u_target
我想以最后一个方程的结果收敛为零的方式确定参数x的值。与
nlm(f=F1,p=c(0),C1=C1,C2=C2,...,stepmax=0.001,ndigit=8)
我得到了一个结果,但不是令人满意的结果:
u_actual = 0.1316566
u_target = 0.1
我使用nlm命令(gradtol,stepmax,iterlim等)的参数玩了很多,但我无法获得更好的结果。我也尝试过优化,优化和uniroot,但根本无法让它们运行。
u和x显示负指数发展。随着x的减小,u增加指数。如果x为零,则u导致有限值。 x也有一个上边界,这是未知的。所以我猜想,如果迭代开始于下边界(零)并逐步增加,那将是有希望的。但是,无论是减少还是增加stepmax的值,结果都不会变得更好。
我很感激来自r社区的任何暗示。
非常感谢你。
PS:在matlab中,一位同事使用fsolve(@(x)F1(x,u_target,C1,C2,...),0),它运行正常。