Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

fsolve

Resuelve el sistema de ecuaciones no lineales

Descripción

Solucionador de sistema no lineal

Resuelve un problema especificado por

() = 0Fx

para, where () es una función que devuelve un valor vectorial.xFx

es un vector o una matriz; Ver.xArgumentos de matriz

ejemplo

x = fsolve(fun,x0) comienza e intenta resolver las ecuaciones, una matriz de ceros.x0fun(x) = 0

ejemplo

x = fsolve(fun,x0,options) resuelve las ecuaciones con las opciones de optimización especificadas en.Opciones Se usa para establecer estas opciones.optimoptions

ejemplo

x = fsolve(problem) resuelve, donde se describe una estructura.problemproblemArgumentos de entrada Cree la estructura exportando un problema desde la aplicación de optimización, como se describe en.problemExportar su trabajo

ejemplo

[x,fval] = fsolve(___), para cualquier sintaxis, devuelve el valor de la función objetiva en la solución.funx

ejemplo

[x,fval,exitflag,output] = fsolve(___) Además devuelve un valor que describe la condición de salida de, y una estructura con información sobre el proceso de optimización.exitflagfsolveoutput

[x,fval,exitflag,output,jacobian] = fsolve(___) Devuelve el jacobiano de la solución.funx

Ejemplos

contraer todo

Este ejemplo muestra cómo resolver dos ecuaciones no lineales en dos variables. Las ecuaciones son

Convierta las ecuaciones en el formulario .

Escriba una función que calcule la parte izquierda de estas dos ecuaciones.

 function F = root2d(x)  F(1) = exp(-exp(-(x(1)+x(2)))) - x(2)*(1+x(1)^2); F(2) = x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5;  

Guarde este código como un archivo denominado en la ruta de acceso de MATLAB®.root2d.m

Resuelve el sistema de ecuaciones comenzando en el punto.[0,0]

fun = @root2d; x0 = [0,0]; x = fsolve(fun,x0) 
 Equation solved.  fsolve completed because the vector of function values is near zero as measured by the value of the function tolerance, and the problem appears regular as measured by the gradient.   x =      0.3532    0.6061  

Examine el proceso de solución para un sistema no lineal.

Establezca las opciones para que no se muestren y una función de trazado que muestre la optimalidad de primer orden, que debería converger a 0 a medida que el algoritmo IULA.

options = optimoptions('fsolve','Display','none','PlotFcn',@optimplotfirstorderopt); 

Las ecuaciones en el sistema no lineal son

Convierta las ecuaciones en el formulario .

Escriba una función que calcule la parte izquierda de estas dos ecuaciones.

 function F = root2d(x)  F(1) = exp(-exp(-(x(1)+x(2)))) - x(2)*(1+x(1)^2); F(2) = x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5;  

Guarde este código como un archivo denominado en la ruta de acceso de MATLAB®.root2d.m

Resuelva el sistema no lineal a partir del punto y observe el proceso de solución.[0,0]

fun = @root2d; x0 = [0,0]; x = fsolve(fun,x0,options) 
 x =      0.3532    0.6061  

Cree una estructura problemática y resuelva el problema.fsolve

Resuelva el mismo problema que en, pero formule el problema usando una estructura problemática.Solución con opciones no predeterminadas

Establezca las opciones para que el problema no tenga ninguna visualización y una función de trazado que muestre la optimalidad de primer orden, que debería converger a 0 a medida que el algoritmo se IITA.

problem.options = optimoptions('fsolve','Display','none','PlotFcn',@optimplotfirstorderopt); 

Las ecuaciones en el sistema no lineal son

Convierta las ecuaciones en el formulario .

Escriba una función que calcule la parte izquierda de estas dos ecuaciones.

 function F = root2d(x)  F(1) = exp(-exp(-(x(1)+x(2)))) - x(2)*(1+x(1)^2); F(2) = x(1)*cos(x(2)) + x(2)*sin(x(1)) - 0.5;  

Guarde este código como un archivo denominado en la ruta de acceso de MATLAB®.root2d.m

Cree los campos restantes en la estructura del problema.

problem.objective = @root2d; problem.x0 = [0,0]; problem.solver = 'fsolve'; 

Resuelve el problema.

x = fsolve(problem) 
 x =      0.3532    0.6061  

Este ejemplo devuelve la pantalla iterativa que muestra el proceso de solución para el sistema de dos ecuaciones y dos desconocidas

2x1x2=ex1x1+2x2=ex2.

Reescribe las ecuaciones en la forma F(x) = 0:

