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.

fzero

Raíz de la función no lineal

Descripción

ejemplo

x = fzero(fun,x0) intenta encontrar un punto donde.xfun(x) = 0 Esta solución es donde el signo de los cambios — no puede encontrar una raíz de una función tal como.fun(x)fzerox^2

ejemplo

x = fzero(fun,x0,options) utiliza para modificar el proceso de solución.Opciones

ejemplo

x = fzero(problem) resuelve un problema de búsqueda de raíz especificado por.problem

ejemplo

[x,fval,exitflag,output] = fzero(___) devuelve en la salida, codificando el motivo detenido y una estructura de salida que contiene información sobre el proceso de solución.fun(x)fvalexitflagfzero

Ejemplos

contraer todo

Calcular

<math display="block">
<mrow>
<mi>π</mi>
</mrow>
</math>
encontrando el cero de la función sinusoidal cerca.3

fun = @sin; % function x0 = 3; % initial point x = fzero(fun,x0)
x = 3.1416 

Encuentra el cero de coseno entre y.12

fun = @cos; % function x0 = [1 2]; % initial interval x = fzero(fun,x0)
x = 1.5708 

Tenga en cuenta que

<math display="block">
<mrow>
<mi mathvariant="normal">cos</mi>
<mo stretchy="false">(</mo>
<mn>1</mn>
<mo stretchy="false">)</mo>
</mrow>
</math>
Y
<math display="block">
<mrow>
<mi mathvariant="normal">cos</mi>
<mo stretchy="false">(</mo>
<mn>2</mn>
<mo stretchy="false">)</mo>
</mrow>
</math>
difieren en el signo.

Encuentra un cero de la función f(x) = x3 – 2x – 5.

Primero, escribe un archivo llamado.f.m

function y = f(x) y = x.^3-2*x-5;

Ahorre en su camino.f.mMATLAB®

Encuentra el cero de () cerca.fx2

fun = @f; % function x0 = 2; % initial point z = fzero(fun,x0)
z =     2.0946

Puesto que es un polinomio, usted puede encontrar el mismo cero real, y un par conjugada complejo de ceros, usando el comando.f(x)roots

roots([1 0 -2 -5])
   ans =    2.0946             -1.0473 + 1.1359i   -1.0473 - 1.1359i

Busque la raíz de una función que tenga un parámetro adicional.

myfun = @(x,c) cos(c*x);  % parameterized function c = 2;                    % parameter fun = @(x) myfun(x,c);    % function of x alone x = fzero(fun,0.1)
x = 0.7854 

Trace el proceso de solución estableciendo algunas funciones de trazado.

Defina la función y el punto inicial.

fun = @(x)sin(cosh(x)); x0 = 1;

Examine el proceso de solución estableciendo opciones que incluyan funciones de trazado.

options = optimset('PlotFcns',{@optimplotx,@optimplotfval});

Ejecutar incluyendo.fzeroOpciones

x = fzero(fun,x0,options)

x = 1.8115 

Resuelva un problema que se define mediante una exportación desde la aplicación de optimización.

Definir un problema en la aplicación de optimización. Escriba y rellene el problema como se muestra en la imagen.optimtool('fzero')

Nota

La aplicación Optimization advierte que se eliminará en una versión futura.

Seleccione File > Export to Workspace, y exporte el problema como se muestra en una variable llamada.problem

Escriba lo siguiente en la línea de comandos.

x = fzero(problem)
x =      1.8115

Encuentre el punto donde, y muestre la información sobre el proceso de la solución.exp(-exp(-x)) = x

fun = @(x) exp(-exp(-x)) - x; % function x0 = [0 1]; % initial interval options = optimset('Display','iter'); % show iterations [x fval exitflag output] = fzero(fun,x0,options)
   Func-count    x          f(x)             Procedure     2               1     -0.307799        initial     3        0.544459     0.0153522        interpolation     4        0.566101    0.00070708        interpolation     5        0.567143  -1.40255e-08        interpolation     6        0.567143   1.50013e-12        interpolation     7        0.567143             0        interpolation   Zero found in the interval [0, 1] 
x = 0.5671 
fval = 0 
exitflag = 1 
output = struct with fields:
    intervaliterations: 0
            iterations: 5
             funcCount: 7
             algorithm: 'bisection, interpolation'
               message: 'Zero found in the interval [0, 1]'

= 0 significa, como se desee.fvalfun(x) = 0

Argumentos de entrada

contraer todo

Función para resolver, especificada como un identificador para una función escalar o el nombre de dicha función. acepta un escalar y devuelve un escalar.funxfun(x)

