Está en la página 1de 9

lgebra Lineal (Ingeniera Informtica) Prctica 1: Introduccin a Octave/Matlab

1



Cuestiones bsicas
Matlab es un programa comercial que se utiliza en muchas universidades, centros de investigacin y
empresas para llevar a cabo clculos cientficos. El programa GNU Octave es muy similar al anterior
pero con la ventaja de que es software libre. Ambos estn disponibles para distintos sistemas
operativos.
Se pueden utilizar como calculadoras para llevar a cabo clculos. Basta con teclear la orden en la lnea
de comandos, por ejemplo, si escribimos en la lnea de comandos del programa:
>>2^3+(1/5)
El programa devuelve: 8.2
Sin embargo, si el clculo se asigna a una variable, el resultado queda guardado en ella:
>>x=2+3
x=
5
Para conocer el valor de una variable, basta teclear su nombre:
>>x
x=
5
Si se aade un punto y coma (;) al final de la orden, el ordenador no muestra la respuesta:
>>y=5*4;
pero no por ello deja de realizarse el clculo.
>>y
y=
20
Se pueden utilizar las funciones matemticas habituales.
abs valor absoluto
sqrt - raz cuadrada
floor entero ms cercano a la izquierda, por ejemplo: floor(2.7)=2
ceil entero ms cercano a la derecha, por ejemplo: ceil(2.7)=3
exp - exponencial base e
Prctica 1: INTRODUCCIN A GNU OCTAVE/MATLAB.

lgebra Lineal (Ingeniera Informtica) Prctica 1: Introduccin a Octave/Matlab

2
log - logaritmo neperiano
log10 - log base 10
sin, cos,- funcin seno, coseno,
As, por ejemplo, la funcin coseno,
>>cos(pi) % pi es una variable con valor predeterminado 3.14159
ans=
-1
o la funcin exponencial
>>exp(1) % Funcin exponencial evaluada en 1, es decir, el nmero e
ans=
2.7183
Como has visto % se utiliza para los comentarios.
Matlab/Octave distinguen entre maysculas y minsculas.
El usuario puede controlar el nmero de decimales con que aparece en pantalla el valor de las
variables, sin olvidar que ello no est relacionado con la precisin con la que se hacen los clculos,
sino con el aspecto con que stos se muestran:
>>1/3
ans=
0.3333
>>format long
>>1/3
ans=
0.33333333333333
>>format % Vuelve al formato estndar
Si hacemos:
>> 1/3+2/5
Matlab nos devuelve 7.333
Si hacemos:
>>format rat
>>1/3+2/5
Matlab nos devuelve: 11/15
lgebra Lineal (Ingeniera Informtica) Prctica 1: Introduccin a Octave/Matlab

3
La ayuda de Matlab es bastante til; para acceder a la misma basta teclear help. Es recomendable
usarlo para obtener una informacin ms precisa sobre la sintaxis y diversas posibilidades de uso de
los comandos.
Si se teclea pwd Octave/Matlab nos indicar cul es el directorio de trabajo donde est operando
Octave/Matlab. Con el comando cd podemos cambiar dicho directorio. Por ejemplo cd: c\
El comando whos nos devuelve las variables actuales en memoria.
Si , por ejemplo, es una variable, el comando whos nos indica de qu tipo es y su precisin.
Se puede utilizar la orden clc para poner en blanco la ventana de comandos del programa.
La orden clear borra de memoria todas las variables actualmente en memoria. Tambin se puede
utilizar la orden: clear a si queremos solamente borrar de memoria la variable a dejando el resto.
Ayudas
El libro Aprenda Matlab como si estuviera en primero de la Universidad Politcnica de Madrid lo
puedes utilizar como libro de referencia, as como la propia ayuda que trae Matlab en Help en la
barra de herramientas. Tambin puedes encontrar por Internet mucha ayuda ya que existen muchos
usuarios de estos programas en todo el mundo.
Scripts o programas
Se puede trabajar en modo consola, como hemos visto hasta ahora, o a travs de scripts. Un script es
un fichero de texto que contiene un conjunto de rdenes. Estos scripts se deben escribir con cualquier
editor de texto plano (texto ASCII) y guardado con la extensin .m. Tanto Matlab como Octave traen
sus propios editores.
El fichero debe estar en el directorio de trabajo y para ejecutarlo bastar con escribir en la lnea de
comandos el nombre del programa. La orden path nos proporciona qu directorios estn en el path.
La orden dir o tambin ls nos da el contenido del directorio actual.
Por ejemplo, escribe un fichero llamado ejemplo1.m en el directorio de trabajo con el siguiente
contenido:
x=0: pi/100: 2*pi; % Crea un vector
y=cos(2*pi*x); % Crea otro vector asociado al anterior
plot(x,y); % Dibuja un conjunto de puntos en el plano unidos por segmentos rectos

