如何提高nlm-solver解的精度

时间:2017-09-23 19:08:17

标签: r function solver nlm

给定的是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),它运行正常。

0 个答案:

没有答案