Está en la página 1de 5

Prctica 1 (Curso de Introduccin a MatLab)

1. Utilizacin del operador dos puntos (:) 1


2 Uso de las funciones max, min y find 3
3 Resolucin del sistema de ecuaciones Ax=b con incgnitas en x y en b 5


Esta prctica tiene como finalidad empezar a familiarizarse con Matlab. Los primeros ejercicios
contenidos en esta prctica son fciles. En las siguientes se oirn complicando poco a poco. Si no da
tiempo en la sesin de clase, conviene realizar todos los ejercicios de este guin en casa.
Es conveniente que todo el contenido de la prctica se guarde en un directorio cuyo nombre podra
ser Practica1 (no conviene incluir caracteres en blanco en los nombres de los ficheros), que deber
estar contenido en el de trabajo creado al inicio del curso (MatLab).
A continuacin arranque Matlab y haga que el directorio activo sea el directorio que acaba de crear.
El comando que habr que utilizar es el siguiente:
AAETSII cd g:/MatLab/Practica1
Conviene comprobar que el directorio activo es el correcto utilizando el comando pwd (de print
working directory):
AAETSII pwd
Antes de empezar a realizar los distintos ejercicios de la prctica es conveniente ejecutar el
comando:
AAETSII diary on (o, si se prefiere, diary > Practica1.txt)
Esta instruccin hace que se almacenen en un fichero de texto llamado diary (alternativamente
Practica1.txt), en el directorio activo, todas las acciones que el usuario va realizando con Matlab.
Exactamente lo que se almacena son las sentencias que el usuario teclea y ejecuta y la
correspondiente respuesta de Matlab. Generar este fichero es interesante pues permite saber el
trabajo que se ha realizado durante la prctica. Para poder acceder a l desde cualquier editor de
textos es necesario ejecutar el comando
AAETSII diary off
1. Utilizacin del operador dos puntos (:)
El operador dos puntos (:) es muy importante en Matlab. Se utiliza en primer lugar para indicar
rangos de una variable segn el esquema [xini:incremento:xfinal]. En este ejercicio se va a hacer
nfasis en el segundo de los usos: extraer filas y columnas de una matriz. Se va a utilizar junto con
el direccionamiento indirecto, que consiste en acceder a los elementos de un vector o matriz por
medio de los ndices contenidos en uno o ms vectores.
Se trata en primer lugar de ejecutar en Matlab los siguientes comandos observando el resultado:
AAETSII A=magic(6)
A =
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
Para extraer las filas 2, 3 y 4 se utiliza el comando:
AAETSII A(2:4,:)
Prctica 1 Introduccin a MatLab pgina 2
ans =
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
En este caso el primer (:) se utiliza para establecer un rango, mientras que el segundo indica "todas
las columnas" o "todos los elementos de la fila correspondiente".
Para extraer filas no consecutivas se utiliza un vector con los ndices de las filas a extraer:
AAETSII A([1,3,6],:)
ans =
35 1 6 26 19 24
31 9 2 22 27 20
4 36 29 13 18 11
o bien, como forma alternativa:
AAETSII in=[1,3,6], A(in,:)
in =
1 3 6
ans =
35 1 6 26 19 24
31 9 2 22 27 20
4 36 29 13 18 11
Es muy fcil construir expresiones anlogas para columnas, en lugar de filas. Ejecutar como
ejercicio los siguientes comandos (se omite la salida):
AAETSII A(:,[1,3,6])
AAETSII A(:,[1:4])
Para extraer los elementos que estn en unas filas y columnas determinadas se utilizan dos vectores
de ndices, como en el siguiente ejemplo:
AAETSII ifil=[1:3], icol=[1,2,6], A(ifil,icol)
ifil =
1 2 3
icol =
1 2 6
ans =
35 1 24
3 32 25
31 9 20
Mediante el operador dos puntos (:) el direccionamiento indirecto a travs de vectores de ndices no
slo se utiliza para extraer elementos de una matriz; tambin se pueden utilizar a la izquierda de una
asignacin (operador =) para modificar selectivamente una parte de un vector o una matriz. Por
ejemplo, para hacer cero las filas 1 y 3 de la matriz:
AAETSII B=A; B([1,3],:)=zeros(2,6)
B =
0 0 0 0 0 0
3 32 7 21 23 25
0 0 0 0 0 0
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
En este caso es muy importante que los tamaos de las matrices que aparecen a ambos lados del
operador (=) sean iguales; si no lo son, Matlab da un mensaje de error (buscar un ejemplo en el que
se produzca esta situacin). Para modificar slo los elementos de ciertas filas y columnas se procede
como se sigue:
AAETSII C=A; C([1:3],[2,5,6])=-10*ones(3)
Prctica 1 Introduccin a MatLab pgina 3
C =
35 -10 6 26 -10 -10
3 -10 7 21 -10 -10
31 -10 2 22 -10 -10
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
Es muy importante la forma que utiliza Matlab para borrar filas y columnas de una matriz,
consistente en asignar la matriz vaca [] a las filas o columnas que se desean eliminar. Matlab no
permite borrar ms que filas o columnas completas. Obsrvese el siguiente ejemplo:
AAETSII C(1:3,:)=[]
C =
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
Realizar el siguiente ejercicio: Dado el conjunto de ndices de un vector x de dimensin n
(in=[1:n]), y un subconjunto in1 de ndices de los elementos que cumplen una determinada
condicin, hallar el subconjunto in2 complementario de in1. Utilizar como ejemplo la siguiente
sentencia de partida:
AAETSII in=[1:10], in1=[1,6,7]
in =
1 2 3 4 5 6 7 8 9 10
in1 =
1 6 7