2x1x2ex1=0x1+2x2ex2=0.

Comience la búsqueda de una solución en.x0 = [-5 -5]

En primer lugar, escriba un archivo que calcule los valores de las ecuaciones en.Fx

function F = myfun(x) F = [2*x(1) - x(2) - exp(-x(1));       -x(1) + 2*x(2) - exp(-x(2))];

Guarde este archivo de función como en su ruta.myfun.mMATLAB®

Configure el punto inicial. Configure las opciones para que devuelvan la visualización iterativa.

x0 = [-5;-5]; options = optimoptions('fsolve','Display','iter');

Llamar.fsolve

[x,fval] = fsolve(@myfun,x0,options)
                                         Norm of      First-order   Trust-region
 Iteration  Func-count     f(x)          step         optimality    radius
     0          3         47071.2                      2.29e+04               1
     1          6         12003.4              1       5.75e+03               1
     2          9         3147.02              1       1.47e+03               1
     3         12         854.452              1            388               1
     4         15         239.527              1            107               1
     5         18         67.0412              1           30.8               1
     6         21         16.7042              1           9.05               1
     7         24         2.42788              1           2.26               1
     8         27        0.032658       0.759511          0.206             2.5
     9         30     7.03149e-06       0.111927        0.00294             2.5
    10         33     3.29525e-13     0.00169132       6.36e-07             2.5

Equation solved.

fsolve completed because the vector of function values is near zero
as measured by the value of the function tolerance, and
the problem appears regular as measured by the gradient.

x =
    0.5671
    0.5671

fval =
  1.0e-006 *
      -0.4059
      -0.4059

Encuentre una matriz que satisfagaX

X*X*X=[1234],

comenzando en el punto.x= [1,1;1,1] Examine las salidas para ver la calidad y el proceso de la solución.fsolve

Cree una función anónima que calcule la ecuación de la matriz.

fun = @(x)x*x*x - [1,2;3,4];

Configure las opciones para apagar la pantalla. Establezca el punto inicial.x0

options = optimoptions('fsolve','Display','off'); x0 = ones(2);

Llame y obtenga información sobre el proceso de solución.fsolve

[x,fval,exitflag,output] = fsolve(fun,x0,options); x,fval,exitflag
x =     -0.1291    0.8602     1.2903    1.1612   fval =     1.0e-09 *     -0.1618    0.0778     0.1160   -0.0474   exitflag =       1

El valor de la marca de salida indica que la solución es confiable.1 Para comprobarlo manualmente, calcule el residuo (suma de cuadrados de) para ver lo cerca que está de cero.fval

sum(sum(fval.*fval))
ans =     4.7957e-20

Este pequeño residuo confirma que es una solución.x

realizado evaluaciones de funciones 35 para encontrar la solución, como se puede ver en la estructura.fsolveoutput

output.funcCount
ans =      35

Argumentos de entrada

contraer todo

Ecuaciones no lineales para resolver, especificadas como un identificador de función o un nombre de función. es una función que acepta un vector y devuelve un vector, las ecuaciones no lineales evaluadas en.funxFx Las ecuaciones a resolver son = 0 para todos los componentes de.FF La función se puede especificar como un identificador de función para un archivofun

x = fsolve(@myfun,x0)

donde se encuentra una función comomyfunMATLAB

function F = myfun(x) F = ...            % Compute function values at x

también puede ser un identificador de función para una función anónima.fun

x = fsolve(@(x)sin(x.*x),x0);

Si los valores definidos por el usuario para y son matrices, se convierten en vectores mediante la indexación lineal (consulte).xFIndexación de matrices (MATLAB)

Si el jacobiano también se puede calcular la opción jacobiana es, fijado porand'on'

options = optimoptions('fsolve','SpecifyObjectiveGradient','on')

la función debe devolver, en un segundo argumento de salida, el valor jacobiano, una matriz, en.funJx

Si devuelve un vector (matriz) de componentes y tiene longitud, donde es la longitud de, el jacobiano es un-por-matriz donde es la derivada parcial de con respecto a.funmxnnx0JmnJ(i,j)F(i)x(j) (El jacobiano es la transposición del gradiente de.)JF

Ejemplo: fun = @(x)x*x*x-[1,2;3,4]

Tipos de datos: char | function_handle | string

Punto inicial, especificado como un vector real o una matriz real. utiliza el número de elementos y el tamaño de para determinar el número y el tamaño de las variables que acepta.fsolvex0fun

Ejemplo: x0 = [1,2,3,4]