Despus escribe en la lnea de comandos:
>>ejemplo1
y vers cmo se ejecutan las rdenes que hay dentro del script.
lgebra Lineal (Ingeniera Informtica) Prctica 1: Introduccin a Octave/Matlab

4
Vectores y matrices en Matlab/Octave
Los vectores en Octave/Matlab se escriben de la siguiente forma: o bien
separando los elementos por espacios en blanco o por comas. Para referirnos a un elemento
concreto de un vector pondremos, por ejemplo, y el programa nos devuelve un 5.
La orden crea un vector con primer elemento igual a 1 y va incrementando de 2 en 2 hasta
llegar a 10 como mucho, es decir:
La orden x=1:5 crea el vector
Las matrices se escriben de la forma: separando las filas por
Se pueden unir vectores o matrices, por ejemplo, si , entonces:
nos devuelve la matriz (


) mientras que nos devuelve el vector
.
Para referirnos a un elemento concreto de la matriz anterior pondremos, por ejemplo, A(1,2) y nos
devuelve un 3.
El comando length(a) nos devuelve la longitud de un vector
El comando size(A) nos devuelve el tamao de una matriz.
El comando A=zeros(2,4), sirve para crear una matriz de ceros de tamao 2x4.
El comando A=ones(2,4) sirve para crear una matriz de unos de tamao 2x4.
Bucles en Matlab/Octave
Bucle for
Su formato es sencillo de entender, por ejemplo:
for i=1: 2: 6
..
end
genera un bucle for con el contador i comenzando en 1, incrementndolo de 2 en 2 mientras que i sea
menor o igual que 6.
Si slo se pone:
for i=1: 6
..
end
se supone que el incremento de contador es 1, es decir, que equivale a: for i=1:1:6
Escribe el script ejemplo2.m siguiente y mira qu es lo que sale:
for i=1:10
fprintf('el valor de %d al cuadrado es %d\n',i,i^2);
end
lgebra Lineal (Ingeniera Informtica) Prctica 1: Introduccin a Octave/Matlab

5

Como ves en el ejemplo anterior, la orden fprintf de Matlab se parece mucho a la orden printf de C
que ests acostumbrado a usar.
Bucle while
El formato es:
while condicin
sentencias;
end
Por ejemplo, escribe el siguiente script y mira el resultado:
x=0;
contador=0;
while (x<=0.95)
contador=contador+1;
x=rand(1);
fprintf('%f\n',x);
end
fprintf('contador=%d\n',contador);

La funcin x=rand(1) devuelve un nmero pseudoaleatorio entre 0 y 1 con .
La funcin rand(1, 5) devuelve un vector de 5 componentes con nmeros pseudoaleatorios entre 0 y 1.
La funcin rand(3, 2) devuelve una matriz de tamao de nmeros pseudoaleatorios entre 0 y 1.
Condicional if en Matlab/Octave
El formato es:
if condicin lgica

end

Tambin se puede usar:
if condicin lgica

else

end

Los operadores relacionales en Matlab/Octave son los siguientes:
= = igual
< menor que
<= menor o igual que
lgebra Lineal (Ingeniera Informtica) Prctica 1: Introduccin a Octave/Matlab

6
> mayor que
>= mayor o igual que
~ = distinto

Por ejemplo, escribe y ejecuta lo siguiente:
x=rand(1);
if x<0.5
fprintf('resultado en la primera mitad\n');
else
fprintf('resultado en la segunda mitad\n'),
end

La orden break
La orden break sirve para parar la ejecucin de un script justo en la lnea donde se encuentre situada
o bien para salirse de un bucle si est insertada dentro de un bucle.
Por ejemplo, supongamos que queremos hacer un programa que nos imprima el cubo de los nmeros
naturales entre 1 y 100 siempre que dicho cubo sea menor o igual que 10000.
for i=1:100
resu=i^3;
if(resu>10000)
break;
end
fprintf('i=%d su cubo es %d\n',i,resu);
end

El resultado es que nos imprimir los cubos de los nmeros entre 1 y 21 ya que el cubo de 22 ser
mayor que 10000
Funciones en Matlab
Supongamos que queremos escribir una funcin llamada nombre_funcion. Crearemos un script o
programa llamado nombre_funcion.m con la siguiente estructura:
function [salida1, salida2, ]=nombre_funcion(entrada1,entrada2, )
conjunto de ordenes;
Es obligatorio que el nombre del script coincida con el nombre de la funcin!

