找回密码
 注册
查看: 2260|回复: 0

R语言 rootSolve包 multiroot()函数中文帮助文档(中英文对照)

[复制链接]
发表于 2012-9-27 22:59:44 | 显示全部楼层 |阅读模式
multiroot(rootSolve)
multiroot()所属R语言包:rootSolve

                                         Solves for n roots of n (nonlinear) equations.
                                         解决的n(非线性)方程的n个根。

                                         译者:生物统计家园网 机器人LoveR

描述----------Description----------

Given a vector of n variables, and a set of n (nonlinear) equations in these variables,
由于n个变量的矢量,以及一组n个(非线性)方程在这些变量中,

estimates the root of the equations, i.e. the variable values where all function values = 0.
估计方程的根,即其中所有的函数值的变量值= 0。

Assumes a full Jacobian matrix, uses the Newton-Raphson method.
假设一个完整的雅可比矩阵,采用Newton-Raphson方法。


用法----------Usage----------


multiroot(f, start, maxiter = 100,
          rtol = 1e-6, atol = 1e-8, ctol = 1e-8,
          useFortran = TRUE, positive = FALSE,
          jacfunc = NULL, jactype = "fullint",
          verbose = FALSE, bandup = 1, banddown = 1, ...)



参数----------Arguments----------

参数:f
function for which the root is sought; it must return a vector with as many values as the length of start.  
函数的根要求,它必须返回一个矢量的start的长度与尽可能多的价值。


参数:start
vector containing initial guesses for the unknown x; if start has a name attribute, the names will be used to label the output vector.  
向量的初始猜测的未知Xstart有一个name属性,名称将被用于标记输出向量。


参数:maxiter
maximal number of iterations allowed.  
允许的最大数目的迭代。


参数:rtol
relative error tolerance, either a scalar or a vector, one value for each element in the unknown x.  
相对误差,无论是一个标量或向量,未知X中的每个元素的一个值。


参数:atol
absolute error tolerance, either a scalar or a vector, one value for each element in x.  
绝对误差,无论是一个标量或向量,在x中的每个元素的一个值。


参数:ctol
a scalar. If between two iterations, the maximal change in the variable values is less than this amount, then it is assumed that the root is found.  
一个标量。如果两次迭代之间的最大变化的变量的值是小于这个量,那么它被假定,发现根。


参数:useFortran
logical, if FALSE, then an R -implementation of the Newton-Raphson method is used - see details.  
逻辑,如果FALSE,然后执行R-Newton-Raphson方法的使用 - 查看详细信息。


参数:positive
if TRUE, the unknowns y are forced to be non-negative numbers.  
如果TRUE,未知数y是被迫成为非负数。


参数:jacfunc
if not NULL, a user-supplied R function that estimates the Jacobian of the system of differential equations dydot(i)/dy(j). In some circumstances, supplying jacfunc can speed up the computations.  The R calling sequence for jacfunc is identical to that of func.  If the Jacobian is a full matrix, jacfunc should return a matrix dydot/dy, where the ith row contains the derivative of dy_i/dt with respect to y_j, or a vector containing the matrix elements by columns.  If the Jacobian is banded, jacfunc should return a matrix containing only the nonzero bands of the jacobian, (dydot/dy), rotated row-wise.  
如果不是NULL,估计雅可比的系统微分方程dydot的(I)/ DY(j)条用户提供的R函数。在某些情况下,提供jacfunc可以加快计算。的R调用jacfunc的序列是相同的func。如果雅可比是一个完整的矩阵,jacfunc应该返回一个矩阵dydot / DY,其中第i行包含衍生工具的dy_i/dty_j,或一个向量,包含矩阵元素由列。如果是带状的雅可比,jacfunc应该返回一个矩阵的非零带的雅可比,(dydot / DY),逐行旋转。


参数:jactype
the structure of the Jacobian, one of "fullint", "fullusr", "bandusr", "bandint", or "sparse" - either full or banded and estimated internally or by the user, or arbitrary sparse. If the latter, then the solver will call, stodes, else stode  If the Jacobian is arbitrarily "sparse", then it will be calculated by the solver (i.e. it is not possible to also specify jacfunc).  
的雅可比矩阵,之一“fullint”,“fullusr”中,“bandusr”中,“bandint”,或“稀疏” - 要么全部或带状和内部或由用户,或任意稀疏估计中的结构。如果是后者,那么求解器将调用,stodes,否则stode如果雅可比任意“疏”,那么它会被计算的求解器(也就是说,它是不可能的,也可以指定 jacfunc“)。


参数:verbose
if TRUE: full output to the screen, e.g. will output the steady-state settings.  
如果TRUE:完整的输出到屏幕上,例如将输出的稳定状态设置。


参数:bandup
number of non-zero bands above the diagonal, in case the Jacobian is banded.  
数量的非零对角线以上频带的情况下,是带状的Jacobian。


参数:banddown
number of non-zero bands below the diagonal, in case the jacobian is banded.  
对角以下的数量的非零频带的情况下,是带状的雅可比。


参数:...
additional arguments passed to function f.  
额外的参数传递给函数的f。


Details

详细信息----------Details----------

start gives the initial guess for each variable; different initial guesses may return different roots.
start给每个变量的初始猜测,不同的初始猜测可能会返回不同的根源。