Tipos de datos: double

Opciones de optimización, especificadas como la salida de o una estructura como devoluciones.optimoptionsoptimset

Algunas opciones se aplican a todos los algoritmos, y otras son relevantes para determinados algoritmos. Consulte para obtener información detallada.Opciones de optimización referencia

Algunas opciones están ausentes en la pantalla.optimoptions Estas opciones aparecen en cursiva en la tabla siguiente. Para obtener más información, consulte.Ver opciones

All Algorithms
Algorithm

Elija entre (predeterminado), y.'trust-region-dogleg''trust-region''levenberg-marquardt'

La opción especifica una preferencia para el algoritmo que se utilizará.Algorithm Es sólo una preferencia porque para el algoritmo de la región de confianza, el sistema no lineal de ecuaciones no puede ser subdeterminado; es decir, el número de ecuaciones (el número de elementos devueltos por) debe ser al menos tantos como la longitud de.Ffunx Del mismo modo, para el algoritmo de confianza-región-dogleg, el número de ecuaciones debe ser el mismo que la longitud de. utiliza el algoritmo Levenberg-Marquardt cuando el algoritmo seleccionado no está disponible.xfsolve Para obtener más información sobre cómo elegir el algoritmo, consulte.Elegir el algoritmo

Para establecer algunas opciones de algoritmo utilizando en lugar de:optimsetoptimoptions

  • : Establezca el algoritmo en lugar de.Algorithm'trust-region-reflective''trust-region'

  • : Establezca el parámetro Levenberg-Marquardt inicial estableciendo una matriz de celdas como.InitDampingλAlgorithm{'levenberg-marquardt',.005}

CheckGradients

Compare los derivados suministrados por el usuario (degradados de objetivos o restricciones) con los derivados de diferenciación finita. Las opciones son o el valor predeterminado.truefalse

Para, el nombre es y los valores son o.optimsetDerivativeCheck'on''off' Ver.Las tablas de nombres de opciones actuales y heredadas

Diagnostics

Mostrar información de diagnóstico sobre la función que se debe minimizar o resolver. Las opciones son o el valor predeterminado.'on''off'

DiffMaxChange

Cambio máximo en las variables para los degradados de diferencias finitas (un escalar positivo). El valor predeterminado es.Inf

DiffMinChange

Cambio mínimo en las variables para los degradados de diferencias finitas (un escalar positivo). El valor predeterminado es.0

Display

Nivel de visualización (ver):Visualización iterativa

  • o no muestra ninguna salida.'off''none'

  • muestra la salida en cada iteración y proporciona el mensaje de salida predeterminado.'iter'

  • muestra la salida en cada iteración y proporciona el mensaje técnico de salida.'iter-detailed'

  • (valor predeterminado) muestra solo la salida final y proporciona el mensaje de salida predeterminado.'final'

  • muestra sólo la salida final y da el mensaje técnico de salida.'final-detailed'

FiniteDifferenceStepSize

Factor de tamaño de paso escalar o vectorial para diferencias finitas. Cuando se establece en un vector, las diferencias finitas de avance sonFiniteDifferenceStepSizevdelta

delta = v.*sign′(x).*max(abs(x),TypicalX);

donde excepto.sign′(x) = sign(x)sign′(0) = 1 Las diferencias finitas centrales son

delta = v.*max(abs(x),TypicalX);

Escalar se expande a un vector.FiniteDifferenceStepSize El valor predeterminado es para las diferencias finitas de avance y para las diferencias finitas centrales.sqrt(eps)eps^(1/3)

El nombre es.optimsetFinDiffRelStep Ver.Las tablas de nombres de opciones actuales y heredadas

FiniteDifferenceType

Las diferencias finitas, que se utilizan para estimar degradados, son (predeterminadas) o (centradas). toma el doble de evaluaciones de funciones, pero debe ser más precisa.'forward''central''central'

El algoritmo tiene cuidado de obedecer los límites al estimar ambos tipos de diferencias finitas. Así, por ejemplo, podría tomar una diferencia hacia atrás, en lugar de una hacia adelante, para evitar la evaluación en un punto fuera de los límites.

El nombre es.optimsetFinDiffType Ver.Las tablas de nombres de opciones actuales y heredadas

FunctionTolerance

Tolerancia de terminación en el valor de la función, un escalar positivo. El valor predeterminado es.1e-6 Ver.Tolerancias y criterios de detención

El nombre es.optimsetTolFun Ver.Las tablas de nombres de opciones actuales y heredadas

