可以求解非线性方程 R 吗?

It is possible to solve equation R that are not linear?

我想构建一个接受 E[x] 和 Var[X] 的函数,并给出单变量对数正态变量的均值和标准误差。

E[x] = exp(mu + theta) 
Var[x] =  exp(2*mu + theta)*(exp(theta) - 1)

该函数会将 E[x]Var[x] 作为输入,而输出会给我 thetamu

有几个包提供了求解非线性方程组的方法和方法。其中之一是 nleqslv.

您需要提供一个函数,该函数return计算方程的实际值与期望值之间的差异。

加载包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包含mutheta的值。 Ex=2Varx=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的return值的不同元素的含义参见nleqslv的手册。

如果您想研究不同求解方法的效果,试试这个

testnslv(xstart,f,Ex=2,Varx=3)