可以求解非线性方程 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]
作为输入,而输出会给我 theta
和 mu
有几个包提供了求解非线性方程组的方法和方法。其中之一是 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
包含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
的return值的不同元素的含义参见nleqslv
的手册。
如果您想研究不同求解方法的效果,试试这个
testnslv(xstart,f,Ex=2,Varx=3)
我想构建一个接受 E[x] 和 Var[X] 的函数,并给出单变量对数正态变量的均值和标准误差。
E[x] = exp(mu + theta)
Var[x] = exp(2*mu + theta)*(exp(theta) - 1)
该函数会将 E[x]
和 Var[x]
作为输入,而输出会给我 theta
和 mu
有几个包提供了求解非线性方程组的方法和方法。其中之一是 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
包含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
的return值的不同元素的含义参见nleqslv
的手册。
如果您想研究不同求解方法的效果,试试这个
testnslv(xstart,f,Ex=2,Varx=3)