Как минимизировать функцию с двумя переменными - PullRequest
0 голосов
/ 12 апреля 2020

Я хочу минимизировать функцию (log (37/1809) -log ((1 + a) / (1 + a exp (1) ^ (b (99-79))))) ^ 2 ( и найдите значения a и b, когда значение функции минимально ), но я не получил ответ, который, как я знаю, должен быть правильным.

Я пишу этот код в R:

fixed=c(FALSE,FALSE)
params<- fixed
funkcija_S1 <- function(p) {
  params[!fixed] <- p
  a <- params[1]
  b <- params[2]
  S1<-(log(37/1809)-log((1+a)/(1+a*exp(1)^(b*(99-79)))))^2
}
airb<-optim(c(a=0, b=1), funkcija_S1)
airb=airb[1]
airb<-as.numeric(unlist(airb))
a=airb[1]
b=airb[2]

Ответ, который я получаю, a = 0.82813 ..... и b = 0.23351 .... Ответ, который я ДОЛЖЕН получить, = 0,803228 и b = 0,234345. Значения a и b меняются в зависимости от того, что я записываю как первичные значения a и b в этой строке:

airb<-optim(c(a=0, b=1), funkcija_S1)       

Можно ли не указывать первичные значения в этой строке? Или, может быть, есть другой способ минимизировать это уравнение?

...