Anda di halaman 1dari 92

20132013 -I

Autor: Ing. William Chauca Nolasco

MATLAB
INTRODUCCIN
Es un entorno de trabajo para el clculo cientfico. Programado originalmente por Clever Moler a fines de los aos 70 La finalidad era acceder de una forma sencilla a las libreras LINPACK y EISPACK donde estn implementadas de una forma eficiente los algoritmos, clave del anlisis MATRICIAL

MATLAB es una abreviatura de Matrix Laboratory Su primera implementacin se hizo en FORTRAN que era y aun sigue sindolo, el lenguaje estndar en la implementacin de mtodos numricos. Posteriormente se implemento en C, que es como se encuentra en la actualidad.

APLICACIONES EN MATLAB
Las aplicaciones de matlab se extienden a otras ramas del clculo cientfico y de las ciencias aplicadas en general. Tiene gran aceptacin en la Ingeniera. Sus herramientas como los toolboxes, libreras escritas en el lenguaje propio del Matlab hacen que se amplen el rango de problemas que pueden resolverse.

REAS DONDE MATLAB SE DESARROLLA EFICIENTEMENTE


Algebra Lineal Numrica Procesamiento de seales compresion de datos,..) Diseo de sistemas de control. Salidas graficas. Estadstica. Simulacin de sistemas dinmicos. (anlisis,

INGRESANDO AL ENTORNO DEL MATLAB

Ordenes de importancia
1.- who: Genera una lista de variables almacenadas en el espacio de trabajo sin detalles. 2.- whos: Genera una lista de variables almacenadas en el espacio de trabajo con mas detalles respectos a las variables almacenadas en el espacio de trabajo.
3.- what: Presenta una lista de archivos m, mat y mex almacenados en el directorio actual. 4.- clc: Limpia la informacin de la ventana de comandos 5.- clear: Borra las variables usadas en memoria (del espacio de trabajo)

6.-demo: Gua al usuario a ejecutar diversas demostraciones que se eligen en un men.

Al igual que en la aritmtica , las operaciones de adicin, sustraccin, multiplicacin, divisin, potenciacin y radicacin se pueden realizar
Operadores Aritmticos + * / ^ Significado Adicin Sustraccin Multiplicacin Divisin Potenciacin

UTILIZANDO LA VENTANA DE COMANDOS CON OPERACIONES ARITMTICAS

Primero borramos todas las variables creada, luego con el puntero del mouse ejecutamos las ordenes que estan en la ventana de nombre COMMAND HISTORY

Operadores lgicos
Sirven para operaciones lgicas, es decir, cuando deseamos comparar variables, se necesitan operadores cuyo resultado sea booleano (cierto o falso).
Operador -A A&B A|B xor( A , B) Funcin que desempea Negacin Lgica (NOT) o complementario de A Conjuncin lgica (AND) o interseccin de A y B Disyuncin lgica (OR) o unin de A y B OR exclusivo (XOR) o diferencia simtrica de A y B

Operadores Relacionales
Operador < <= > >= == = Funcin que desempea Menor (complejos slo afecta a partes reales) Menor o igual (slo afecta a partes reales) Mayor (slo afecta a partes reales) Mayor o igual (slo afecta a partes reales) Igual lgico Desigualdad

VECTORES

>> Vector=[2 2.25 4/2 3.5] Vector = 2.0000 2.2500 2.0000 3.5000

Formas de asignar un vector

ing. William Chauca Nolasco

linspace (a,b,n) genera un vector linealmente espaciado entre los valores a y b con c elementos. linspace (a,b) genera un vector linealmente espaciado entre los valores a y b con 100 elementos.

logspace (a,b,n) genera un vector logartmicamente espaciado entre los valores 10^a y 10^b con n elementos.
logspace (a,b) genera un vector logartmicamente espaciado entre los valores 10^a y 10^b con 50 elementos.

ing. William Chauca Nolasco

>> Vector1=[1:5] Vector1 = 1 2 3 4 5 >> Vector2=[1:0.5:4] Vector2 = Columns 1 through 7 1.0000 1.5000 2.0000 2.5000 3.0000 3.5000 4.0000 >> Vector3=linspace(1,10,10) Vector3 = Columns 1 through 10 1 2 3 4 5 6 7 8

9 10

>> Vector4=linspace(1,21,10) Vector4 = Columns 1 through 10 1.0000 3.2222 5.4444 7.6667 9.8889 12.1111 14.3333 16.5556 18.7778 21.0000 >> Vector5=logspace(0,2,4) Vector5 = 1.0000 4.6416 21.5443 100.0000

ing. William Chauca Nolasco

COMANDO FORMAT

>> format short %Por default >> 20.2 ans = 20.2000 >> format short e >> 120.3 ans = 1.2030e+002

>> format long e >> 120.3 ans = 1.203000000000000e+002

>> format bank >> 2.1 ans = 2.10


ing. William Chauca Nolasco

FUNCIONES DE APROXIMACIONES

(con x escalar, vector o matriz, pero redondeara en cada caso los elemento individualmente)

>> ceil(1.25) ans = 2 >> ceil(-1.25) ans = -1

>> fix fix(10.97) (10.97) ans = 10 >> fix fix( (-10.97) ans = -10

>> floor(4.269) ans = 4 >> floor(-4.269) ans = -5

>> round(3.5) ans = 4 >> round(3.25) ans = 3

ing. William Chauca Nolasco

FUNCIONES TRIGONOMTRICAS

ing. William Chauca Nolasco

>> sin(pi/2) ans = 1 >> cos(pi/2) ans = 6.1232e-017


>> sind(90) ans = 1 >> sind(-90) ans = -1 >> cosd(-90) ans = 0

>> sinh(pi/2) ans = 2.3013 >> cosh(pi/2) ans = 2.5092


>> sin(pi/6) ans = 0.5000 >> asin(0.5000)*180/pi ans = 30.0000
ing. William Chauca Nolasco

FUNCIONES DE OPERACIONES BSICAS

(x e y cualquier escalar, m y n enteros)


ing. William Chauca Nolasco

>> abs(-5) ans = 5 >> abs(3-4i) ans = 5

>> x=-1 x= -1 >> y=0 y= 0 >> z=2 z= 2


ing. William Chauca Nolasco

>> sign(x) ans = -1 >> sign(y) ans = 0 >> sign(z) ans = 1

>> gcd(9,12) ans = 3 >> lcm(10,25) ans = 50 >> mod(-12,5) ans = 3 Su equivalencia >> -12-floor(-12/5)*5 ans = 3 >> mod(12,5) ans = 2

>> rem(-12,5) ans = -2 >> rem(12,5) ans = 2

>> nthroot(8,3) ans = 2 >> nthroot([8,27,64],3) ans = 2 3 4

ing. William Chauca Nolasco

FUNCIONES PARA CONSTRUIR MATRICES ESPECIALES Al igual que pasa con los vectores, existen unas sentencias que nos ayudan a crear ms rpidamente algunas matrices que Matlab ya tiene predefinidas (m y n deben tomar valores naturales): zeros (n) crea una matriz cuadrada n x n de ceros. zeros (m,n) crea una matriz m x n de ceros. ones (n) crea una matriz cuadrada n x n de unos. ones (m,n) crea una matriz m x n de unos. rand (n) crea una matriz cuadrada n x n de nmeros aleatorios con distribucin uniforme (0,1). rand (m,n) crea una matriz m x n de nmeros aleatorios con distribucin uniforme (0,1). randn (n) crea una matriz n x n de nmeros aleatorios con distribucin normal (0,1). randn (m,n) crea una matriz m x n de nmeros aleatorios con distribucin normal (0,1). eye (n) crea una matriz cuadrada n x n de unos en la diagonal y ceros el resto. eye (m,n) crea una matriz m x n de unos en la diagonal y ceros el resto.
ing. William Chauca Nolasco

magic (n) crea una matriz cuadrada n x n de enteros de modo que sumen lo mismo las filas y las columnas. hilb (n) crea una matriz cuadrada n x n de Hilbert, es decir, los elementos (i,j) responden a la expresin (1/(i+j-1)). invhilb (n) crea una matriz cuadrada n x n que es la inversa de la matriz de Hilbert

ing. William Chauca Nolasco

>> eye(2) ans = 1 0 0 1 >> magic(4) ans = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1

ing. William Chauca Nolasco

OPERACIONES BSICAS CON MATRICES

ing. William Chauca Nolasco

FUNCIONES PARA OPERAR CON VECTORES Y MATRICES

ing. William Chauca Nolasco

ing. William Chauca Nolasco

ing. William Chauca Nolasco

ing. William Chauca Nolasco

ing. William Chauca Nolasco

ing. William Chauca Nolasco

ing. William Chauca Nolasco

ing. William Chauca Nolasco

FUNCIONES PARA EL ANLISIS DE MATRICES

William y Chauca Nolasco (Con A matriz, v ing. vector n nmero natural)

>> v=[1 2 3] v= 1 2 3

>> diag(v) ans = 1 0 0 0 2 0 0 0 3

>> A = [1 2 3 4; 7 8 9 2; 2 4 6 8] A= 1 2 3 4 7 8 9 2 2 4 6 8
ing. William Chauca Nolasco

>> diag(A) ans = 1 8 6


COND: determina el ndice de inversibilidad de una matriz en funcin COND: de la norma 2. cuanto ms grande es el valor de COND, la inversibilidad de la matriz M es menos realizable realizable. . Si COND es del orden de 1013 superior, la matriz M tendr serios problemas de inversibilidad. inversibilidad .

>> A=[1 2 3;4 5 6;7 8 9] A= 1 2 3 4 5 6 7 8 9 >> cond cond(A) (A) ans = 3.8131e+016
ing. William Chauca Nolasco

>> B=[2 5 8;-8 6 3; 1 3 8] B= 2 5 8 -8 6 3 1 3 8 >> cond(B) ans = 10.0194

>> eig(A) ans = 16.1168 -1.1168 -0.0000


>> inv(A)

>> eig(B) ans = 2.7785 6.6108 + 4.3084i 6.6108 - 4.3084i

Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 1.541976e-018.

>> inv inv(B) (B) ans = 0.2254 -0.0925 0.3873 0.0462 -0.1734 -0.0058 >> B*inv B*inv(B) (B) ans = 1.0000 0.0000 0.0000 1.0000 0 0.0000

-0.1908 -0.4046 0.3006

0 -0.0000 1.0000

ans = 1.0e+016 * -0.4504 0.9007 -0.4504 0.9007 -1.8014 0.9007 -0.4504 0.9007 -0.4504

>> A*inv(A) Warning: Matrix is close to singular or badly Scaled. Results may be inaccurate. RCOND = 1.541976e-018. ans = 2 0 2 8 0 0 16 0 8

ing. William Chauca Nolasco

>> length(A) %Numero de lineas de una matriz ans = 3 >> v=1:0.01:100; >> length(v) %Cantidad de elementos de un vector ans = 9901

>> norm(A) ans = 16.8481 >> norm(B) ans = 13.9719

norm(A) norma-2, es decir, mximo valor singular de A, max(svd(A)).

ing. William Chauca Nolasco

Devuelve un vector con los coeficientes del polinomio caracterstico de la matriz cuadrada B
>> poly(B) ans = 1.0000 -16.0000 99.0000 -173.0000 >> rank(B) ans = 3

RANK : calcula el rango r de una matriz rectangular A.

>> C=[2 3 4 5;6 7 8 9] C= 2 3 4 5 6 7 8 9 >> rank(C) ans = 2 ing. William Chauca Nolasco

>> size(A) ans = 3 3 >> size(C) ans = 2 4

>> trace(B) ans = 16 >> XX = [1 2 3 4; 7 8 9 2; 2 4 6 8] XX = 1 2 3 4 7 8 9 2 2 4 6 8 >> UPPER=triu(XX) UPPER = 1 2 3 4 0 8 9 2 0 0 6 8


ing. William Chauca Nolasco

>> LOW=tril(XX) LOW = 1 0 0 0 7 8 0 0 2 4 6 0

FUNCIONES QUE ACTAN SOBRE VECTORES


Las siguientes funciones slo actan sobre vectores (no sobre matrices, ni sobre escalares):

[xm,im]=max(x) mximo elemento de un vector. Devuelve el valor mximo xm y la posicin que ocupa im min(x) mnimo elemento de un vector. Devuelve el valor mnimo y la posicin que ocupa sum(x) sum (x) suma de los elementos de un vector cumsum(x) devuelve el vector suma acumulativa de los elementos de un vector (cada elemento del resultado es una suma de elementos del original) mean(x) valor medio de los elementos de un vector std(x) desviacin tpica prod(x) producto de los elementos de un vector cumprod(x) cumprod (x) devuelve el vector producto acumulativo de los elementos de un vector [y,i]=sort(x) ordenacin de menor a mayor de los elementos de un vector x. Devuelve el vector ordenado y, y un vector i con las posiciones iniciales en x de los elementos en el vector ordenado y.
ing. William Chauca Nolasco

En realidad estas funciones se pueden aplicar tambin a matrices, pero en ese caso se aplican por separado a cada columna de la matriz, dando como valor de retorno un vector resultado de aplicar la funcin a cada columna de la matriz considerada como vector. Si estas funciones se quieren aplicar a las filas de la matriz basta aplicar dichas funciones a la matriz traspuesta.

>> vector=[2 7 10 4 1] vector = 2 7 10 4 1 >> [xm,im]=max(vector) xm = 10 im = >> [ym,imenor]=min(vector) 3 ym = 1 imenor = 5


ing. William Chauca Nolasco

>> vector >> cumprod(vector) vector = ans= 2 7 10 4 1 2 14 140 560 560 >> sum(vector) ans = 24 >> vector >> cumsum(vector) vector = ans = 2 7 10 4 1 2 9 19 23 24 >> mean(vector) >> [y,i]=sort(vector) ans = y= 4.8000 1 2 4 7 10 >> std(vector) ans = i= 3.7014 5 1 4 2 3 >> prod(vector) ans = ing. William Chauca Nolasco 560

FUNCIONES LGICAS PARA MATRICES/VECTORES


De ordinario, las matrices "binarias" que se obtienen de la aplicacin de los operadores relacionales no se almacenan en memoria ni se asignan a variables, sino que se procesan sobre la marcha. MATLAB
dispone de varias funciones para ello. Recurdese que cualquier valor distinto de cero equivale a true, mientras que un valor cero equivale a false. Algunas de estas funciones son:

any(x)

funcin vectorial; chequea si alguno de los elementos del vector x cumple una determinada condicin (en este caso ser distinto de cero). Devuelve un uno un cero >> vector=[2 5 7 9 8] vector = 2 5 7 9 8 >> any(vector>10) ans = 0 >> any(vector<10) ans = 1 ing. William Chauca Nolasco

any(A)

se aplica por separado a cada columna de la matriz A. El resultado es un vector de unos y ceros >> A=[3 3 5;1 2 9; 8 9 0] A= 3 3 5 1 2 9 8 9 0 >> any(A>10) ans = 0 0 0 >> any(A>=5) ans = 1 1 1

all(x) funcin vectorial; chequea si todos los elementos del vector x


cumplen una condicin. Devuelve un uno un cero >> A = [0.53 0.67 0.01 0.38 0.07 0.42 0.69] A = Columns 1 through 7 0.5300 0.6700 0.0100 0.3800 0.0700 0.4200 0.6900 >> B = (A > 0.5) B= 1 1 0 0 0 0 1 >> all(B) ans = 0 ing. William Chauca Nolasco

>> C=(A>=0) C= 1 1 1 >> all(C) ans = 1

all(A) se aplica por separado a cada columna de la matriz A. El resultado


es un vector de unos y ceros >> XXX=[2 3 7;5 9 1; 2 7 6] XXX = 2 3 7 5 9 1 2 7 6 >> all(XXX>10) ans = 0 0 0 >> all(XXX<10) ans = 1 1 1
ing. William Chauca Nolasco

find(x) busca ndices correspondientes a elementos de vectores que cumplen una determinada condicin. El resultado es un vector con los ndices de los elementos que cumplen la condicin find(A) cuando esta funcin se aplica a una matriz la considera como un vector con una columna detrs de otra, de la 1 a la ltima.

ing. William Chauca Nolasco

Ahora se van a sustituir los elementos que cumplen la condicin anterior por valores de 10. Obsrvese cmo se hace y qu resultado se obtiene:

donde ha sido necesario convertir el 10 en un vector del mismo tamao que m. Para chequear si hay algn elemento de un determinado valor por ejemplo 3 puede hacerse lo siguiente:

ing. William Chauca Nolasco

mientras que para comprobar que todos los elementos de A son mayores que cero: >> all(all(A)) ans = 1 En este caso no ha hecho falta utilizar el operador relacional porque cualquier elemento distinto de cero equivale a true.

ing. William Chauca Nolasco

GENERACIN DE GRFICOS PREDEFINIDOS EN MATLAB

ing. William Chauca Nolasco

>> y=[1 2 3 8 2 1 4 6]; >> bar(y)

ing. William Chauca Nolasco

Grfico de barras para la funcin

y = e-x*x

cuando x vara de -3 a 3

>> x = -3:0.2:3; >> y = exp(-x.*x); >> bar(x,y)

ing. William Chauca Nolasco

>> barh(x,y)

ing. William Chauca Nolasco

>> bar(x,y,'g')

ing. William Chauca Nolasco

>> y=[10 8 6;2 5 8;6 0 9;5 8 7;9 4 2] y= 10 8 6 2 5 8 6 0 9 5 8 7 9 4 2

>>bar(y,'grouped')

ing. William Chauca Nolasco

>> bar(y,'stacked')

ing. William Chauca Nolasco

bar3(y,'stacked')

ing. William Chauca Nolasco

>> x = 0:0.2:20;
>>y = sin(x).*exp(-0.2*x); >> plot(x,y)

ing. William Chauca Nolasco

>> plot(x,y,'r*')

ing. William Chauca Nolasco

>> fplot('[sin(x), sin(2*x), sin(3*x)]',[0,2*pi]); >> legend('sen(x)','sen(2x)','sen(3x)')

ing. William Chauca Nolasco

>> x=linspace(0,2,30); >> y=sin(x.^2); >> plot(x,y) >> text(1,0.8,'y=sin(x^2)'); >> hold on >> z=log(sqrt(x)); >> plot(x,z) >> text(1,-0.1,'y=log(sqrt(x))') >> xlabel('Eje x') >> ylabel('Eje y') >> title('Grfico senoidal y logartmico')

ing. William Chauca Nolasco

ing. William Chauca Nolasco

Graficar en dos subgrficas una fila y dos columnas:

>> x = [0:0.1:2*pi]; >> y = sin(x); >> z = cos(x); >> subplot(121); >> plot(x,y) >> title('sin(x)') >> subplot(122); >> plot(x,z) >> title('cos(x)')

ing. William Chauca Nolasco

Graficar en dos subgrficas dos fila y una columna:

>> x = [0:0.1:2*pi]; >> y = sin(x); >> z = cos(x); >> subplot(211); >> plot(x,y) >> title('sen(x)') >> hold on >> subplot(212) >> plot(x,z) >> title('cos(x)')

ing. William Chauca Nolasco

Graficar en cuatro subgrficas dos filas y dos columnas:

>>subplot (221); >>fplot(sin(x),[-2*pi 2*pi]); >>subplot (222); >>fplot(cos(x),[-2*pi 2*pi]); >>subplot (223); >>fplot(csc(x),[-2*pi 2*pi -10 10]); >>subplot (224); >>fplot(sec(x),[-2*pi 2*pi -10 10]);

ing. William Chauca Nolasco

ing. William Chauca Nolasco

Graficar en diferentes escalas


>>x = 0:0.01:3; >>y = abs(exp(-0.5*x).*sin(5*x)); >>subplot(221); >>plot(x,y) >>title('normal') >>hold on >>subplot(222) >>loglog(x,y) >>title('logaritmica') >>subplot(223) >>semilogx(x,y) >>title('semilogaritmico en eje x') >>subplot(224) >>semilogy(x,y) >>title('semilogaritmico en eje y')
ing. William Chauca Nolasco

ing. William Chauca Nolasco