You are on page 1of 7

06 Funciones y ficheros de funcin Lic.

Amado Malca Villalobos

FUNCIONES Y FICHEROS DE FUNCION


Considere una funcin 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 extensin: ****.m. En el


desarrollo de estas funciones es posible usar funciones predefinidas por MatLab,
tambin 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 funcin que se
usara en varios programas adicionales.

x FUNCIN y f x

CREACIN DE UN ARCHIVO DE FUNCIN


Bsicamente un archivo de funcin, es un archivo tipo .m, visto en el capitulo tres. Pero
la diferencia est en la primera lnea, que lleva una forma especial, para indicar lo de
funcin.
Ejemplo: Vamos a construir una funcin cuadrtica, de la forma
y f x 3x 2 6 x 8, x R
funcuad.m Ejecucin en la ventana de comandos de
MatLab
function y =funcuad(x) >> y=funcuad(1),z=funcuad(2),w=funcuad(3)
y= 1
% Clculo del valor de una
funcin cuadrtica 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 funcin 1
06 Funciones y ficheros de funcin Lic. Amado Malca Villalobos

Archivo script: funcuad.m

Con esta funcin se podran 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 funcin 2
06 Funciones y ficheros de funcin Lic. Amado Malca Villalobos

Ejemplo: Clculo de la altura y la distancia mximas 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)
% Clculo de la altura y la distancia mximas, 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 mxima en metros
% dmax: distancia mxima 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;

%Creacin 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')
Ejecucin 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 funcin 3
06 Funciones y ficheros de funcin Lic. Amado Malca Villalobos

Ventana del programa: trayectoria.m

LAS PARTES DE UN FICHERO DE FUNCIN

Lnea de definicin de la funcin


Aqu tenemos la expresin: function, que define el fichero como una funcin.
Tambin se define el nombre de la funcin. Y finalmente se define el nmero y orden
de los argumentos de entrada y salida. Siempre va en la primera lnea.
El esquema de esta lnea es:
f unction [argumentos de salida] nombre_funcion argumentos de entrada
O tambin
f unction argumento de salida nombre_funcion argumentos de entrada

La lnea H1 y las lneas de texto de ayuda


Inmediatamente despus de la lnea de definicin de funcin, estn la llamada lnea H1
y las lneas de texto de ayuda, que siempre empiezan con el smbolo %. Y
proporcionan informacin descriptiva sobre la funcin. La lnea H1 es la que Matlab
busca en algunos casos de bsqueda de algunas palabras relacionadas con funciones.
Adems esto se muestra con el comando help nombre_funcion
>> help trayectoria
Calculo de la la altura y la distancia mximas que alcanzan un proyectil

06 archivos de funcin 4
06 Funciones y ficheros de funcin 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 mxima en metros
dmax: distancia mxima en metros

Cuerpo de la funcin
Aqu se tiene el cdigo del programa mismo, que incluir operaciones de entrada y/o
salida, tambin salida de grficos si el problema lo amerita.

FUNCIONES EN LINEA
Se usan para realizar funciones simples, que tambin pueden tener una o ms 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 funcin cuadrtica:

>> 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 funcin 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 funcin 5
06 Funciones y ficheros de funcin 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 funcin, para cuando los argumentos son
vectores o matrices.

>> G=inline('3*x+6*y+9*x.*y-6','x','y') % vase 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 funcin 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 4 x5 y 7 x3 y 2 8x 2 y 4 6 x 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 funcin 6
06 Funciones y ficheros de funcin Lic. Amado Malca Villalobos

EL COMANDO feval
Este comando evala el valor de una funcin, en algn o algunos valores dados. La
diferencia con el caso anterior, est en que aqu se da la funcin, solo el nombre, y se
evala en el valor dado.
variable = feval(nombre_funcion,valor_argumento)

Se tiene que seguir ciertos lineamientos, como son:


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

Ejemplo 01: Aqu vamos a definir una funcin 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 funcin 7

You might also like