Realizar el siguiente ejercicio: Extraer las filas pares y las filas impares de una matriz. Utilizar la
matriz A definida al principio.

Realizar el siguiente ejercicio: Generar las potencias cbicas de los 15 primeros nmeros impares.

Realizar el siguiente ejercicio: Generar las potencias cbicas de los 15 primeros mltiplos de 3.
2 Uso de las funciones max, min y find
Las funciones max, min y find tienen una gran importancia en Matlab. El objetivo de este ejercicio
es practicar un poco con ellas. Las funciones max y min son funciones vectoriales. Cuando actan
sobre una matriz se aplican a cada columna por separado y dan como resultado un vector con los
resultados de su aplicacin a cada columna.
Por ejemplo, frmese una matriz A=magic(6) y aplquese las funciones max y min:
AAETSII A=magic(6)
A =
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
AAETSII max(A)
ans =
35 36 34 26 27 25
AAETSII min(A)
ans =
3 1 2 12 10 11
Si se desea calcular el mximo elemento de toda la matriz basta volver a aplicar la funcin max al
vector de mximos de columnas que resulta:
AAETSII max(max(A))
Prctica 1 Introduccin a MatLab pgina 4
ans =
36
Las funciones max y min se pueden utilizar con dos valores de retorno y en ese caso devuelven
tambin la posicin que el mximo o el mnimo ocupaba en el vector original.
A continuacin el alumnos deber calcular el valor minimo, la fila fmin y columna cmin del
mnimo elemento de la matriz A. Estas operaciones se debern hacer en una nica lnea de
comandos, separando los distintos comandos por comas. Se recomienda abrir la ventana Help
Window de Matlab y buscar la informacin correspondiente a la funcin min.
La funcin find permite hallar los ndices de los elementos de un vector o matriz que cumplen una
determinada condicin. Por ejemplo, para saber los elementos de la matriz A=magic(6) que tienen
un valor mayor que 30 se puede utilizar la sentencia:
AAETSII A=magic(6), i=find(A>30)
A =
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
i =
1
3
8
12
16
17
Si el resultado de find se recoge en un nico valor de retorno, se devuelve la posicin de los
elementos que cumplen la condicin especificada considerando que la matriz se almacena como
vector, por columnas. Por ejemplo, el valor 8 en una matriz 66 es el segundo elemento de la
segunda columna. Si se recogen dos valores de retorno, se devuelven los ndices de fila y de
columna que cumplen la condicin especificada. Ejecutar como ejemplo la sentencia:
AAETSII A=magic(6), [i,j]=find(A>30)
El resultado de la funcin find puede ser utilizado para realizar determinadas operaciones sobre una
matriz. Por ejemplo, si en la matriz A=magic(6) se desea dar un valor 100 a todos los elementos
que tienen un valor mayor que 25 se puede utilizar la sentencia:
AAETSII A=magic(6); in=find(A>25); A(in)=100
A =
100 1 6 100 19 24
3 100 7 21 23 25
100 9 2 22 100 20
8 100 100 17 10 15
100 5 100 12 14 16
4 100 100 13 18 11
Tambin se podra utilizar find para localizar la posicin del mximo elemento de una matriz, como
por ejemplo con la sentencia:
AAETSII A=magic(6); maximo=max(max(A)), [fmax,cmax]=find(A==maximo)
maximo =
36
fmax =
6
cmax =
2
Como aplicacin final, se pide crear una matriz aleatoria 1010 tal que todos los elementos
menores que 0.2 se hagan cero y todos los elementos mayores que 0.8 se hagan 1.
Prctica 1 Introduccin a MatLab pgina 5
3 Resolucin del sistema de ecuaciones Ax=b con incgnitas en x y
en b
Los sistemas de ecuaciones lineales Ax=b, donde A y b son conocidos y x es el vector de
incgnitas, no siempre se presentan en esta forma tan sencilla. Es frecuente en ingeniera encontrar
sistemas en los cuales ni todos los elementos de b son conocidos, no todos los de x desconocidos;
siempre se verifica sin embargo que si un elemento de b es conocido el correspondiente elemento
de x es desconocido y viceversa. Un sistema de ecuaciones de estas caractersticas se puede escribir
en la forma:

