是否可以求解非线性方程R?

问题描述 投票:0回答:1

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

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

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

r data-analysis normal-distribution
1个回答
0
投票

有许多软件包提供了解决非线性方程组的方法和手段。其中之一是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包含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的返回值的不同元素的含义,请参见nleqslv的手册。

如果您想研究不同求解方法的效果,请尝试此

testnslv(xstart,f,Ex=2,Varx=3)
© www.soinside.com 2019 - 2024. All rights reserved.