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);