Por ejemplo, vamos a hacer una funcin que reciba tres nmeros de entrada y nos diga cuntos hay
positivos. El script se llamar mi_fun.m
function [contador]=mi_fun(a,b,c)
contador=0;
if a>0
lgebra Lineal (Ingeniera Informtica) Prctica 1: Introduccin a Octave/Matlab

7
contador=contador+1;
end
if b>0
contador=contador+1;
end
if c>0
contador=contador+1;
end

Una vez que hemos salvado este fichero en el directorio de trabajo, nos podremos ir a la lnea de
comandos de Matlab/Octave y ejecutar: mi_funcion(2, -1, 3), por ejemplo, y el programa nos devuelve
2.
La funcin puede tener varias variables de entrada y de distintos tipos (numricas, de caracteres,
vectores o matrices) y puede que devuelva varias variables o ninguna. Por ejemplo, la funcin
siguiente tiene como variable de entrada el radio de una circunferencia y nos devuelve el permetro de
la circunferencia y el rea del crculo:
function [perimetro,area]=nueva_fun(r)
perimetro=2*pi*r;
area=pi*(r^2);

Si despus en la lnea de comandos ponemos:
>>[a b]=nueva_fun(5)
Veremos que nos devuelve a=31.41 y que b=78.5

Una pequea variacin de la funcin anterior:
function [salida]=nueva_fun2(r)
perimetro=2*pi*r;
area=pi*(r^2);
salida=[perimetro area];

Ahora la funcin devuelve un vector, as si ejecutamos:
>>sol=nueva_func2(5)
La variable sol ser un vector de la forma: sol=[31.41 78.5]

Ejemplos de programacin
Ejemplo: Calcular la suma de los primeros trminos de la sucesin


Donde los valores de y de sern introducidos por el usuario usando el comando input.
Solucin:
n=input('Cuntos trminos quieres sumar? ');
x=input('Dame el valor del numero x ');
suma=1;
lgebra Lineal (Ingeniera Informtica) Prctica 1: Introduccin a Octave/Matlab

8
for i=2:n
suma=suma+i*x^(i-1);
end
fprintf('El valor pedido es %f\n',suma)

Ejemplo: Hacer una funcin a la que le demos como dato de entrada un vector y que nos devuelva el
valor de la suma de los elementos de dicho vector.
Solucin
El script deber llamarse sumando.m
function [resu]=sumando(vector)

longitud=length(vector);
resu=0;
for i=1:longitud
resu=resu+vector(i);
end

Nota: Matlab trae incorporada una funcin que ya hace eso: sum( ).
Ejercicio 1 para el cuaderno de prcticas
Modifica el ejemplo anterior: ahora la entrada es una matriz y deber devolvernos la suma de los
cuadrados de todos sus elementos.

Ejemplo: Hacer una programa que simule el lanzamiento de un dado. Deber hacer 100 tiradas y
deber decirnos cuntas veces ha salido cada nmero.
Solucin
La funcin rand(1) devuelve un nmero pseudoaleatorio tal que . Pero nosotros
necesitamos nmeros enteros entre 1 y 6. Para ello deberemos hacer la siguiente modificacin:
x=ceil(6*rand(1));
ya que 6*rand(1) nos devuelve un nmero entre 0 y 6 y la funcin ceil nos devuelve el entero ms
cercano a un nmero real mayor que l (por ejemplo ceil(2.1)=3).
El programa sera:
tiradas=zeros(1,100);
for i=1:100
tiradas(i)=ceil(6*rand(1));
end
contador=zeros(1,6);
for i=1:100
j=tiradas(i);
contador(j)=contador(j)+1;
end

for i=1:6
fprintf('el nmero de veces que ha salido %d es %d\n',i,contador(i));
end

lgebra Lineal (Ingeniera Informtica) Prctica 1: Introduccin a Octave/Matlab

9
Ejercicio 2 para el cuaderno de prcticas
Modifica el ejemplo anterior: ahora deber simular el lanzamiento de una moneda y debe decirnos el
nmero de caras que han salido.

Ejercicio 3 para el cuaderno de prcticas
Hacer un programa que nos averige el mximo de un vector de nmeros.
Nota: Matlab/Octave trae incorporada la funcin max( ) que nos busca el mximo. Pero se trata de que
practiquis la programacin.

Ejercicio 4 para el cuaderno de prcticas
Dado un vector y un nmero hacer un programa que busque si est o no en alguna posicin del
vector. Si est en varias posiciones debe decirnos todas las posiciones.

Ejercicio 5 para el cuaderno de prcticas
Hacer un programa que calcule la suma de los 100 primeros nmeros naturales.

También podría gustarte