Main Content

Parametrizar funciones

Visión general

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

Las funciones de funciones de MATLAB evalúan expresiones matemáticas en un rango de valores. Se llaman funciones de funciones porque son funciones que aceptan un identificador de función (un puntero de una función) como valor de entrada. Cada una de estas funciones espera que su función objetivo tenga un número específico de variables de entrada. Por ejemplo, fzero e integral aceptan identificadores de funciones que tengan exactamente una variable de entrada.

Suponga que desea buscar el cero del polinomio cúbico x3 + bx + c para obtener diferentes valores de los coeficientes b y c. Aunque podría crear una función que acepte tres variables de entrada (x, b y c), no puede transferir un identificador de función que requiera las tres entradas a fzero. Sin embargo, puede aprovechar las propiedades de las funciones anónimas o anidadas para definir valores para otras entradas.

Parametrización mediante funciones anidadas

Un método para definir parámetros es usar una función anidada, una función contenida por completo en otra función de un archivo de programa. Para este ejemplo, cree un archivo llamado findzero.m que contenga una función principal findzero y una función anidada poly:

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 principal acepta los parámetros b y c como valores de entrada. La razón para anidar poly en findzero es que las funciones anidadas comparten el área de trabajo de sus funciones principales. Así, la función poly puede acceder a los valores de b y c que pasa a findzero.

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

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

Parametrización mediante funciones anónimas

Otro método para acceder a parámetros adicionales es usar una función anónima. Las funciones anónimas son funciones que puede definir en un solo comando, sin crear un archivo de programa independiente. Pueden utilizar cualquier variable que haya disponible en el área de trabajo actual.

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

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

La variable cubicpoly es un identificador de función para una función anónima con un valor de entrada, x. Los valores de entrada de las funciones anónimas aparecen entre paréntesis inmediatamente después del símbolo @ que crea el identificador de función. Puesto que b y c se encuentran en el área de trabajo al crear cubicpoly, la función anónima no requiere valores de entrada para dichos coeficientes.

No tiene que crear una variable intermedia, cubicpoly, para la función anónima. En su lugar, puede incluir la definición completa del identificador de función en 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 las funciones objetivo más complicadas que se definan en un archivo de función. Por ejemplo, suponga que tiene un archivo llamado cubicpoly.m con esta definición de función:

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

En la línea de comandos, defina b y c y, después, llame a fzero con una función anónima que invoque cubicpoly:

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

Nota

Para modificar 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