Существует несколько пакетов, которые предоставляют способы и средства для решения системы нелинейных уравнений. Одним из них является nleqslv
.
. Вам необходимо предоставить функцию, которая возвращает разницу между фактическим значением уравнений и желаемым значением.
Загрузка пакета nleqslv
и определите следующую функцию
library(nleqslv)
f <- function(x,Ex,Varx) {
y<- numeric(length(x))
mu <- x[1]
theta <- x[2]
y[1] <- exp(mu+theta) - Ex
y[2] <- exp(2*mu+theta)*(exp(theta)-1) - Varx
y
}
Вектор x
в функции содержит значения mu
и theta
. Пример с Ex=2
и Varx=3
и некоторыми случайными начальными значениями
xstart <- c(1,1)
nleqslv(xstart,f,Ex=2,Varx=3)
дает следующее
$x
[1] -0.6931472 1.3862944
$fvec
[1] -8.095125e-11 -8.111645e-11
$termcd
[1] 1
$message
[1] "Function criterion near zero"
$scalex
[1] 1 1
$nfcnt
[1] 31
$njcnt
[1] 2
$iter
[1] 22
См. В руководстве по nleqslv
значение различных элементов возвращаемого значения nleqslv
.
Если вы хотите исследовать влияние различных методов решения, попробуйте это
testnslv(xstart,f,Ex=2,Varx=3)