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.

Parametrizar funciones

Visión general

En este tema se explica cómo almacenar o acceder a parámetros adicionales para funciones matemáticas a las que se pasa, como o.MATLAB®funciones de funciónfzerointegral

funciones de función evalúan expresiones matemáticas en un rango de valores.MATLAB Se denominan funciones de función porque son funciones que aceptan un identificador de función (un puntero a una función) como entrada. Cada una de estas funciones espera que la función objetiva tenga un número específico de variables de entrada. Por ejemplo, y acepte identificadores para las funciones que tienen exactamente una variable de entrada.fzerointegral

Supongamos que desea encontrar el cero del polinomio cúbicox3 para diferentes valores de los coeficientes y.+bx+cbc Aunque se puede crear una función que acepte tres variables de entrada (, y), no se puede pasar un identificador de función que requiera las tres entradas.xbcfzero Sin embargo, puede aprovechar las propiedades de las funciones anónimas o anidadas para definir valores para entradas adicionales.

Parametrizar mediante funciones anidadas

Un enfoque para definir los parámetros es utilizar una función completamente contenida dentro de otra función en un archivo de programa.función anidada Para este ejemplo, cree un archivo llamado que contenga una función primaria y una función anidada:findzero.mfindzeropoly

function y = findzero(b,c,x0)  y = fzero(@poly,x0);     function y = poly(x)    y = x^3 + b*x + c;    end end

La función anidada define el polinomio cúbico con una variable de entrada,.x La función primaria acepta los parámetros y como valores de entrada.bc La razón para anidar es que las funciones anidadas comparten el área de trabajo de sus funciones primarias.polyfindzero Por lo tanto, la función puede tener acceso a los valores de y que se pasa a.polybcfindzero

Para encontrar un cero del polinomio con y, utilizando el punto de partida, puede llamar desde la línea de comandos:b = 2c = 3.5x0 = 0findzero

x = findzero(2,3.5,0)
x =    -1.0945

Parametrizar el uso de funciones anónimas

Otro enfoque para acceder a parámetros adicionales es usar un.función anónima Las funciones anónimas son funciones que puede definir en un único comando, sin crear un archivo de programa independiente. Pueden utilizar cualquier variable que esté disponible en el espacio de trabajo actual.

Por ejemplo, cree un identificador para una función anónima que describa el polinomio cúbico y busque el cero:

b = 2; c = 3.5; cubicpoly = @(x) x^3 + b*x + c; x = fzero(cubicpoly,0)
x =    -1.0945

Variable es un identificador de función para una función anónima que tiene una entrada,.cubicpolyx Las entradas para las funciones anónimas aparecen entre paréntesis inmediatamente después del símbolo que crea el identificador de función.@ Porque y están en el área de trabajo cuando se crea, la función anónima no requiere entradas para esos coeficientes.bccubicpoly

No es necesario crear una variable intermedia, para la función anónima.cubicpoly En su lugar, puede incluir toda la definición del identificador de función dentro de la llamada a:fzero

b = 2; c = 3.5; x = fzero(@(x) x^3 + b*x + c,0)
x =    -1.0945

También puede utilizar funciones anónimas para llamar a funciones objetivas más complicadas que defina en un archivo de función. Por ejemplo, supongamos que tiene un archivo con el nombre de esta definición de función:cubicpoly.m

function y = cubicpoly(x,b,c) y = x^3 + b*x + c; end

En la línea de comandos, defina y, a continuación, llame con una función anónima que invoca:bcfzerocubicpoly

b = 2; c = 3.5; x = fzero(@(x) cubicpoly(x,b,c),0)
x =    -1.0945

Nota

Para cambiar los valores de los parámetros, debe crear una nueva función anónima. Por ejemplo:

b = 10; c = 25; x = fzero(@(x) x^3 + b*x + c,0);

Temas relacionados