Sei sulla pagina 1di 7

06 Funciones y ficheros de función Lic.

Amado Malca Villalobos

FUNCIONES Y FICHEROS DE FUNCION


Considere una función usual, con una variable de entrada (independiente, y una
variable de salida (dependiente). Lo que varia es la cantidad de argumentos que pueden
tener estas variables.
Ejemplo:
y  f  x   2 x  6 , una variable de entrada, y una de salida.
z  F  x, y   2 x 2  6 xy  y 3  8 , dos variables de entrada, y una de salida.
u, v   G  x, y, z    2 x  5 y  z, x  3 y  5z  , tres variables de entrada, y dos de salida.

Para realizar estas funciones se usaran archivos script de extensión: ****.m. En el


desarrollo de estas funciones es posible usar funciones predefinidas por MatLab,
también se pueden usar funciones definidas por el usuario, las cuales deben ubicarse
siempre en la carpeta de trabajo de MatLab.

Funciones predefinidas: cos(x), sqrt(x), exp(x), det(A), etc.

Funciones definidas por el usuario; generalmente para representar una función que se
usara en varios programas adicionales.

x FUNCIÓN y  f  x

CREACIÓN DE UN ARCHIVO DE FUNCIÓN


Básicamente un archivo de función, es un archivo tipo .m, visto en el capitulo tres. Pero
la diferencia está en la primera línea, que lleva una forma especial, para indicar lo de
función.
Ejemplo: Vamos a construir una función cuadrática, de la forma
y  f  x   3x 2  6 x  8, x  R
funcuad.m Ejecución en la ventana de comandos de
MatLab
function y =funcuad(x) >> y=funcuad(1),z=funcuad(2),w=funcuad(3)
y= 1
% Cálculo del valor de una
función cuadrática
z = 16
% w = 37
% El argumento de entrada es: >> y=funcuad([1,2,3])
% x: un numero real y = 1 16 37
% >> y=funcuad([1;2;3])
% El argumento de salida es:
y=
% y = 3x^2+6x-8, tambien real
1
y=3*x.^2+6*x-8; 16
37
>>

06 archivos de función 1
06 Funciones y ficheros de función Lic. Amado Malca Villalobos

Archivo script: funcuad.m

Con esta función se podrían hacer muchas cosas, como: graficar, derivar, integrar, etc.
Veamos una de ellas, grafiquemos en el intervalo [-10,10]

En la ventana de comandos de MatLab.


>> x=-10:0.1:10; y=funcuad(x); plot(x,y),grid
>>
Grafico Resultante:
400

350

300

250

200

150

100

50

-50
-10 -5 0 5 10

06 archivos de función 2
06 Funciones y ficheros de función Lic. Amado Malca Villalobos

Ejemplo: Cálculo de la altura y la distancia máximas que alcanzan un proyectil, cuando


se lanza con un ángulo determinado, y con una velocidad inicial dada.
funcuad.m
Function [hmax,dmax]=trayectoria(v0,theta)
% Cálculo de la altura y la distancia máximas, que alcanzan un
proyectil
%
% Los argumentos de entrada son:
% v0: velocidad inicial en m/s
% theta: ángulo en grados sexagesimales.
%
% Los argumentos de salida son:
% hmax: altura máxima en metros
% dmax: distancia máxima en metros

g=9.81;
v0x=v0*cos(theta*pi/180);
v0y=v0*sin(theta*pi/180);
thmax=v0y/g;hmax=v0y^2/(2*g);
ttot=2*thmax;dmax=v0x*ttot;

%Creación de un grafico de la trayectoria


tplot=linspace(0,ttot,200);
x=v0x*tplot;;
y=v0y*tplot-0.5*g*tplot.^2;
plot(x,y), grid
xlabel('DISTANCIA (m)')
ylabel('ALTURA (m)')
title('TRAYECTORIA DE UN PROYECTIL')
Ejecución en la ventana de comandos de MatLab
>> [hmax,dmax]=trayectoria(120,30)
hmax = 183.4862
dmax = 1.2712e+003
>> [hmax,dmax]=trayectoria(80,60)
hmax = 244.6483
dmax = 564.9911
>>

Grafico resultante
TRAYECTORIA DE UN PROYECTIL
250

200
ALTURA (m)

150

100

50

0
0 100 200 300 400 500 600
DISTANCIA (m)

06 archivos de función 3
06 Funciones y ficheros de función Lic. Amado Malca Villalobos

Ventana del programa: trayectoria.m

LAS PARTES DE UN FICHERO DE FUNCIÓN

Línea de definición de la función


Aquí tenemos la expresión: “function”, que define el fichero como una función.
También se define el nombre de la función. Y finalmente se define el número y orden
de los argumentos de entrada y salida. Siempre va en la primera línea.
El esquema de esta línea es:
f unction [argumentos de salida]  nombre_funcion  argumentos de entrada 
O también
f unction argumento de salida  nombre_funcion  argumentos de entrada 

La línea H1 y las líneas de texto de ayuda


Inmediatamente después de la línea de definición de función, están la llamada línea H1
y las líneas de texto de ayuda, que siempre empiezan con el símbolo “%”. Y
proporcionan información descriptiva sobre la función. La línea H1 es la que Matlab
busca en algunos casos de búsqueda de algunas palabras relacionadas con funciones.
Además esto se muestra con el comando “help nombre_funcion”
>> help trayectoria
Calculo de la la altura y la distancia máximas que alcanzan un proyectil

06 archivos de función 4
06 Funciones y ficheros de función Lic. Amado Malca Villalobos

Los argumentos de entrada son:


v0: velocidad inicial en m/s
theta: ángulo en grados.

Los argumentos de salida son:


hmax: altura máxima en metros
dmax: distancia máxima en metros

Cuerpo de la función
Aquí se tiene el código del programa mismo, que incluirá operaciones de entrada y/o
salida, también salida de gráficos si el problema lo amerita.

FUNCIONES EN LINEA
Se usan para realizar funciones simples, que también pueden tener una o más variables
de entrada.
nombre  inline  'exp resion matematica en forma de cadena '
nombre  inline  'exp resion matematica ','arg1','arg 2', ,'arg n ' 

y  f  x   3x 2  6 x  8
Ejemplo: Considerando la función cuadrática:

>> f=inline('3*x^2+6*x-8') % definiendo una function en linea


f = Inline function:
f(x) = 3*x^2+6*x-8
>> f=inline('3*x^2+6*x-8','x') % agregando la variable
f = Inline function:
f(x) = 3*x^2+6*x-8
>> f(1)
ans = 1
>> f(2)
ans = 16

Ejemplo: Ahora consideraremos una función real de dos variables:

>> G=inline('3*x+6*y+9*x*y-6','x','y')
G = Inline function:
G(x,y) = 3*x+6*y+9*x*y-6
>> G(1,2)
ans = 27
>> G(1,2),G(6,8)
ans = 27
ans = 492
>> [G(1,2), G(3,5), G(8,1), G(3,7)]
ans = 27 168 96 234
>> x=[1 2 3],y=[7 6 4]
x= 1 2 3
y= 7 6 4
>> G(x,y)
??? Error using ==> inlineeval at 15

06 archivos de función 5
06 Funciones y ficheros de función Lic. Amado Malca Villalobos

Error in inline expression ==> 3*x+6*y+9*x*y-6


Inner matrix dimensions must agree.
Error in ==> inline.subsref at 27
INLINE_OUT_ = inlineeval(INLINE_INPUTS_,
INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr);

Como aparece un error debemos redefinir la función, para cuando los argumentos son
vectores o matrices.

>> G=inline('3*x+6*y+9*x.*y-6','x','y') % véase la diferencia


G = Inline function:
G(x,y) = 3*x+6*y+9*x.*y-6
>> G(x,y)
ans = 102 144 135
>>
Ahora una función de dos variables de entrada y dos de salida
>> g=inline('[3*x+6*y+9,x+y-6]','x','y')
g = Inline function:
g(x,y) = [3*x+6*y+9,x+y-6]
>> g(2,3)
ans = 33 -1
>> x=[1 3 5],y=[9 8 4]
x= 1 3 5
y= 9 8 4
>> g(x,y)
ans = 66 66 48 4 5 3
>> g(1,9),g(3,8),g(5,4)
ans = 66 4
ans = 66 5
ans = 48 3
>>

Ejemplos 02: g  x, y   4x5 y  7 x3 y 2  8x2 y 4  6x  29 y 6


>> G=inline('4*(x.^5).*y+7*(x.^3).*(y.^2)-8*(x.^2).*(y.^4)+6*x-29*(y.^6)')
G = Inline function:
G(x,y) = 4*(x.^5).*y+7*(x.^3).*(y.^2)-8*(x.^2).*(y.^4)+6*x-29*(y.^6)
>> G(5,6),G(8,7),G(9,1)
ans = -1505694
ans = -3547965
ans = 240676
>> x=[-2 -1 0 1 2 3 4 5],y=[-3 -2 -1 0 1 2 3 4]
x = -2 -1 0 1 2 3 4 5
y = -3 -2 -1 0 1 2 3 4
>> G(x,y)
ans = -23865 -2010 -29 6 135 -290 -15165 -105954

06 archivos de función 6
06 Funciones y ficheros de función Lic. Amado Malca Villalobos

EL COMANDO “feval”
Este comando evalúa el valor de una función, en algún o algunos valores dados. La
diferencia con el caso anterior, está en que aquí se da la función, solo el nombre, y se
evalúa en el valor dado.
variable = feval(‘nombre_funcion’,valor_argumento)

Se tiene que seguir ciertos lineamientos, como son:


-El nombre de la función debe introducirse en forma de cadena.
-La función puede ser una de MATLAB, o alguna definida por el usuario.
- Los argumentos de entrada se separan por comas, y después del nombre de la función.
-Los argumentos de salida van entre corchetes, y separados por comas.

Ejemplo 01: Aquí vamos a definir una función H, y luego la evaluamos en x=1.
>> H=inline('exp(x.^2)./(1+x.^4)')
H = Inline function: H(x) = exp(x.^2)./(1+x.^4)
>> feval(H,1)
ans = 1.3591
>>
Ejemplo 02:
>> D=feval(inline('exp(x.^2)./(1+x.^4)'),1)
D = 1.3591
>> H=inline('exp(x.^2)./(1+x.^4)')
H = Inline function: H(x) = exp(x.^2)./(1+x.^4)
>> feval(H,1)
ans = 1.3591

>> G=inline('exp(x.^2)./(y+x.^4)')
G = Inline function: G(x,y) = exp(x.^2)./(y+x.^4)
>> feval(G,1,1)
ans = 1.3591
>> feval(G,4,5)
ans = 3.4046e+004

>> D=feval(inline('exp(x.^2)./(1+x.^4)'),1)
D = 1.3591
>> D=feval('sin',0)
D= 0
>> D=feval('sin',pi/6)
D = 0.5000
>> D=feval(inline('cos(x)+tan(x)'),pi/7)
D = 1.3825

06 archivos de función 7

Potrebbero piacerti anche