11 12 1 1
21 22 2 2
( y conocidos, y desconocidos)
(
=
` `
(
) )
2 1 1 2
A A x b
x b x b
A A x b
(2.1)
Se supone que los vectores in1 e in2 contienen los ndices de filas (y de columnas) de las dos
particiones. Los ndices no tienen por qu ser consecutivos.
Resolver el sistema (2.1) es fcil expandiendo dicha ecuacin:

11 1 12 2 1
+ = A x A x b (2.2)

21 1 22 2 2
+ = A x A x b (2.3)
En la ecuacin (2.2) todo es conocido excepto x
1
que puede ser hallado a partir de esta ecuacin.
Una vez que x
1
ha sido calculado, la ecuacin (2.3) permite calcular b
2
, con lo que el problema est
totalmente resuelto.
En base a lo que se acaba de exponer, crear un fichero llamado sistemaConDesc.m que realice las
siguientes operaciones:
1. Borrar todas las variables y funciones del espacio de trabajo con clear all.
2. Dar valor al tamao del sistema de ecuaciones (por ejemplo n=6).
3. Crear una matriz aleatoria A, simtrica y definida-positiva, de tamao nn. Esto se puede
hacer creando una matriz cuadrada aleatoria y multiplicndola por su traspuesta.
4. Crear el vector de ndices in2 con m elementos (m<n), por ejemplo in2=[1,4,6]; Este vector
indica la particin correspondiente a x
2
y b
2
.
5. Crear el vector de ndices in1 complementario de in2.
6. Crear dos vectores x y b, de tamao n1, con la funcin zeros. Mediante la funcin rand y
utilizando direccionamiento indirecto, dar un valor aleatorio a los elementos conocidos de x
y b, que son x(in2) y b(in1), respectivamente.
7. Mediante la ecuacin (2.2) aplicada con direccionamiento indirecto, calcular el vector x(in1)
utilizando el operador (\).
8. Mediante la ecuacin (2.3) calcular el vector b(in2).
9. Comprobar finalmente que todo es correcto calculando e imprimiendo por consola la norma
del residuo r=Ax-b.
10. Hacer n=100 y comprobar de nuevo que el resultado es correcto.
Nota: No hay que crear ninguna submatriz de A, ni de los vectores x y b; se debe utilizar siempre el
direccionamiento indirecto.

También podría gustarte