Está en la página 1de 1

07.

Matrices en Matlab

El nombre Matlab viene de Matrix Laboratory y Matlab realmente tiene como punto fuerte el manejo de
4 1 1 0 0 2 3
matrices.
- Defina “v1” etc. en el Command Window 1 1 2 3 2 5 1 3 0 7 2 1 0 5
usando comas, espacios y punto comas. 6 5 4 2 0 6 9
- Calcule (si es posible): M1*M2 , M1*v2 , M1*v1 , M1*v1' , v1*M2 , v1*v2 , v1*v2' , v1.*v2'
Lea bien el error que salta en algunas de las operaciones ya que el mismo error le va a saltar mil veces más
en su vida si sigue usando Matlab. Qué efecto tiene un punto antes del “*” (o sea .* ) ? Ej: M1.*M2 ?
- Antes de probarlo adivine cual es el resultado de: M1(2,3) y M1(3,:) En “M1” hay dos ceros.
Reemplace cada cero con un nueve. Se puede hacer: M2(:,2)*v1 y M2(1,:)*v2 ?
- Fíjese que resultado da: v1(end) , v2(end-1) , M2(end) , M1(:,end) y M1(:,end-1)
- Trate v1(end) = [ ] y luego borre la segunda columna de “M2” dejando una matriz 3 por 2.
- Verifique que una matriz (o un vector) se puede manipular fácilmente con: M1*6 , M1/3 , M1+2
- Para obtener los auto valores de “M1” ponga eig(M1) , que matrices son “V” y “D” en: [V,D]=eig(M1) ?
- Calcule la determinante de “M1” con “det( )”. Chequee las dimensiones de “M1” y “M2” con “size( )”.
Que resultado tira size(v1,1) , size(v1,2) , length(v1) y length(v2) ? Cuál es la diferencia entre
“size” y “length”? Se puede calcular el máximo de una matriz con max(M1) ? Cómo se obtiene el valor
más grande de una matriz?
Use Matlab para resolver un problema típico de algebra lineal: tres ecuaciones con tres incógnitas (a, b, c).
2 log 10 2 2 2
5
4 Pista: ∗ ! "4# → ! %&
"4#
√2 7 6 6 6
- Primero implemente la matriz “A” según las ecuaciones ( π = “pi” en Matlab ). Para obtener el vector con
la solución ponga: x = inv(A) * [2 ; 4 ; 6]. Lamentablemente no se puede poner: “(a,b,c) = inv(A) * [2 ; 4 ;
6]”) o algo parecido porque la operación “A-1 * vector” devuelve un vector que es “una sola cosa”.
- Fíjese que invirtió la matriz “A” poniendo: “inv(A)”. Todas las versiones de Matlab traen la función inv
para invertir matrices pero desde Matlab 2008 hay una forma más rápida y más creíble que es:
x = A \ [2 ; 4 ; 6]. Obviamente con matrices 3 por 3 no se nota la diferencia entre las dos formas así que
vamos a generar matrices más grandes que ocurren muchas veces en distintas oportunidades…
Se pueden definir distintos tipos de matrices siempre poniendo en paréntesis las dimensiones deseadas.
- Trate: zeros(3,4) , ones(7,4) , eye(3,3) , eye(3) , nan(4,1) , nan(1,4) , M = magic(5). Qué
matriz es magic? Use “sum( )” para sumar la primera columna y después la segunda fila de “M”.
Matlab maneja dos tipos de variables aleatorias: 1. Distribución uniforme entre 0 y 1: rand(2,6) ,
rand Como se puede generar números aleatorios entre 10 y 15 con distribución uniforme?
2. Distribución gaussiana con media 0 y varianza 1: randn(4,2) , randn(3) Qué pasa si entre
paréntesis hay solo un número? Genere una matriz “G” (50 por 50) con distribución gaussiana:
G = randn(5000,1); Luego grafique el histograma: hist(G,100). Reconoce la famosa curva de Gauss?
- Defina una matriz “A” con magic que tiene dimensión 2000 por 2000 y un vector “b” que consiste en
números uno y que tiene dimensión 2000 por 1, o sea es un vector parado. Ahora pruebe: inv(A)*b y
A\b mientras mide el tiempo que tarda la operación. Para medir el tiempo hay un comando simple en
Matlab: ponga tic antes y toc después de todo que quiere incluir a la medición del tiempo. En este caso
sería: “tic, …; toc” Recuerde de poner el “;” después de la operación porque si no Matlab va a mostrar
2000 valores antes de mostrar el tiempo recurrido. Observe que la nueva forma de invertir matrices es más
que dos veces más rápido que la forma vieja (y además más exacto). Igual a veces es más fácil de entender
la forma vieja en vez de confundirse con “\” y “/”

©Josef Baumgartner

También podría gustarte