Escolar Documentos
Profissional Documentos
Cultura Documentos
Funciones annimas
Una funcin annima es una funcin que no es almacenada en un archivo de programa, pero es
asociada con una variable cuyo tipo de dato es manejado por la funcin. Las funciones annimas
pueden aceptar entradas y retornar salidas, tal como lo hacen las funciones estndar. Sin embargo,
solo pueden contener una sola sentencia ejecutable.
Ejemplo:
>>f = @(x) 1/x - (x-1)
f =
@(x)1/x-(x-1)
>> f(5)
ans =
-3.800
>> g = @(x,y) 1/y -(x-1)
g =
@(x,y)1/y-(x-1)
>> g(5,2)
ans =
-3.5000
Una grfica de f(x) en el intervalo 0 x 4 se obtiene con:
>> ezplot(f,0,4)
El nombre ezplot se refiere a "easy plot" (grfico fcil).An cuando f(x) se hace infinito cuando
x 0, ezplot lo grafica automticamente en una razonable escala vertical. La sentencia
>>phi = fzero(f,1)
busca un cero de f(x) cerca de x = 1. Produce una aproximacin que es certera a casi precisin
completa. El resultado puede ser insertado en el grfico ezplot con
>> hold on
>>plot(phi,0,'o')
clc
clear all
disp('Programa que genera la tabla de una funcin f(x),')
disp('la grafica y encuentra una raz')
f = @(x) x*sin(x);
fprintf('x\t\t\tx*sin(x)\n**********************\n')
for i=0:0.1:1
fprintf('%4.2f\t\t%6.4f\n',i,f(i));
end
ezplot(f,-10,10)
% Se busca una raz de la funcin
x = fzero(f,1);
fprintf('Se encontr una raz en %8.3f\n',x)
hold on
plot(x,0,'o')
grid on
Programa que genera la tabla de una funcin f(x), la grafica
y encuentra una raz
x
x*sin(x)
**********************
0.00
0.0000
0.10
0.0100
0.20
0.0397
0.30
0.0887
0.40
0.1558
0.50
0.2397
0.60
0.3388
0.70
0.4510
0.80
0.5739
0.90
0.7050
1.00
0.8415
Se encontr una raz en
3.142
x sin(x)
8
6
4
2
0
-2
-4
-6
-10
-8
-6
-4
-2
0
x
10
usando la regla de
Como el nombre de la funcin es cuadratica, el archivo debe ser guardado con el mismo nombre,
esto es cuadratica.m. Para usar esta funcin en MATLAB para obtener las races de la ecuacin
2x2+ 4x + 1 = 0 escribimos
>> [x,y,z] = cuadratica(2,4,1)
Basndose en la forma cmo se escribi la funcin, x contendr la primera raz, y contendr la
segunda raz y z ser cero si la ecuacin tiene races reales o -1 si son complejas. la respuesta de
MATLAB es
x =
-0.2929
y =
-1.7071
z =
0
Por consiguiente las races son 0.2929 y 1.7071. vea si puede hacer cuadratica ms general,
haciendo que retorne la parte real y la parte imaginaria de la primera y segunda variables de salida
cuando las races son complejas.
Note las lneas de comentario despus de la declaracin de la funcin. Estas lneas son una
sentencia de ayuda para esta funcin. Es decir, si usted escribe help cuadratica obtendr la
respuesta
Esta funcin calcula las races de una ecuacin cuadrtica, si
las ecuaciones tienen races reales. en estos casos la funcin
retorna un valor de condicin igual a 0. Si las races son
complejas la funcin retorna un valor de condicin igual a -1
Ejemplo
En nuestro ejemplo de caja registradora podemos escribir una funcin que calcule el impuesto.
function[impuesto] = calcula_impuesto(precio,tipo);
% Esta funcin calcula el impuesto a las ventas de diferentes tems
% usando las siguientes tasas:
% alimento, medicina- sin impuesto
% todos los otros tems- 6% de impuesto
%
switch tipo
case {'alimento','medicina'}
impuesto = 0;
case 'lujo'
impuesto = .1*precio;
otherwise
impuesto = .06*precio;
end
end
Note que el nuevo programa es ms legible que el anterior. Ms an, si la cambian los impuestos
todo lo que tenemosue hacer es hacer el reemplazo en la funcin calcula_impuesto.
Funcin de Fibonacci
La siguiente funcin genera los n primeros elementos de la serie de fibonacci (un elemento es la
suma de los dos elementos anteriores.) Escriba la funcin en el editor, luego grbela con el mismo
nombre de la funcin (fibonacci). Las funciones no se ejecutan directamente desde el editor,
function [f] = fibonacci(n)
% fibonacci(n) - retorna los primeros n elementos
% de la funcin de Fibonacci.
f = zeros(n,1);
f(1) = 1;
f(2) = 2;
for k = 3:n
f(k) = f(k-1) + f(k-2);
end
end
Puede usar la funcin dentro de un programa o desde la lnea de comandos, por ejemplo,
>> fibonacci(8)
ans =
1
2
3
5
8
13
21
34
retorna los primeros 8 nmeros de Fibonacci. La funcin se puede llamar desde un programa:
clc
clear
disp('Serie de Fibonacci');
x = input('Indique el nmero de elementos de la serie:');
nes = fibonacci(x);
fprintf('Los primeros %3d elementos de la serie son:\n',x);
fprintf('%16d%16d%16d%16d\n',nes);