Resuelve.fzerofun(x) = 0 Para resolver una ecuación, en lugar de resolver.fun(x) = c(x)fun2(x) = fun(x) - c(x) = 0

Para incluir parámetros adicionales en la función, consulte el ejemplo y la sección.Raíz de la función con parámetro adicionalPasar parámetros adicionales

Ejemplo: 'sin'

Ejemplo: @myFunction

Ejemplo: @(x)(x-a)^5 - 3*x + a - 1

Tipos de datos: char | function_handle | string

Valor inicial, especificado como un verdadero escalar o un vector real de 2 elementos.

  • Escalar: comienza e intenta ubicar un punto donde tiene el signo opuesto de.fzerox0x1fun(x1)fun(x0) A continuación, reduce de forma iterativa el intervalo donde los cambios firman para llegar a una solución.fzerofun

  • Vector de 2 elementos: comprueba y tiene signos opuestos y errores si no lo hacen.fzerofun(x0(1))fun(x0(2)) A continuación, reduce de forma iterativa el intervalo donde los cambios firman para llegar a una solución.fun Un intervalo debe ser finito; no puede contener ±.x0Inf

Sugerencia

Llamar con un intervalo (con dos elementos) suele ser más rápido que llamarlo con un escalar.fzerox0x0

Ejemplo: 3

Ejemplo: [2, 17]

Tipos de datos: double

Opciones para el proceso de solución, especificado como una estructura. Cree o modifique la estructura utilizando. utiliza estos campos de estructura.OpcionesoptimsetfzeroOpciones

Display

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

  • no muestra ninguna salida.'off'

  • muestra la salida en cada iteración.'iter'

  • muestra sólo la salida final.'final'

  • (valor predeterminado) muestra la salida sólo si la función no converge.'notify'

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'

OutputFcn

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

PlotFcns

Trace varias medidas de progreso mientras se ejecuta el algoritmo. Seleccione entre parcelas predefinidas o escriba las suyas propias. Pasar un identificador de función o una matriz de celdas de identificadores de función. El valor predeterminado es None ().[]

  • traza el punto actual.@optimplotx

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

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

TolX

Tolerancia de terminación activada, un escalar positivo.x El valor predeterminado es 2.2204 e – 16.eps Ver.Tolerancias y criterios de detención

Ejemplo: options = optimset('FunValCheck','on')

Tipos de datos: struct

Problema de búsqueda de raíz, especificado como una estructura con todos los campos siguientes.

Objetivo

Función objetiva

x0

Punto inicial para, escalar o Vector 2-Dx

solver

'fzero'

Opciones

Estructura de opciones, normalmente creada medianteoptimset

Puede generar exportando desde la aplicación de optimización.problem Ver o.Importación y exportación de su trabajoResolver el problema exportado

Tipos de datos: struct

Argumentos de salida

contraer todo

Ubicación de la raíz o el cambio de signo, devuelto como un escalar.

Valor de función en, devuelto como un escalar.x

Entero que codifica la condición de salida, lo que significa que la razón detuvo sus iteraciones.fzero

1

Función convergida a una solución.x

-1

El algoritmo finalizó con la función de salida o la función de trazado.

-3

o el valor de función se encontró durante la búsqueda de un intervalo que contiene un cambio de signo.NaNInf

-4

Se encontró un valor de función complejo al buscar un intervalo que contenía un cambio de signo.

-5

El algoritmo podría haber convergido a un punto singular.

-6

no detectaron un cambio de signo.fzero

Información sobre el proceso de búsqueda de raíz, devuelta como una estructura. Los campos de la estructura son:

intervaliterations

Número de iteraciones tomadas para encontrar un intervalo que contenga una raíz

iterations

Número de iteraciones de búsqueda cero

funcCount

Número de evaluaciones de funciones

algorithm

'bisection, interpolation'

message

Mensaje de salida

Algoritmos

El comando es un archivo de función.fzero El algoritmo, creado por T. Dekker, utiliza una combinación de métodos de interpolación cuadrática inversa, secante y bisección. Una versión de Algol 60, con algunas mejoras, se da en.[1] Una versión Fortran, sobre la que se basa, está en.fzero[2]

Referencias

[1] Brent, R., Algorithms for Minimization Without Derivatives, Prentice-Hall, 1973.

[2] Forsythe, G. E., M. A. Malcolm, and C. B. Moler, Computer Methods for Mathematical Computations, Prentice-Hall, 1976.

Capacidades ampliadas

Introducido antes de R2006a