FunValCheck

Compruebe si los valores de función objetiva son válidos. muestra un error cuando la función objetiva devuelve un valor que es, o.'on'complexInfNaN El valor predeterminado, no muestra ningún error.'off'

MaxFunctionEvaluations

Número máximo de evaluaciones de funciones permitidas, un entero positivo. El valor predeterminado es.100*numberOfVariables Mira y.Tolerancias y criterios de detenciónIteraciones y recuentos de funciones

El nombre es.optimsetMaxFunEvals Ver.Las tablas de nombres de opciones actuales y heredadas

MaxIterations

Número máximo de iteraciones permitidas, un entero positivo. El valor predeterminado es.400 Mira y.Tolerancias y criterios de detenciónIteraciones y recuentos de funciones

El nombre es.optimsetMaxIter Ver.Las tablas de nombres de opciones actuales y heredadas

OptimalityTolerance

Tolerancia de terminación en la optimalidad de primer orden (un escalar positivo). El valor predeterminado es.1e-6 Ver.Medida de optimalidad de primer orden

Internamente, el algoritmo utiliza una tolerancia de optimalidad (criterio de parada) de veces y no utiliza.'levenberg-marquardt'1e-4FunctionToleranceOptimalityTolerance

OutputFcn

Especifique una o varias funciones definidas por el usuario a las que llama una función de optimización en cada iteración. Pasar un identificador de función o una matriz de celdas de identificadores de función. El valor predeterminado es None ().[] Ver.Sintaxis de función de salida

PlotFcn

Traza varias medidas de progreso mientras se ejecuta el algoritmo; seleccionar de parcelas predefinidas o escribir las suyas propias. Pase un nombre de función de trazado integrado, un identificador de función o una matriz de celdas de nombres de función de trazado integrados o identificadores de función. Para las funciones de trazado personalizadas, pase los identificadores de función. El valor predeterminado es None ():[]

  • traza el punto actual.'optimplotx'

  • traza el recuento de funciones.'optimplotfunccount'

  • traza el valor de la función.'optimplotfval'

  • traza el tamaño del paso.'optimplotstepsize'

  • traza la medida de optimalidad de primer orden.'optimplotfirstorderopt'

Para obtener información sobre cómo escribir una función de trazado personalizada, consulte.Sintaxis de función de trazado

El nombre es.optimsetPlotFcns Ver.Las tablas de nombres de opciones actuales y heredadas

SpecifyObjectiveGradient

Si, utiliza una información jacobiana definida por el usuario (definida en) o jacobiana (cuando se utiliza), para la función objetiva.truefsolvefunJacobianMultiplyFcn Si (por defecto), se aproxima al jacobiano utilizando diferencias finitas.falsefsolve

Para, el nombre es y los valores son o.optimsetJacobian'on''off' Ver.Las tablas de nombres de opciones actuales y heredadas

StepTolerance

Tolerancia de terminación activada, un escalar positivo.x El valor predeterminado es.1e-6 Ver.Tolerancias y criterios de detención

El nombre es.optimsetTolX Ver.Las tablas de nombres de opciones actuales y heredadas

TypicalX

Valores típicos.x El número de elementos en es igual al número de elementos en, el punto de partida.TypicalXx0 El valor predeterminado es. utiliza para escalar las diferencias finitas para la estimación de degradado.ones(numberofvariables,1)fsolveTypicalX

El algoritmo utiliza como los términos diagonales de una matriz de escalado.trust-region-doglegTypicalX

UseParallel

Cuando, estima los degradados en paralelo.truefsolve Deshabilite estableciendo el valor predeterminado,.false Ver.Computación paralela

trust-region Algorithm
JacobianMultiplyFcn

Función de multiplicación jacobiana, especificada como un manejador de funciones. Para problemas estructurados a gran escala, esta función calcula el producto de matriz jacobiana, o sin formar realmente.J*YJ'*YJ'*(J*Y)J La función es de la forma

W = jmfun(Jinfo,Y,flag)

donde contiene una matriz utilizada para computar (o, o).JinfoJ*YJ'*YJ'*(J*Y) El primer argumento debe ser el mismo que el segundo argumento devuelto por la función objetiva, por ejemplo, enJinfofun

[F,Jinfo] = fun(x)

es una matriz que tiene el mismo número de filas que hay dimensiones en el problema. determina qué producto calcular:Yflag

  • Si.flag == 0W = J'*(J*Y)

  • Si.flag > 0W = J*Y

  • Si.flag < 0W = J'*Y