The input parameters rtol, and atol determine the error control performed by the solver.  
的输入参数rtol和atol确定错误的求解器进行控制。

The solver will control the vector e of estimated local errors in f, according to an inequality of the form max-norm of ( e/ewt ) <= 1, where ewt is a vector of positive error weights.  The values of rtol and atol should all be non-negative.
求解器将控制的向量e f中的估计错误,根据不平等的最大规范的形式(E / EWT)<=1,EWT是一个积极的错误权重向量。 rtol和atol都应该是非负的值。

The form of ewt is:
EWT的形式是:

where multiplication of two vectors is element-by-element.
两个向量的乘法是元素的元素。

In addition, the solver will stop if between two iterations, the maximal change in the values of x is less than ctol.
此外,求解器将停止,如果两次迭代之间,最大的变化在x的值是小于ctol。

There is no checking whether the requested precision exceeds the capabilities of the machine.
有没有要求精度是否超过本机的功能的检查。


值----------Value----------

a list containing:
一个列表,其中包含:


参数:root
the location (x-values) of the root.  
的位置(x值)的根。


参数:f.root
the value of the function evaluated at the root.  
在root评价函数的值。


参数:iter
the number of iterations used.  
使用的迭代数量。


参数:estim.precis
the estimated precision for root.  It is defined as the mean of the absolute function values (mean(abs(f.root))).  
估计的精度为root。它被定义为绝对函数值的平均值(平均(绝对值(f.root)))。


注意----------Note----------

The Fortran implementation of the Newton-Raphson method function (the default) is generally faster than the R implementation. The R implementation has been included for didactic purposes.
Fortran语言实现的牛顿 - 拉夫逊法的功能(默认值)是通常速度比R的实施。实施的R已被列入教学目的。

multiroot makes use of function stode. Technically, it is just a wrapper around function stode. If the sparsity structure of the Jacobian is known, it may be more efficiently to call stode, stodes, steady, steady.1D, steady.2D, steady.3D.
multiroot使用功能stode。从技术上讲,它只是一个功能stode的包装。如果稀疏的雅可比矩阵的结构是已知的,它可能是更有效地,调用stode, stodes, steady, steady.1D, steady.2D, steady.3D。

It is NOT guaranteed that the method will converge to the root.
它不能保证该方法将收敛到根。


(作者)----------Author(s)----------



Karline Soetaert &lt;karline.soetaert@nioz.nl&gt;




参见----------See Also----------

stode, which uses a different function call.
stode,它使用一个不同的函数调用。

uniroot.all, to solve for all roots of one (nonlinear) equation
uniroot.all,解决根源之一方程(非线性)

steady, steady.band,  steady.1D, steady.2D, steady.3D, steady-state solvers, which find the roots of ODEs or PDEs. The function call differs from multiroot.
steady,steady.band,steady.1D,steady.2D,steady.3D,稳态解算器,找到常微分方程和偏微分方程的根。函数调用不同于multiroot。

jacobian.full, jacobian.band, estimates the Jacobian matrix assuming a full or banded structure.
jacobian.full,jacobian.band,估计雅可比矩阵假设全部或带状结构。

gradient, hessian, estimates the gradient matrix or the Hessian.
gradient,hessian,估计的梯度矩阵或Hessian的。


实例----------Examples----------


## =======================================================================[#================================================= ======================]
## example 1  [#示例1]
## 2 simultaneous equations[#2联立方程组]
## =======================================================================[#================================================= ======================]

model <- function(x) c(F1 = x[1]^2+ x[2]^2 -1,
                       F2 = x[1]^2- x[2]^2 +0.5)

(ss <- multiroot(f = model, start = c(1, 1)))

## =======================================================================[#================================================= ======================]
## example 2[#示例2]
## 3 equations, two solutions[第3个方程,两种解决方案]
## =======================================================================[#================================================= ======================]

model <- function(x) c(F1 = x[1] + x[2] + x[3]^2 - 12,
                       F2 = x[1]^2 - x[2] + x[3] - 2,
                       F3 = 2 * x[1] - x[2]^2 + x[3] - 1 )

# first solution[第一个解决方案]
(ss <- multiroot(model, c(1, 1, 1), useFortran = FALSE))
(ss <- multiroot(f = model, start = c(1, 1, 1)))

# second solution; use different start values[第二个解决方案,使用不同的启动值]
(ss <- multiroot(model, c(0, 0, 0)))
model(ss$root)

## =======================================================================[#================================================= ======================]
## example 3: find a matrix[例3:找到一个矩阵]
## =======================================================================[#================================================= ======================]

f2<-function(x)   {
X <- matrix(nrow = 5, x)
X %*% X %*% X -matrix(nrow = 5, data = 1:25, byrow = TRUE)
}
x <- multiroot(f2, start = 1:25 )$root
X <- matrix(nrow = 5, x)

X%*%X%*%X

转载请注明:出自 生物统计家园网(http://www.biostatistic.net)。


注:
注1:为了方便大家学习,本文档为生物统计家园网机器人LoveR翻译而成,仅供个人R语言学习参考使用,生物统计家园保留版权。
注2:由于是机器人自动翻译,难免有不准确之处,使用时仔细对照中、英文内容进行反复理解,可以帮助R语言的学习。
注3:如遇到不准确之处,请在本贴的后面进行回帖,我们会逐渐进行修订。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-25 17:59 , Processed in 0.037168 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表