Practica 1
Practica 1
Practica 1
Vectores y MATLAB
Esta y todas las dem as pr acticas est an pensadas para ser trabajadas delante de
un ordenador con MATLAB instalado, y no para ser le das como una novela. En vez de eso, cada vez que se presente un comando de MATLAB, se debe introducir el comando, pulsar la tecla Enter para ejecutarlo y ver el resultado. M as a un, se desea que se verique el resultado. Aseg urese de que se comprende perfectamente lo que se obtiene antes de continuar con la lectura. Aunque MATLAB es un entorno que trabaja con matrices, en esta pr actica se aprender a c omo introducir vectores por las o por columnas y a manejar algunas operaciones con vectores. Prerrequisitos: ninguno. 1. Vectores la
La introducci on de vectores la en MATLAB es muy f acil. Introd uzcase el siguiente 1 comando en la pantalla de MATLAB >> v=[1 2 3] Hay una serie de ideas a destacar en este comando. Para introducir un vector, se escribe una apertura de corchete, los elementos del vector separados por espacios y un cierre de corchete. Se pueden usar tambi en comas para delimitar las componentes del vector >> v=[1,2,3] El signo = es el operador de asignaci on de MATLAB. Se usa este operador para asignar valores a variables. Para comprobar que el vector la [1,2,3] ha sido asignado a la variable v introd uzcase el siguiente comando en el indicador de MATLAB.
s mbolo >> es el indicador de MATLAB. Se debe introducir lo que aparece tras el indicador. Entonces se pulsa la tecla Enter para ejecutar el comando.
333
1El
>> v
1.1.
Rangos.
Algunas veces es necesario introducir un vector con componentes a intervalos regulares. Esto se realiza f acilmente con MATLAB con la estructura inicio:incremento:fin. Si no se proporciona un incremento, MATLAB asume que es 1. >> x1=0:10 Se puede seleccionar el propio incremento. >> x2=0:2:10 Se puede ir incluso hacia atr as. >> x3=10:-2:1 O se le puede echar imaginaci on. >> x4=0:pi/2:2*pi Hay veces, sobre todo cuando hay que pintar funciones, que se precisan un gran n umero de componentes en un vector. >> x=0:.1:10
1.2.
Elimina la salida.
Se puede suprimir la salida de un comando de MATLAB a nadiendo un punto y coma. >> x=0:.1:10; Es muy u til cuando la salida es muy grande y no se desea verla.
1.3.
Es posible obtener una lista de las variables en el espacio de trabajo en cualquier momento mediante el comando >> who Se puede obtener incluso m as informaci on acerca de las variables con >> whos Se eliminar la asignaci on hecha a una variable con >> clear x >> who Obs ervese que tambi en se da el tama no de cada variable. Es posible mantener una ventana con la lista de variables usadas y su tama no. Para ello, en la barra superior selecci onese el men u Desktop y act vese la opci on Workspace. Se puede obtener el tama no de un vector v con el comando >> size(v) La informaci on que devuelve indica que el vector v tiene 1 la y 3 columnas. Aunque se puede entender al vector v como una matriz con 1 la y 3 columnas, tambi en se puede entender como un vector la de longitud 3. Por ejemplo, pru ebese el siguiente comando: >> length(v)
2.
Vectores columna
Es tambi en f acil escribir vectores columna en MATLAB. Introd uzcase el siguiente comando en el indicador. >> w=[4;5;6]
Observe que los s mbolos de punto y coma delimitan las las de un vector columna. Pru ebense los siguientes comandos. >> >> >> >> w who whos size(w)
El resultado indica que el vector w tiene 3 las y 1 columna. Aunque se puede ver al vector w como una matriz de 3 las y 1 columna, tambi en es posible pensar en el como un vector columna de longitud 3. Pru ebese el siguiente comando. >> length(w)
2.1.
Transposici on.
El operador en MATLAB para transponer es el ap ostrofe simple . Se puede cambiar as un vector la a un vector columna. >> y=(1:10) O un vector columna a un vector la. >> y=y
2.2.
Indexado de vectores.
Una vez que se ha denido un vector, es posible acceder f acilmente a cada una de sus componentes con los comandos de MATLAB. Por ejemplo, introd uzcase el siguiente vector. >> x=[10,13,19,23,27,31,39,43,51] Ahora pru ebense los siguientes comandos. >> x(2) >> x(7)
Se puede cambiar f acilmente el contenido de una componente. >> x(6)=100 Se puede tambi en acceder a un rango de elementos >> x([1,3,5]) >> x(1:3) >> x(1:2:length(x))
3.
Un gran n umero de operaciones en las que intervienen vectores y escalares se pueden ejecutar con MATLAB. 3.1. Operaciones entre vector y escalar.
Las operaciones entre escalares y vectores son directas. Desde el punto de vista te orico, no se puede sumar un escalar a un vector. Sin embargo, MATLAB s lo permite. Por ejemplo, si y es un vector, el comando y+2 a nadir a 2 a cada componente del vector. Est udiense las salidas de los siguientes comandos. >> >> >> >> >> y=1:5 y+2 y-2 2*y y/2
Por supuesto, estas operaciones son igualmente v alidas para vectores columna. >> >> >> >> >> w=(1:3:20) w+3 w-11 .1*w w/10
3.2.
En primer lugar, consid erense los siguientes vectores. >> a=1:3 >> b=4:6 La adici on y sustracci on de vectores es natural y f acil. Introd uzcanse los siguientes 2 comandos. >> a,b,a+b >> a,b,a-b De nuevo, estas operaciones son v alidas para vectores columna. >> a=(1:3),b=(4:6) >> a+b,a-b Sin embargo, se pueden obtener resultados no esperados si no se recuerda que MATLAB es un entorno que trabaja con matrices. >> a,b,a*b El u ltimo comando devuelve un error porque es el s mbolo de MATLAB para la multiplicaci on de matrices, y en este caso hay un problema de compatibilidad entre los ordenes de las matrices a y b. Tambi en pueden ocurrir errores si se intenta a nadir vectores de diferente tama no. >> a=1:3,b=4:7,a+b
3.3.
Para multiplicar los vectores a y b componente a componente, ejec utese el siguiente comando de MATLAB.
no aparece punto y coma que suprima la salida, el comando a,b,a+b mostrar a primero el vector a, luego el vector b y por u ltimo el a+b
2Como
>> a=(1:3),b=(4:6) >> a,b,a.*b El s mbolo . es el operador de MATLAB para la multiplicaci on elemento a elemento. La salida se calcula multiplicando las primeras componentes de los vectores a y b, a continuaci on las segundas componentes, etc. El operador de MATLAB para la divisi on componente a componente es ./ >> a,b,a./b Para elevar cada componente de un vector a una potencia, u sese .^ >> a,a.^2
3.4.
Expresiones m as complicadas.
Con un poco de pr actica se aprender a como evaluar expresiones m as complejas. 2 Supongamos, por ejemplo, para evaluar la expresi on x 2x 3 para valores de x entre 1 y 10, con incremento de 1 escr base >> x=1:10 >> y=x.^2-2*x-3 Sup ongase ahora que se quiere evaluar la expresi on sen(x)/x para valores de x entre 3 1 y 1 con incrementos de 0,1 unidades. >> x=-1:.1:1 >> y=sin(x)./x Los operadores por componentes tambi en funcionan con vectores columna. >> xdata=(1:10) >> xdata.^2
3Escribiendo
Ejercicios de la pr actica 1 Ejercicio 1. Escribe el comando MATLAB que genera cada uno de los siguientes vectores. 1 1. 2 . 3 2. (1, 2, 1, 3). 3. Un vector columna que contenga los n umeros impares entre 1 y 1000. 4. Un vector la que contenga los n umeros pares entre 2 y 1000. Ejercicio 2. Si x=0:2:20, escribe el comando de MATLAB que eleva al cuadrado cada componente de x. Ejercicio 3. Si x=[0,1,4,9,16,25], escribe el comando MATLAB que calcula la ra z cuadrada de cada componente de x. Ejercicio 4. Si x=0:.1:1, escribe el comando de MATLAB que eleva cada componente de x a 2/3. Ejercicio 5. Si x=0:pi/2:2*pi, escribe el comando MATLAB que calcula el coseno de cada componente de x. Ejercicio 6. Si x=-1:.1:1, escribe el comando MATLAB que calcula el arcoseno de cada componente de x. Ejercicio 7. Si x=linspace(0,2*pi,1000), cu al es la entrada 50 de x? Cu al es la longitud de x? Ejercicio 8. Si k=0:100, cu al es la entrada n umero 12 de y=0.5.^k?
PRACTICA 2
Matrices y MATLAB
En esta pr actica se aprender a a introducir y editar matrices en MATLAB. Se experimentar a con algunas funciones de construcci on de matrices incorporadas en MATLAB. Se aprender a a construir matrices a partir de vectores y bloques de matrices. Prerrequisitos: ninguno. 1. Entrada de matrices
La entrada de matrices en MATLAB es f acil. Escr base lo siguiente en el indicador de MATLAB. >> A=[1,2,3;4,5,6;7,8,9] Obs ervese c omo los s mbolos de punto y coma indican el nal de la la, mientras que las comas se usan para separar las entradas en la la. Se pueden usar tambi en espacios para delimitar las entradas de cada la. >> A=[1 2 3;4 5 6;7 8 9]
1.1.
Matrices especiales.
MATLAB tiene una serie de rutinas incorporadas para crear matrices.1 Es posible crear una matriz de ceros de cualquier tama no. >> A=zeros(5) >> B=zeros(3,5) Es f acil crear una matriz de ceros con el mismo tama no que una dada.
obtener una lista de todas las matrices elementales de MATLAB, escr base help elmat en el indicador de MATLAB; para obtener informaci on detallada sobre una en concreto escr base help seguido del tipo de matriz, por ejemplo, help magic.
341
1Para
>> C=magic(5) >> D=zeros(size(C)) Se pueden crear matrices de unos de manera an aloga. >> >> >> >> A=ones(6) B=ones(2,10) C=hilb(5) D=ones(size(C))
Cuando se realizan simulaciones en MATLAB es u til construir matrices de n umeros aleatorios. Se puede crear una matriz de n umeros aleatorios con distribuci on uniforme, cada uno entre 0 y 1, con los siguientes comandos. >> A=rand(6) >> B=rand(5,3) La multiplicaci on por escalares es exactamente igual que para vectores. >> C=10*rand(5) MATLAB proporciona unas rutinas para el redondeo de n umeros. >> >> >> >> D=floor(C) D=ceil(C) D=round(C) D=fix(C)
La matriz identidad tiene unos en su diagonal principal y ceros en el resto. >> I=eye(5) Se pueden generar otros tipos de matrices diagonales con el comando diag. >> E=diag([1,2,3,4,5]) >> F=diag([1,2,3,4,5],-1)
>> G=diag(1:5,1)
1.2.
Trasposici on.
El operador de trasposici on, que es (comilla simple), tiene el mismo efecto que sobre vectores. Se intercambian las y columnas. >> J=[1 2 3;4 5 6;7 8 9] >> J
1.3.
Elimina la salida.
Recu erdese que nalizando un comando de MATLAB con punto y coma se elimina la salida. Es u til cuando el resultado es grande y se desea ocultarlo. >> K=rand(100);
1.4.
Exam nese el espacio de trabajo con el comando whos, o activando la opci on Workspace del men u View de la barra superior. >> whos Obs ervese que aparece el tama no de cada una de las variables. Por supuesto, se puede obtener el tama no de la matriz I con >> size(I)
2.
Indexado de matrices para representar una matriz con 3 las y 3 a12 a13 a22 a23 , a32 a33
o en forma reducida A = (aij ) M3 (k), donde k es cuerpo (por ejemplo, k = R o k = C. El s mbolo aij se reere a la entrada situada en la la i y columna j . MATLAB usa una notaci on similar para representar los elementos de una matriz. %pascal no funciona en Octave >> A=pascal(5) >> A(1,2) >> A(3,4) En general, A(i,j) se reere al elemento de la la i, columna j de la matriz A. Tambi en es f acil cambiar el valor de una entrada. >> A(3,3)=11111
2.1.
Cuando se indexa una matriz, los sub ndices pueden ser vectores. Esta es una herramienta de gran alcance que permite extraer f acilmente una submatriz de una matriz. >> A=magic(6) >> A([1,2],[3,4,5]) La notaci on A([1,2],[3,4,5]) referencia a la submatriz formada por los elementos que aparecen en las las 1 y 2 y en las columnas 3, 4 y 5 de la matriz A. El comando >> A([1,3,5],[1,2,3,4,5,6]) produce una submatriz con las las 1, 3 y 5 de la matriz A. Si se recuerda que la notaci on 1:6 representa al vector [1,2,3,4,5,6] y que la notaci on 1:2:6 representa al vector [1,3,5], de este modo se tiene que A([1:2:6],[1:6]) es equivalente a A([1,3,5],[1,2,3,4,5,6]). >> A([1:2:6],[1:6]) Si se usa el s mbolo dos puntos en lugar de sub ndices, se indica todo el rango. As ,
>> A(:,1) produce la primera columna de la matriz A, y >> A(3,:) genera la tercera la de la matriz A. En cierto sentido, la notaci on A(3,:) se puede leer como Tercera la, todas las columnas. El comando >> A(1:3,:) produce una submatriz compuesta de las tres primeras las de la matriz A. El comando >> A(:,1:2:6) produce una submatriz compuesta de las columnas 1, 3 y 5 de la matriz A. 3. Construcci on de matrices
Con MATLAB se pueden crear matrices m as complejas a partir de otras matrices y vectores. 3.1. Construcci on de matrices con vectores.
Cr eense tres vectores la con los comandos >> v1=1:3 >> v2=4:6 >> v3=7:9 El comando >> M=[v1;v2;v3] construye una matriz con los vectores v1, v2 y v3, cada uno formando una la de la matriz M . El comando
>> N=[v1,v2,v3] produce un resultado completamente diferente, pero con sentido. C ambiense los vectores v1,v2,v3 en vectores columna con el operador de trasposici on. >> v1=v1 >> v2=v2 >> v3=v3 El comando >> P=[v1,v2,v3] construye una matriz con los vectores v1,v2,v3 como columnas de la matriz P . Se puede obtener el mismo resultado con la transpuesta de la matriz M . >> P=M T engase en cuenta que las dimensiones deben coincidir: cuando se construyen matrices, hay que asegurarse que cada la y columna tengan el mismo n umero de elementos. Por ejemplo, la siguiente secuencia de comandos producir a un error. >> w1=1:3;w2=4:6;w3=7:10; >> Q=[w1;w2;w3]
3.2.
Es una cuesti on simple aumentar una matriz con un vector la o columna. Por ejemplo, >> A=[1,2,3,4;5,6,7,8;9,10,11,12] >> b=[1,1,1] >> M=[A,b]
es v alido, pero >> M=[A;b] no lo es; aunque s lo es >> c=[1,1,1,1] >> M=[A;c] Se pueden concatenar dos o m as matrices. As , >> A=magic(3),B=ones(3,4) >> M=[A,B] es v alido, pero >> N=[A;B] no lo es; aunque s lo es >> C=[1,2,3;4,5,6] >> P=[A;C]
3.3.
La imaginaci on es el l mite.
Las capacidades de construir matrices de MATLAB son muy exibles. Consid erese el siguiente ejemplo. >> A=zeros(3),B=ones(3),C=2*ones(3),D=3*ones(3) >> M=[A,B;C,D] Se puede construir una matriz de Vandermonde de la siguiente manera >> x=[1,2,3,4,5] >> N=[ones(size(x)),x,x.^2,x.^3,x.^4]
O tambi en matrices por bloques >> B=zeros(8) >> B(1:3,1:3)=[1,2,3;4,5,6;7,8,9] >> B(4:8,4:8)=magic(5)
Ejercicios de la pr actica 2 Ejercicio 1. Escribe los comandos de MATLAB que generan las siguientes matrices. 10 5 6 1 1 3 0 5 8 4 . 1.) 2.) 3 1 6 8 5 10 3 4 4 10 7 8 8 5 Ejercicio 2. Escribe un solo comando que cree una matriz 3 5 con cada entrada igual a 3. Ejercicio 3. Crea una matriz de Hilbert con los siguientes comandos. %Format rat no funciona en Octave >> format rat >> H=hilb(5) >> format Escribe una f ormula para la posici on (i, j ) de la matriz H . Ejercicio 4. Explica la diferencia entre los comandos floor, ceil, round y fix. Apoya tu explicaci on con ejemplos en MATLAB. Ejercicio 5. Escribe un comando MATLAB que genere una matriz 4 4 con valores aleatorios enteros entre 5 y 5. Ejercicio 6. El operador genera realmente la conjugada traspuesta de una matriz. Para verlo, introduzca la matriz A=[1,2+i,sqrt(2);3,3-i,sqrt(-1)], teclea entonces A. Describe el resultado. Qu e ocurre si ponemos A.? Explica la diferencia entre los operadores de trasposici on y .. Ejercicio 7. Cu al es la entrada en la 5 y columna 7 de la matriz pascal(10)? Ejercicio 8. Sea T=toeplitz(1:7). Escribe un comando de MATLAB que 1. coloca las las pares de la matriz T en una matriz B . 2. coloca las las impares de la matriz T en una matriz C . 3. coloca la u ltima columna de la matriz T en un vector b. Ejercicio 9. Sea x=[0,pi/2,2*pi]. Construye una matriz, con comandos de MATLAB, cuya primera la es x, la segunda la est a formada por el seno cada entrada de x, y la tercera la es el coseno de cada entrada de x.
Ejercicio 10. Sea x=linspace(0,10). Construye una matriz, con comandos de MATLAB, cuya primera columna sea x, la segunda columna est e formada por los cuadrados de cada entrada de x, y la tercera columna sea el inverso de cada entrada de x.