En cada caso, no se forma explícitamente. utiliza para calcular el preacondicionador.JfsolveJinfo Consulte para obtener información sobre cómo suministrar valores para cualquier necesidad de parámetros adicionales.Pasar parámetros adicionalesjmfun

Nota

debe establecerse para que pase de a.'SpecifyObjectiveGradient'truefsolveJinfofunjmfun

Vea un ejemplo similar.Minimización con hessian estructurado denso, Equalidades lineales

El nombre es.optimsetJacobMult Ver.Las tablas de nombres de opciones actuales y heredadas

JacobPattern

Patrón de la Sparsity del jacobiano para la diferenciación finita. Ajuste cuando dependa de.JacobPattern(i,j) = 1fun(i)x(j) De lo contrario, establecer.JacobPattern(i,j) = 0 En otras palabras, cuando puede tener ∂/∂ ≠ 0.JacobPattern(i,j) = 1fun(i)x(j)

Se utiliza cuando es incómodo calcular la matriz jacobiana, aunque se puede determinar (digamos, por inspección) cuando depende. puede aproximarse a través de diferencias finitas dispersas cuando se da.JacobPatternJfunfun(i)x(j)fsolveJJacobPattern

En el peor de los casos, si la estructura es desconocida, no la establezca.JacobPattern El comportamiento predeterminado es como si se tratara de una matriz densa de unos.JacobPattern A continuación, calcula una aproximación de diferencia finita completa en cada iteración.fsolve Esto puede ser muy costoso para problemas grandes, por lo que generalmente es mejor determinar la estructura de la dispersión.

MaxPCGIter

Número máximo de iteraciones PCG (degradado conjugada precondicionada), un escalar positivo. El valor predeterminado es.max(1,floor(numberOfVariables/2)) Para obtener más información, consulte.Algoritmos de resolución de ecuaciones

PrecondBandWidth

Ancho de banda superior del preacondicionador para PCG, un entero no negativo. El valor predeterminado es, lo que significa que se utiliza una factorización directa (Cholesky) en lugar de los degradados conjugados (CG).PrecondBandWidthInf La factorización directa es computacionalmente más costosa que CG, pero produce un mejor paso de calidad hacia la solución. Se establece en para el preacondicionamiento diagonal (ancho de banda superior de 0).PrecondBandWidth0 Para algunos problemas, un ancho de banda intermedio reduce el número de iteraciones PCG.

SubproblemAlgorithm

Determina cómo se calcula el paso de iteración. El valor predeterminado,, toma un paso más lento pero más preciso que.'factorization''cg' Ver.Algoritmo de fsolve de la región de confianza

TolPCG

Tolerancia de terminación en la iteración PCG, un escalar positivo. El valor predeterminado es.0.1

Levenberg-Marquardt Algorithm
InitDamping

Valor inicial del parámetro Levenberg-Marquardt, un escalar positivo. El valor predeterminado es.1e-2 Para obtener más información, consulte.El método Levenberg-Marquardt

ScaleProblem

a veces puede mejorar la convergencia de un problema mal escalado.'jacobian' El valor predeterminado es.'none'

Ejemplo: options = optimoptions('fsolve','FiniteDifferenceType','central')

Estructura problemática, especificada como estructura con los siguientes campos:

Nombre de campoEntrada

Objetivo

Función objetiva

x0

Punto inicial parax

solver

'fsolve'

Opciones

Las opciones creadas conoptimoptions

La forma más sencilla de obtener una estructura es exportar el problema desde la aplicación de optimización.problem

Tipos de datos: struct

Argumentos de salida

contraer todo

Solución, devuelta como un vector real o una matriz real. El tamaño de es el mismo que el tamaño de.xx0 Normalmente, es una solución local para el problema cuando es positivo.xexitflag Para obtener información sobre la calidad de la solución, consulte.Cuando el Solver se ejecuta correctamente

Valor de la función objetiva en la solución, devuelto como un vector real. Generalmente, =.fvalfun(x)

Motivo detenido, devuelto como un entero.fsolve

1

Ecuación resuelta. La optimalidad de primer orden es pequeña.

2

Ecuación resuelta. Cambio en menor que la tolerancia especificada.x

3

Ecuación resuelta. Cambio en el residuo menor que la tolerancia especificada.

4

Ecuación resuelta. Magnitud de la dirección de búsqueda menor que la tolerancia especificada.

0

Número de iteraciones superada o número de evaluaciones de función superada.options.MaxIterationsoptions.MaxFunctionEvaluations

