Ich benutze nleqslv-Paket in R, um nichtlineare System von Gleichungen zu lösen. Die R-Codes sind nachstehend angegeben;Was ist los mit meinen Startwerten
require(nleqslv)
x <- c(6,12,18,24,30)
NMfun1 <- function(k,n) {
y <- rep(NA, length(k))
y[1] <- -(5/k[1])+sum(x^k[2]*exp(k[3]*x))+2*sum(k[4]*x^k[2]*exp(-k[1]*x^k[2]*exp(k[3]*x)+k[3]*x)/(1-k[4]*exp(-k[1]*x^k[2]*exp(k[3]*x))))
y[2] <- -sum(log(x))-sum(1/(k[2]+k[3]*x))+sum(k[1]*x^k[2]*exp(k[3]*x)*log(x))+2*sum(k[1]*k[4]*exp(-k[1]*x^k[2]*exp(k[3]*x)+k[3]*x)*log(x)/(1-k[4]*exp(-k[1]*x^k[2]*exp(k[3]*x))))
y[3] <- -sum(x/(k[2]+k[3]*x))+sum(k[1]*x^(k[2]+1)*exp(k[3]*x))-sum(x)+2*sum(k[4]*x^k[2]*exp(-k[1]*x^k[2]*exp(k[3]*x)+k[3]*x)/(1-k[4]*exp(-k[1]*x^k[2]*exp(k[3]*x))))
y[4] <- -(5/(1-k[4]))+2*sum(exp(-k[1]*x^k[2]*exp(k[3]*x))/(1-k[4]*exp(-k[1]*x^k[2]*exp(k[3]*x))))
return(y)
}
kstart <- c(0.05, 0, 0.35, 0.9)
NMfun1(kstart)
nleqslv(kstart, NMfun1, control=list(btol=.0001),method="Newton")
Die geschätzten Werte für k erhalten sind; Die geschätzten Werte von k sind jedoch größer als Null.
Wenn Sie positive ganze Zahlen schätzen möchten, ist Ihr Problem Ihre Methode, nicht Ihre Startwerte. (Das heißt, wenn Sie positive ganze Zahlen schätzen wollen, warum fangen Sie bei nicht ganzzahligen Werten an?) – Gregor
Versuchen Sie vielleicht das 'nloptr'-Paket, es ist für nichtlineare Programmierprobleme. – Gregor
Das Paket 'nleqslv' hat keine Option, um Ganzzahl-Werte-Lösungen zu erzwingen. Es versucht, eine reellwertige Lösung zu finden, die das Gleichungssystem löst. Woher weißt du, dass es eine ganzzahlige Lösung gibt? Sie müssen anderswo nach einer Möglichkeit suchen, Ihr Problem zu lösen, wenn es eine Lösung hat! – Bhas