Funciones
En MATLAB
FUNCIONES
Una función es un programa pero con la particularidad,
necesita de uno o varios argumentos de entrada.
sin(x) , cos(x), tan(x)
x es el argumento de la función seno.
Podemos tener funciones con dos, tres o más argumentos:
plot(x, y) ,
es una función interna que posee el Matlab para trazar gráficos
bidimensionales, que necesita de dos argumentos, uno para la
coordenada x, otro para la y.
Funciones pre-construidas
Funciones trigonométricas:
sin(x)
cos(x)
tan(x)
asin(x)
acos(x)
atan(x)
exp(x)
log(x)
log10(x)
Funciones matemáticas diversas:
abs(x)
: Retorna el valor absoluto de x.
fix(x)
: Retorna la parte entera de x.
rem(x,y) : Retorna el resto (remainder) de dividir x entre y.
round(x) : Redondea x al más próximo entero.
sign(x)
: Retorna -1 si x es menor que 0, 0 si x es 0, +1 si x es mayor
que 0.
sqrt(x)
: Retorna la raíz cuadrada de x.
Los conceptos ‘argumento’ y ‘retorno’.
En t = sin(x) 
x : “argumento” .
* Una función puede tener uno, o, varios argumentos.
El “valor de retorno” es el número que se asigna a t.
sin(1)  0.8414,
sin(2)  0.9092
se habla que la función sin(x) retorna un valor. Pero
debe tenerse en cuenta que las funciones no tienen
obligatoriamente sólo un valor de retorno. Puede haber
funciones con dos, tres o más valores de retorno:
EJEMPLOS
r = f(x, y)
 dos argumentos, un valor de retorno.
[r1, r2] = f(x, y, z)
retorno.
 tres argumentos, dos valor de
[u, v, w] = f(x, y, z, p, q, r)  seis argumentos, tres valor
de retorno.
Estructura general de una función
function [v1, v2] = nombre(x, y, z)
INICIO
BLOQUE GENERAL
FINAL
Finalmente salvarla como nombre.m
Para ejecutarla hay que escribir por ejempl.:
[a, b] = nombre(1, 5, -3)
Utilizar una función dentro de un programa
Si tenemos la función ya construida:
function [v1, v2] = nombre(x, y, z)
Para utilizarla dentro de un programa (o función):
% programa XXXXXX
…………….
[c1, c2 ] = nombre(1, -5, 8);
[d1, d2 ] = nombre(1, -5, 8);
OBSERVACIÓN:
Cuando vamos a construir una función con un sólo valor de
retorno, como sucederá en la mayoría de los casos, Matlab nos
permite hacerlo de dos maneras:
1) function v1 = nombre(lista de argumentos)
2) function
nombre(lista de argumentos)
Es decir, la variable v1 de retorno no se coloca entre corchetes, o
incluso no se expresa nada.
Cálculo de
5 por el método de Newton.
1º) Se toma x0 
5
(semilla inicial)
2
x0 
2º) Se toma
3º) Se toma
x1 
x0
2
x1 
x2 
5
5
x1
2
etc., etc.
nº) Se toma
xn 1 
xn 
2
5
xn 1
es la raíz aproxim.
Programa raiz5.m
% raiz5.m
% Cálculo de la raíz de 5 por el método de Newton
% Autor: Juan C. Gorostizaga (17/10/2008)
x0 = 2.5; % semilla inicial
T = 10; % cantidad total de iteraciones
for i = 1:T
x = 1/2 * (x0 + 5/x0);
x0 = x;
end;
disp('Raíz de 5 = ‘), disp(x)
Ejecución de raiz5.m
>> format long
>> raiz5
Raíz de 5 =
2.23606797749979
Hagamos una función
para calcular raíces
cuadradas de números
Función raiznewton.m
function v1 = raiznewton(n)
% raiznewton(n) computa la raiz cuadrada por el método de Newton
% Comprobar si n es positivo
if n < 0
error('En raiznewton(n) : el argumento n debe ser positivo');
end;
x0 = (1+n)/2; % aproximación inicial
for i = 1:100
x = (x0 + n/x0)/2;
if abs(x - x0)/x < eps
break;
end
x0 = x;
end
v1 = x;
Ejecución de raiznewton(n)
>> raiznewton(1257)
ans =
35.45419580247167
>>raiznewton(-2459)
??? Error using ==> raiznewton
En raiznewton(n) : el argumento n debe ser positivo
Ejercicio:
Construir una matriz “Triángular de Pascal”
Triángulo de Pascal
Matriz de Pascal
EJERCICIO:
Construir una función llamada “Pascal(n)”, para sacar el
triángulo de Pascal de n pisos.
Pistas: Dentro de la función podemos tomar una matriz A =
ones(n), lo que nos da una matriz (n x n) formada por unos.
Entonces en lugar del triángulo de arriba, construiríamos el
"triángulo" de Pascal encerrado en una matriz:
Hay que observar que en esta matriz se tiene la propiedad:
% pascal4.m
% Programa que da el triángulo de Pascal (orden 4)
% autor: JUAN C. GOROSTIZAGA (21/10/2009)
%
N = 4;
A = ones(N+1,N+1);
for i = 3:N+1
for j = 2:i-1
A(i,j) = A(i-1, j-1) + A(i-1, j);
end;
end;
disp(A);
Descargar

Funciones