-1

Función de salida o función de trazado detuvo el algoritmo.

-2

Ecuación no resuelta. El mensaje de salida puede tener más información.

-3

Ecuación no resuelta. El radio de región de confianza se volvió demasiado pequeño (algoritmo).trust-region-dogleg

Información sobre el proceso de optimización, devuelta como una estructura con campos:

iterations

Número de iteraciones tomadas

funcCount

Número de evaluaciones de funciones

algorithm

Algoritmo de optimización utilizado

cgiterations

Número total de iteraciones PCG (solo algoritmo)'trust-region'

stepsize

Desplazamiento final en (no en)x'trust-region-dogleg'

firstorderopt

Medida de la optimalidad de primer orden

message

Mensaje de salida

Jacobiano en la solución, regresó como una verdadera matriz. es la derivada parcial de con respecto a la solución.jacobian(i,j)fun(i)x(j)x

Limitaciones

  • La función a resolver debe ser continua.

  • Cuando se realiza correctamente, solo da una raíz.fsolve

  • El método dogleg de la región de confianza por defecto sólo se puede utilizar cuando el sistema de ecuaciones es cuadrado, es decir, el número de ecuaciones equivale al número de desconocidos. Para el método Levenberg-Marquardt, el sistema de ecuaciones no tiene por qué ser cuadrado.

Sugerencias

  • Para problemas grandes, es decir, aquellos con miles de variables o más, Ahorre memoria (y posiblemente Ahorre tiempo) estableciendo la opción y la opción a.Algorithm'trust-region'SubproblemAlgorithm'cg'

Algoritmos

Los métodos de Levenberg-Marquardt y de la región de confianza se basan en los algoritmos de mínimos cuadrados no lineales que también se utilizan en.lsqnonlin Utilice uno de estos métodos si el sistema puede no tener un cero. El algoritmo todavía devuelve un punto donde el residuo es pequeño. Sin embargo, si el jacobiano del sistema es singular, el algoritmo puede converger a un punto que no es una solución del sistema de ecuaciones (ver).Limitaciones

  • De forma predeterminada, elige el algoritmo dogleg de la región de confianza.fsolve El algoritmo es una variante del método dogleg Powell descrito en.[8] Es similar en la naturaleza al algoritmo implementado en.[7] Ver.Método dogleg de la región de confianza

  • El algoritmo de región de confianza es un método de región de confianza de subespacio y se basa en el método de Newton interior-reflectante descrito en y.[1][2] Cada iteración implica la solución aproximada de un gran sistema lineal utilizando el método de gradientes conjugados preacondicionados (PCG). Ver.Algoritmo de fsolve de la región de confianza

  • El método Levenberg-Marquardt se describe en referencias y.[4][5][6] Ver.El método Levenberg-Marquardt

Referencias

[1] Coleman, T.F. and Y. Li, “An Interior, Trust Region Approach for Nonlinear Minimization Subject to Bounds,” SIAM Journal on Optimization, Vol. 6, pp. 418-445, 1996.

[2] Coleman, T.F. and Y. Li, “On the Convergence of Reflective Newton Methods for Large-Scale Nonlinear Minimization Subject to Bounds,” Mathematical Programming, Vol. 67, Number 2, pp. 189-224, 1994.

[3] Dennis, J. E. Jr., “Nonlinear Least-Squares,” State of the Art in Numerical Analysis, ed. D. Jacobs, Academic Press, pp. 269-312.

[4] Levenberg, K., “A Method for the Solution of Certain Problems in Least-Squares,” Quarterly Applied Mathematics 2, pp. 164-168, 1944.

[5] Marquardt, D., “An Algorithm for Least-squares Estimation of Nonlinear Parameters,” SIAM Journal Applied Mathematics, Vol. 11, pp. 431-441, 1963.

[6] Moré, J. J., “The Levenberg-Marquardt Algorithm: Implementation and Theory,” Numerical Analysis, ed. G. A. Watson, Lecture Notes in Mathematics 630, Springer Verlag, pp. 105-116, 1977.

[7] Moré, J. J., B. S. Garbow, and K. E. Hillstrom, User Guide for MINPACK 1, Argonne National Laboratory, Rept. ANL-80-74, 1980.

[8] Powell, M. J. D., “A Fortran Subroutine for Solving Systems of Nonlinear Algebraic Equations,” Numerical Methods for Nonlinear Algebraic Equations, P. Rabinowitz, ed., Ch.7, 1970.

Capacidades ampliadas

Introducido antes de R2006a