我有这样的方程求解(例如F(X,Y)= 0):,使用R如何使用R中的nleqslv包求解非线性方程?
library(nleqslv)
target <- function(x)
{
z = x[1]/(x[1]+x[2])
y = numeric(2)
y[1] <- z*exp(-x[2]*(x[2]+z*(1-exp(-x[1]/z))))-0.00680
y[2] <- z/x[2]*(1-exp(-x[2]))-exp(-x[2])*z/x[1]*(1-exp(-x[1]))-3.43164
y
}
# Usage
xstart <- c(1,1)
target(xstart)
nleqslv(xstart, target, control=list(ftol=.0001, allowSingular=TRUE),jacobian=TRUE,method="Newton")
与nleqslv或另一个已他人:)
由于
什么是数字-0.00680和-3.43164? 我收到错误: fn(par,...)中的错误:参数“y”丢失,没有默认值...您是否得到相同的结果? –
他们是等式的一部分:)。我有一个像这样的方程f(x,y)=(z * exp(-y *(y + z *(1-exp(-x/z)))); z/y *(1-exp y)) - exp(-y)* z/x *(1-exp(-x)))=(a,b)其中(a,b)可以取一些指定的值。在这篇文章中,我把(a,b)=(0.00680; 3.43164)。 – Gauss
错误是由功能目标的错误定义造成的... nleqslv使用矢量...我修复了这个问题,现在你可以尝试,你会有另一个消息:) – Gauss