37
Curso básico de MATLAB CURSO BÁSICO DE MATLAB OBJETIVO Este curso básico de MATLAB tiene como objetivo principal de que el estudiante se inicie en el uso de esta herramienta computacional que es básica en toda ingeniería a nivel Mundial. Los conocimientos básicos que debe de tener el estudiante son los de Algebra Lineal. Este curso puede ser cubierto fácilmente en 6 horas realizando todos los ejercicios que se muestran. Con este curso básico, el estudiante debe de ser capaz de seguir aprendiendo el MATLAB de manera autodidacta. INTRODUCCION El nombre de MATLAB proviene de la contracción de los términos MATrix LABoratory y fue inicialmente concebido para proporcionar fácil acceso a las librerías LINPACK y EISPACK, las cuales representan hoy en día dos de las librerías más importantes en computación y cálculo matricial. MATLAB es un entorno de computación y desarrollo de aplicaciones totalmente integrado orientado para llevar a cabo proyectos en donde se encuentren implicados elevados cálculos matemáticos y la visualización gráfica de los mismos. MATLAB integra análisis numérico, cálculo matricial, proceso de señal y visualización gráfica en un entorno completo donde los problemas y sus soluciones son expresados del mismo modo en que se escribirían tradicionalmente, sin necesidad de hacer uso de la programación tradicional. En los medios universitarios MATLAB se ha convertido en una herramienta básica, tanto para los profesionales e investigadores de centros docentes, como una importante herramienta para el dictado de cursos universitarios, tales como sistemas e ingeniería de control, álgebra lineal, proceso digital de imagen, señal, etc. En el mundo industrial MATLAB está siendo utilizado como herramienta de investigación para la resolución de complejos problemas planteados en la realización y aplicación de modelos matemáticos en ingeniería. Los usos más característicos de la herramienta los encontramos en áreas de computación y cálculo numérico tradicional, teoría de control automático, estadística, análisis de series temporales para el proceso digital de señal. MATLAB es la disponibilidad de los toolboxes especializados. Estos son paquetes especializados, orientados a ingenieros, científicos y otros tipos de profesionales técnicos. Para iniciar MATLAB, seleccionamos el programa MATLAB de un menú del sistema. Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 1

Guia Rapida Matlab

Embed Size (px)

Citation preview

Page 1: Guia Rapida Matlab

Curso básico de MATLAB

CURSO BÁSICO DE MATLAB OBJETIVO Este curso básico de MATLAB tiene como objetivo principal de que el estudiante se inicie en el uso de esta herramienta computacional que es básica en toda ingeniería a nivel Mundial. Los conocimientos básicos que debe de tener el estudiante son los de Algebra Lineal. Este curso puede ser cubierto fácilmente en 6 horas realizando todos los ejercicios que se muestran. Con este curso básico, el estudiante debe de ser capaz de seguir aprendiendo el MATLAB de manera autodidacta. INTRODUCCION

El nombre de MATLAB proviene de la contracción de los términos MATrix LABoratory y fue inicialmente concebido para proporcionar fácil acceso a las librerías LINPACK y EISPACK, las cuales representan hoy en día dos de las librerías más importantes en computación y cálculo matricial.

MATLAB es un entorno de computación y desarrollo de aplicaciones totalmente integrado orientado para llevar a cabo proyectos en donde se encuentren implicados elevados cálculos matemáticos y la visualización gráfica de los mismos. MATLAB integra análisis numérico, cálculo matricial, proceso de señal y visualización gráfica en un entorno completo donde los problemas y sus soluciones son expresados del mismo modo en que se escribirían tradicionalmente, sin necesidad de hacer uso de la programación tradicional.

En los medios universitarios MATLAB se ha convertido en una herramienta básica, tanto para los profesionales e investigadores de centros docentes, como una importante herramienta para el dictado de cursos universitarios, tales como sistemas e ingeniería de control, álgebra lineal, proceso digital de imagen, señal, etc. En el mundo industrial MATLAB está siendo utilizado como herramienta de investigación para la resolución de complejos problemas planteados en la realización y aplicación de modelos matemáticos en ingeniería. Los usos más característicos de la herramienta los encontramos en áreas de computación y cálculo numérico tradicional, teoría de control automático, estadística, análisis de series temporales para el proceso digital de señal. MATLAB es la disponibilidad de los toolboxes especializados. Estos son paquetes especializados, orientados a ingenieros, científicos y otros tipos de profesionales técnicos.

Para iniciar MATLAB, seleccionamos el programa MATLAB de un menú del sistema.

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 1

Page 2: Guia Rapida Matlab

Curso básico de MATLAB

y aparece la siguiente ventana de MATLAB, que dice que MATLAB está esperando que introduzcamos un comando. Esta ventana puede cambiar en función de la versión.

Seguidamente se presentan comandos más usados.

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 2

Page 3: Guia Rapida Matlab

Curso básico de MATLAB

Para salir de MATLAB, use quit o exit. El comando clc despeja la ventana de comandos, y el comando clf borra la figura actual y por tanto despeja la ventana de gráficos. El comando clear no afecta a las ventanas, pero si borra todas las variables de la memoria Para ver algunas de las capacidades de MATLAB, usar el comando demo, que inicia el MATLAB EXPO, un entorno gráfico de demostración que ilustra algunos tipos de operaciones que se pueden realizar con MATLAB. Para abortar un comando en MATLAB, mantener presionada la tecla de control y oprima c (Ctrl. + c). Esto ocasiona un interrupción local dentro del MATLAB. Para acceder al menú de ayuda se debe usar el comando help. El simbolo “»” denota el prompt de MATLAB y no se escribe al entrar instrucciones. El “;” al final de la instrucción omite el “eco” o salida a la pantalla. Para el presente curso seguir todos los comandos que en este curso se presentan, pues solamente con la práctica se puede llegar a aprender el MATLAB.

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 3

Page 4: Guia Rapida Matlab

Curso básico de MATLAB

COMANDOS BASICOS EN MATLAB Suma » 2+3 ans = 5 Resta » 3-0.01 ans = 2.9900 División » 4/9.5 ans = 0.4211 Multiplicación y operaciones » 4/2*(12+2) ans = 28 Uso de variables » x=2 x = 2 » y=4.6 y = 4.6000 » z=x*y z = 9.2000 Números complejos » i % por default MATLAB usa la i para número complejo ans = 0 + 1.0000i » sqrt(-1) % sqrt significa raíz cuadrada ans = 0 + 1.0000i » x=2+3i

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 4

Page 5: Guia Rapida Matlab

Curso básico de MATLAB

x = 2.0000 + 3.0000i » 1/x ans = 0.1538 - 0.2308i Magnitud de fasor » x x = 2.0000 + 3.0000i » abs(x) % obtiene la magnitud de la variable x ans = 3.6056 » angle(x) % obtiene el ángulo de la variable x en radianes ans = 0.9828 Angulo de fasor » angle(x)*180/pi % forma de obtener el ángulo en grados ans = 56.3099 » pi % variable que reconoce MATLAB como π ans = 3.1416 Vectores » v=[1 2 3+i] v = 1.0000 2.0000 3.0000 + 1.0000i » v=[1;2;3+i] v = 1.0000 2.0000 3.0000 + 1.0000i Matrices » A=[1 2 3;2 0 1; 2 1 3+2i] A = 1.0000 2.0000 3.0000 2.0000 0 1.0000 2.0000 1.0000 3.0000 + 2.0000i

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 5

Page 6: Guia Rapida Matlab

Curso básico de MATLAB

» B=[1 2 3;3 4 1] B = 1 2 3 3 4 1 Multiplicación de matrices » C=[1 0 0;2 3 1;2 3 1]; » Cx=[1 0 0;2 1 0; 2 3 1]; » N=C*Cx N = 1 0 0 10 6 1 10 6 1 » v v = 1.0000 2.0000 3.0000 + 1.0000i » x=N*v x = 1.0000 25.0000 + 1.0000i 25.0000 + 1.0000i Inversa de una matriz » A A = 1.0000 2.0000 3.0000 2.0000 0 1.0000 2.0000 1.0000 3.0000 + 2.0000i » inv(A) ans = 0.0411 - 0.1096i 0.5616 - 0.1644i -0.0822 + 0.2192i 0.6027 - 0.2740i -0.0959 - 0.4110i -0.2055 + 0.5479i -0.0822 + 0.2192i -0.1233 + 0.3288i 0.1644 - 0.4384i Transpuesta de una matriz » v v = 1.0000 2.0000 3.0000 + 1.0000i » transpose(v) ans =

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 6

Page 7: Guia Rapida Matlab

Curso básico de MATLAB

1.0000 2.0000 3.0000 + 1.0000i » B B = 1 2 3 3 4 1 » transpose(B) ans = 1 3 2 4 3 1 » N N = 1 0 0 10 6 1 10 6 1 » transpose(N) ans = 1 10 10 0 6 6 0 1 1 Transpuesta conjugada de una matriz » v v = 1.0000 2.0000 3.0000 + 1.0000i » v' ans = 1.0000 2.0000 3.0000 - 1.0000i » A=[2+i 2-3i;1 2+i] A = 2.0000 + 1.0000i 2.0000 - 3.0000i 1.0000 2.0000 + 1.0000i » A' ans = 2.0000 - 1.0000i 1.0000 2.0000 + 3.0000i 2.0000 - 1.0000i Valores característicos de una matriz

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 7

Page 8: Guia Rapida Matlab

Curso básico de MATLAB

>>A=[1 2 0;3 2 1;0 -1 2] A = 1 2 0 3 2 1 0 -1 2 >> eig(A) % valores característicos de la matriz A ans = -0.8662 3.6554 2.2108 >> [V,D]=eig(A) % V: matriz de vectores característicos, D: Matriz diagonal de valores característicos V = -0.7113 -0.5418 -0.3225 0.6637 -0.7194 -0.1952 0.2316 0.4346 0.9262 D = -0.8662 0 0 0 3.6554 0 0 0 2.2108 >> V*D*inv(V) % propiedad donde A=V*D*inv(V), similar a Zabc=T*Z012*inv(T) ans = 1.0000 2.0000 0.0000 3.0000 2.0000 1.0000 -0.0000 -1.0000 2.0000 >> det(A) % Determinante de la matriz A ans = -7 >> help matfun % para ver mas funciones matriciales

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 8

Page 9: Guia Rapida Matlab

Curso básico de MATLAB

Funciones trigonométricas Las funciones trigonométricas son en radianes » sin(3.2) % seno de 3.2 rad ans = -0.0584 » cos(pi) % coseno de pi rad. ans = -1 » tan(pi/4) % tangente ans = 1.0000 » exp(-2) % exponencial e-2

ans = 0.1353 » log(pi/4*2) % logaritmo ans = 0.4516 » cosh(2+i) % coseno hiperbólico ans = 2.0327 + 3.0519i

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 9

Page 10: Guia Rapida Matlab

Curso básico de MATLAB

OPERACIONES CON MATRICES » v v = 1.0000 2.0000 3.0000 + 1.0000i Cuadrado elemento a elemento » v.^2 ans = 1.0000 4.0000 8.0000 + 6.0000i División por 2 elemento a elemento » v./2 ans = 0.5000 1.0000 1.5000 + 0.5000i Cuadrado de la matriz N » N N = 1 0 0 10 6 1 10 6 1 » N^2 ans = 1 0 0 80 42 7 80 42 7 Cuadrado elemento a elemento » N.^2 ans = 1 0 0 100 36 1 100 36 1 División de vectores elemento a elemento » c=[1 2 3 4]; » d=[2 2 2 2]; » c./d

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 10

Page 11: Guia Rapida Matlab

Curso básico de MATLAB

ans = 0.5000 1.0000 1.5000 2.0000

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 11

Page 12: Guia Rapida Matlab

Curso básico de MATLAB

MANIPULACION DE MATRICES » t=0:1:5 % crea vector con valores de 0 a 5 a intervalos de uno t = 0 1 2 3 4 5 » x=-3:0.5:2 % crea vector con valores de –3 a 2 con intervalos de 0.5 x = Columns 1 through 7 -3.0000 -2.5000 -2.0000 -1.5000 -1.0000 -0.5000 0 Columns 8 through 11 0.5000 1.0000 1.5000 2.0000 » t t = 0 1 2 3 4 5 » t(2) % obtiene el valor del elemento en la posición 2 de t ans = 1 » t(5) % obtiene el valor del elemento en la posición 5 de t ans = 4 » B B = 1 2 3 3 4 1 » B(2,2) % obtiene el valor del elemento en la posición 2,2, de la matriz B ans = 4 » B(:,1) % obtiene todos los valores de la columna 1 ans = 1 3 » B(2,:) % obtiene todos los valores del renglón 2 ans = 3 4 1 » size(B) % obtiene la dimensión de la matriz B que es de orden 2X3 ans = 2 3 » size(t) % obtiene la dimensión del vector t, que es de orden 1X6 ans = 1 6

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 12

Page 13: Guia Rapida Matlab

Curso básico de MATLAB

» A=[1 2 3 4;2 3 4 5; 0 1 2 3;0 9 0 8]; » A A = 1 2 3 4 2 3 4 5 0 1 2 3 0 9 0 8 » A(1,3) ans = 3 » A(:,2) ans = 2 3 1 9 » A(2:3,2:3) ans = 3 4 1 2 » A(1,:) ans = 1 2 3 4 »

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 13

Page 14: Guia Rapida Matlab

Curso básico de MATLAB

AYUDAS EN MATLAB » help HELP topics: MATLAB\general - General purpose commands. MATLAB\ops - Operators and special characters. MATLAB\lang - Programming language constructs. MATLAB\elmat - Elementary matrices and matrix manipulation. MATLAB\elfun - Elementary math functions. MATLAB\specfun - Specialized math functions. ….. Ayuda de un tópico en especial » help elfun Elementary math functions. Trigonometric. sin - Sine. sinh - Hyperbolic sine. asin - Inverse sine. asinh - Inverse hyperbolic sine. cos - Cosine. cosh - Hyperbolic cosine. ….. Ayuda de una función en particular » help sin SIN Sine. SIN(X) is the sine of the elements of X. Overloaded methods help sym/sin.m » help inv INV Matrix inverse. INV(X) is the inverse of the square matrix X. A warning message is printed if X is badly scaled or nearly singular. See also SLASH, PINV, COND, CONDEST, NNLS, LSCOV. Overloaded methods

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 14

Page 15: Guia Rapida Matlab

Curso básico de MATLAB

help sym/inv.m help zpk/inv.m help tf/inv.m help ss/inv.m help lti/inv.m help frd/inv.m » help + Operators and special characters. Arithmetic operators. plus - Plus + uplus - Unary plus + minus - Minus - uminus - Unary minus - mtimes - Matrix multiply * times - Array multiply .* mpower - Matrix power ^ power - Array power .^ mldivide - Backslash or left matrix divide \ mrdivide - Slash or right matrix divide / ldivide - Left array divide .\ rdivide - Right array divide ./ kron - Kronecker tensor product kron Relational operators. eq - Equal == ne - Not equal ~= lt - Less than < gt - Greater than > le - Less than or equal <= ge - Greater than or equal >= Logical operators. and - Logical AND & or - Logical OR | not - Logical NOT ~ xor - Logical EXCLUSIVE OR any - True if any element of vector is nonzero all - True if all elements of vector are nonzero Special characters. colon - Colon : paren - Parentheses and subscripting ( ) paren - Brackets [ ] paren - Braces and subscripting { } punct - Decimal point . punct - Structure field access . punct - Parent directory .. punct - Continuation ...

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 15

Page 16: Guia Rapida Matlab

Curso básico de MATLAB

punct - Separator , punct - Semicolon ; punct - Comment % punct - Invoke operating system command ! punct - Assignment = punct - Quote ' transpose - Transpose .' ctranspose - Complex conjugate transpose ' horzcat - Horizontal concatenation [,] vertcat - Vertical concatenation [;] subsasgn - Subscripted assignment ( ),{ },. subsref - Subscripted reference ( ),{ },. subsindex - Subscript index Bitwise operators. bitand - Bit-wise AND. bitcmp - Complement bits. bitor - Bit-wise OR. bitmax - Maximum floating point integer. bitxor - Bit-wise XOR. bitset - Set bit. bitget - Get bit. bitshift - Bit-wise shift. Set operators. union - Set union. unique - Set unique. intersect - Set intersection. setdiff - Set difference. setxor - Set exclusive-or. ismember - True for set member. See also ARITH, RELOP, SLASH.

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 16

Page 17: Guia Rapida Matlab

Curso básico de MATLAB

GRAFICACION EN MATLAB Ejemplo 1: Graficar la función xexy 4.0)sin( −= »x=0:0.05:10; »y=sin(x).*exp(-0.4*x); »plot(x,y); »xlabel(‘x’);ylabel(‘y’); Ejemplo 2: Graficar la función pepipz p 01.0)2sin()cos( 05.0 ++= −

»p=0:0.05:8*pi; »z=cos(p)+i*sin(2*p).*exp(-0.05*p)+0.01*p; »plot(real(z),imag(z)); »xlabel(‘Re(z)’);ylabel(‘Im(z)’); Ejemplo 3: Graficar la función con diferente tipo de línea xexy 4.0)sin( −= »x=0:0.05:10; »y=sin(x).*exp(-0.4*x); »plot(x,y,’+’); »xlabel(‘x’);ylabel(‘y’);

Ejemplo 4: Graficar la función con grid xexy 4.0)sin( −= »x=0:0.05:10; »y=sin(x).*exp(-0.4*x); »plot(x,y); »xlabel(‘x’);ylabel(‘y’); »grid Ejemplo 5: Graficar la función con titulo y grid tety 3.0)3sin( −= »t=0:0.05:pi+0.01; »y=sin(3*t).*exp(-0.3*t); »polar(t,y); »title(‘Grafica en polar’); »grid Ejemplo 6: Uso del subplot »clear all; % limpia variables »clf; % limpia todas las graficas »t=0:0.3:30; »g1=sin(t); »g2=t.*sin(t); »g3=t.*sin(t).^2; »g4=t.^2.*sin(t).^2; »subplot(2,2,1);

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 17

Page 18: Guia Rapida Matlab

Curso básico de MATLAB

»plot(t,g1); »subplot(2,2,2); »plot(t,g2); »subplot(2,2,3); »plot(t,g3); »subplot(2,2,4); »plot(t,g4);

0 10 20 30-1

-0.5

0

0.5

1

0 10 20 30-40

-20

0

20

40

0 10 20 300

10

20

30

0 10 20 300

200

400

600

800

1000

Ejemplo 7: Diferente forma de graficación »clf »x = 0:0.1:4; »y = sin(x.^2).*exp(-x); »stem(x,y) % diferente forma de graficar »grid

0 0.5 1 1.5 2 2.5 3 3.5 4-0.15

-0.1

-0.05

0

0.05

0.1

0.15

0.2

0.25

0.3

0.35

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 18

Page 19: Guia Rapida Matlab

Curso básico de MATLAB

ARCHIVOS .m EN MATLAB Los ejemplos anteriores se pueden ejecutar usando archivos .m » edit Aparece un editor en donde se puede escribir los comandas a ejecutar en MATLAB, por ejemplo escribir: % este es un ejemplo de archivo .m x=0:0.05:10; y=sin(x).*exp(-0.4*x); plot(x,y); xlabel(‘x’);ylabel(‘y’); En el menú FILE guardar el archivo como ejemplo1.m, y después en la pantalla del MATLAB ejecutar dicho ejemplo: » ejemplo1

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 19

Page 20: Guia Rapida Matlab

Curso básico de MATLAB

PROGRAMACION EN MATLAB En los siguientes ejemplos usar archivos .m ------------------------------ % programa simple para uso de ciclo FOR clear all n=4; m=3; for j=1:m for k=1:n A(j,k)=j*k; end end ----------------- ----------------- % ejemplo ciclo WHILE clear all tol=1e-5; iter=0; x=[1 2 3 4 5]; while max(abs(x))>tol x=x/2; iter=iter+1; end iter [max(abs(x)) tol] ------------------------------ ------------------------------ %ejemplo sentencia IF clear all n=10; if n>15 a=0; else a=1; end a ------------------------------ ------------------------------ % ejemplo switch

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 20

Page 21: Guia Rapida Matlab

Curso básico de MATLAB

clear all nombre='paty'; switch nombre case 'jose' disp('se trata de Jose'); case 'paty' disp('se trata de Paty'); otherwise disp('no se trata de Jose ni Paty'); end ------------------------------ ------------------------------ % Ejemplo multiplicacion matrix por % vector de orden 3X3 clear all x=[1;2;3]; A=[1 2 3;4 5 6;7 8 9]; for k=1:3 m=0; for j=1:3 m=A(k,j)*x(j)+m; end B(k)=m; end B A*x ------------------------------

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 21

Page 22: Guia Rapida Matlab

Curso básico de MATLAB

FUNCIONES EN MATLAB Las funciones se guardan como archivos .m ------------------------------ function y=evaluar1(a,b,c,x) y=a*x^2+b*x+c; ------------------------------ Nota: Importante guardar el archivo como evaluar1.m Forma de llamar a la función evaluar1 » m=evaluar1(1,2,3,0.1) m = 3.2100 ------------------------------ ------------------------------ function [x,y]=evaluar2(a,b,t) x=exp(-a*t).*sin(t); y=exp(-b*t).*sin(t); ------------------------------ Evaluación de la función evaluar2 » t=0:0.2:10; » [x,y]=evaluar2(1,2,t); » plot(t,x,t,y); » ------------------------------ Mas graficas en MATLAB Ejemplo 1 Grafica en tres dimensiones (plot3) clear all clf t=0:0.1:20; r=exp(-0.2*t); x=r.*cos(0.5*pi*t); y=r.*sin(0.5*pi*t); z=t; plot3(x,y,z); xlabel('X'); ylabel('Y'); zlabel('Z');

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 22

Page 23: Guia Rapida Matlab

Curso básico de MATLAB

grid

-1-0.5

00.5

1

-1

-0.5

00.5

10

5

10

15

20

XY

Z

Ejemplo 2: Grafica de mallas (meshgrid y mesh) clear all clf xa=[-2:0.2:2]; ya=[-2:0.2:2]; [x,y]=meshgrid(xa,ya); z=x.*exp(-x.^2-y.^2); mesh(x,y,z); title('Grafica en tercera dimension'); xlabel('X'); ylabel('Y'); zlabel('Z');

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 23

Page 24: Guia Rapida Matlab

Curso básico de MATLAB

Ejemplo 3 Grafica de contornos (contour, clabel) clear all clf xa=[-2:0.2:2]; ya=[-2:0.2:2]; [x,y]=meshgrid(xa,ya); z=x.*exp(-x.^2-y.^2); h=contour(x,y,z); clabel(h); title('Grafica de contorno'); xlabel('X'); ylabel('Y');

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

-0.4

-0.3

-0.2

-0.1

0 0.1

0.2

0.30.4

Grafica de contorno

X

Y

Ejemplo 4 Grafica en tres dimensiones y contornos (meshc) clear all clf xa=[-2:0.2:2]; ya=[-2:0.2:2]; [x,y]=meshgrid(xa,ya); z=x.*exp(-x.^2-y.^2); meshc(x,y,z); title('Grafica en tercera dimension'); xlabel('X'); ylabel('Y'); zlabel('Z');

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 24

Page 25: Guia Rapida Matlab

Curso básico de MATLAB

Ejemplo 5 Grafica en tres dimensiones (surf) clear all clf xa=[-2:0.2:2]; ya=[-2:0.2:2]; [x,y]=meshgrid(xa,ya); z=x.*exp(-x.^2-y.^2); surf(x,y,z); title('Grafica en tercera dimension'); xlabel('X'); ylabel('Y'); zlabel('Z');

Ejemplo 6 Grafica en tres dimensiones con color (surfl y colormap)

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 25

Page 26: Guia Rapida Matlab

Curso básico de MATLAB

clear all clf xa=[-2:0.2:2]; ya=[-2:0.2:2]; [x,y]=meshgrid(xa,ya); z=x.*exp(-x.^2-y.^2); surfl(x,y,z); colormap(pink); title('Grafica en tercera dimension'); xlabel('X'); ylabel('Y'); zlabel('Z');

Programa Demo de MATLAB El MATLAB ofrece un programa interactivo de demostración. Este programa ofrece todo tipo de herramientas con las que cuenta el MATLAB, por ejemplo uso de matrices, formas de graficación, librerías, entre muchas cosas más. Es recomendable ver este Demo a menudo. La forma de ejecutar el Demo es: » demo

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 26

Page 27: Guia Rapida Matlab

Curso básico de MATLAB

SOLUCION DE PROBLEMAS CON AYUDA DEL MATLAB Ejemplo: Resolver el siguiente sistema de ecuaciones lineales

3 2 32 0

10 2

x y zx y

x y z

+ − =− =+ + = −

4

⎡ ⎤⎢ ⎥⎢ ⎥⎢ ⎥⎣ ⎦

Este sistema se puede agrupar de la forma:

3 2 3 42 1 0 01 10 1 2

xyz

−⎡ ⎤ ⎡ ⎤⎢ ⎥ ⎢ ⎥− =⎢ ⎥ ⎢ ⎥⎢ ⎥ ⎢ ⎥ −⎣ ⎦ ⎣ ⎦

de esta manera usando el MATLAB para encontrar los valores de x,y, z es: » A=[3 2 -3;2 -1 0;1 10 1] A = 3 2 -3 2 -1 0 1 10 1 » b=[4;0;-2] b = 4 0 -2 » w=inv(A)*b w = -0.0286 -0.0571 -1.4000 » Así se tiene que

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 27

Page 28: Guia Rapida Matlab

Curso básico de MATLAB

0.02860.05711.4000

xyz

= −= −= −

Ejemplo: Solución de ecuaciones diferenciales de primer orden y orden superior en MATLAB MATLAB resuelve sistema de ecuaciones de estado de la forma:

buAxx +=•

Donde x es la variable de estado. Ejemplo: Encontrar la corriente del siguiente circuito, si R=0.2 ohms, L=0.03 H, v(t)=1.1cos(t)

R v(t) i(t) L

La ecuación que describe al circuito es:

( ) 1( ) ( )di t R i t v tdt L L

= − +

Solución: Se representa a la ecuación diferencial en una función ------------------------------ function didt=ecua_est(t,cor) v=1.1*cos(t); L=0.03; R=0.2; didt=-R/L*cor+1/L*v; ------------------------------ Forma de resolver la ecuación diferencial de la función ecua_est. Para este caso se utiliza la función ode23 de MATLAB » clear all » t0=0; % tiempo inicial de integración » tf=10; % tiempo final de integración » c_i=0; % condición inicial de la variable de estado » [t,cor]=ode23('ecua_est',[t0 tf],c_i); % uso de ode23 para solución » plot(t,cor); La grafica corresponde a . ( )i t

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 28

Page 29: Guia Rapida Matlab

Curso básico de MATLAB

------------------------------ Ejemplo: Encontrar la corriente del siguiente circuito, si R1=0.2 ohms, L1=0.03 H, R2=0.1 ohms, L2=0.04 H, v(t)=1.1cos(t)

L1 L2 v(t) i1(t) R1 i2(t) R2

Las ecuaciones que describen al circuito son:

)(0

)(

121222

2

2111

1

iiRiRdtdiL

iiRdtdiLv

−++=

−+=

Y en forma de ecuación de estado se tiene:

vLii

LRR

LR

LR

LR

dtdidtdi

⎥⎥⎥

⎢⎢⎢

⎡+⎥

⎤⎢⎣

⎥⎥⎥⎥

⎢⎢⎢⎢

+−

−=

⎥⎥⎥⎥

⎢⎢⎢⎢

0

11

2

1

2

21

2

1

1

1

1

1

2

1

Representada en una función de MATLAB: ------------------------------ function dXdt=ecua_est2(t,X) v=1.1*cos(t); L1=0.03; R1=0.2; L2=0.04; R2=0.1; A=[-R1/L1 R1/L1 R1/L2 -(R1+R2)/L2]; b=[1/L1 0]; U=v; dXdt=A*X+b*U; ------------------------------ » clear all » t0=0; » tf=10; » c_i=[0;0]; » [t,cor]=ode23('ecua_est2',[t0 tf],c_i);

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 29

Page 30: Guia Rapida Matlab

Curso básico de MATLAB

» plot(t,cor); Las dos graficas corresponden a .

jemplo: Factor de Potencia vs Capacitor

ara el seguiste sistema, obtener el voltaje y el factor de potencia en el punto indicado. Utilizar valores de

s = 440 volts

olución: La corriente y el voltaje están dados por:

1 2( ), ( )i t i t------------------------------ E Preactancia capacitiva Xc de 10 a 100 ohms. Considerar: VZs = 1+j0.2 ohms ZL = 10+j20 ohms

V

I

Zs

Vs Xc ZL

S

IZVVZX

ZXZ

VI

SS

LC

LCS

S

−=+

+=

e esta manera la potencia aparente esta dada por

−== *

or tanto el PF dado por:

D S jQPVI

P

SPFP =

la potencia reactiva entregada por el capacitor dada por: Y

Ccap X

V 2

Q =

------------- Programa en MATLAB ---------------------

--

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 30

Page 31: Guia Rapida Matlab

Curso básico de MATLAB

clear all Zs=1+i*0.2;

0;

=10:1:100

*ZL/(-i*Xc+ZL)); Vs-Zs*I;

)/norm(S);

)^2/Xc;

ot(311); ot(Xcap,FP);

hms'); e potencia en P');

hms'); P [V]');

cap,Qcap/1000); hms');

pacitor [KVAR]');

Vs=440; ZL=10+i*2 c=1; for Xc I=Vs/(Zs-i*Xc V= S=V*conj(I); FP(c)=real(S Xcap(c)=Xc; Vcap(c)=abs(V); Qcap(c)=abs(V c=c+1; end subplplxlabel('Xc en oylabel('Factor dgrid subplot(312);

cap,Vcap); plot(Xxlabel('Xc en oylabel('Voltaje engrid subplot(313); plot(Xxlabel('Xc en oylabel('Potencia del cagrid ------------ fin de programa --------------------------------

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 31

Page 32: Guia Rapida Matlab

Curso básico de MATLAB

10 20 30 40 50 60 70 80 90 1000.2

0.4

0.6

0.8

1

Xc en ohms

Fact

or d

e po

tenc

ia e

n P

10 20 30 40 50 60 70 80 90 100428

430

432

434

436

Xc en ohms

Vol

taje

en

P [V

]

10 20 30 40 50 60 70 80 90 1000

5

10

15

20

Xc en ohms

Pot

enci

a de

l cap

acito

r [K

VA

R]

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 32

Page 33: Guia Rapida Matlab

Curso básico de MATLAB

Ejemplo: Método del gradiente para encontrar el mínimo de una función no lineal f(x). Este método consiste en, a partir de un punto inicial x(k), avanzar en dirección contraria al gradiente (∇x f(x)) utilizando la siguiente ecuación recursiva: ( ))()()()1( k

xkkk f xxx ∇−=+ α

donde: x(k) = Punto inicial α(k) = Longitud de paso ∇x f(x) = Gradiente de f(x) x(k+1) = Nuevo punto (punto mejorado) Donde la longitud del paso puede esta dada por:

( ) ( )( ) ( )xx

xxfHf

ff

xTx

xTxk

∇∇∇∇

=)(α

Donde H es el Hessiano de la función. De aquí que aparezca el siguiente algoritmo para encontrar el mínimo de una función no lineal mediante el método del gradiente. Algoritmo: Paso 1: Seleccionar un punto inicial, x(0). Hacer k = 1. Paso 2: Calcular ( ))()( k

xk xf∇=g y α(k), hacer )()()()1( kkkk gxx α−=+

Paso 3: Si ||g(k)|| ≤ ε (prácticamente cero) el proceso termina. En caso contrario, hacer k = k+1. Regresar al paso 2. Ejemplo: Encontrar el valor mínimo de la siguiente función ( ) 101829 21

22

21 +−++= xxxxxf

Solución:

Paso 1: Considere el punto inicial k = 0 , f(x(0)) = 18 ⎟⎟⎠

⎞⎜⎜⎝

⎛=

22)0(x

Paso 2: Evaluar g(0) y α(0)

( ) ( )⎟⎟⎠

⎞⎜⎜⎝

⎛=⎟⎟

⎞⎜⎜⎝

⎛−+

=⎟⎟⎠

⎞⎜⎜⎝

⎛−+

=∇=186

18)2(18222

181822

2

1)0()0(

xx

xfxg

⎟⎟⎠

⎞⎜⎜⎝

⎛=

18002

H

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 33

Page 34: Guia Rapida Matlab

Curso básico de MATLAB

( )

( ) 5904360

186

18002

186

186

186

)()(

)0()0(

)0()0()0( =

⎟⎟⎠

⎞⎜⎜⎝

⎛⎟⎟⎠

⎞⎜⎜⎝

⎟⎟⎠

⎞⎜⎜⎝

==gHg

ggT

T

α

k=1

⎟⎟⎠

⎞⎜⎜⎝

⎛=⎟⎟

⎞⎜⎜⎝

⎛−⎟⎟

⎞⎜⎜⎝

⎛=

9024.06341.1

186

5904360

22)1(x por tanto f(x(1)) = 7.0242

Paso 3: ||g(0)||=18.97 Iteración 2, para k=2

( )

( )⎟⎟⎠

⎞⎜⎜⎝

⎛=⎟⎟⎠

⎞⎜⎜⎝

⎛−

⎟⎟⎠

⎞⎜⎜⎝

⎛−⎟⎟

⎞⎜⎜⎝

⎛−

⎟⎟⎠

⎞⎜⎜⎝

⎛−

−−⎟⎟

⎞⎜⎜⎝

⎛=

6518.01804.1

756.1268.5

756.1268.5

18002

756.1268.5

756.1268.5

756.1268.5

9014.06341.1)2(x

f(x(2)) = 5.84 Después de 21 iteraciones se obtiene el siguiente resultado:

f(x(21)) ≈ 0 ⎟⎟⎠

⎞⎜⎜⎝

⎛−=

1998.0)21(x tol≤⎟⎟

⎞⎜⎜⎝

⎛−

=0001.0

0004.0)21(g

Como se puede ver la solución exacta es:

f(x*) = 0 ⎟⎟⎠

⎞⎜⎜⎝

⎛−=

11*x

---------- Programa en MATLAB para la solución de este ejemplo -------------- % Ejemplo: Resolver en sistema: % % min f(x)=x1^2+9x2^2+2x1-18x2+10 % % mediante el metodo del gradiente % error=1; tol=1e-9; k=0; X0=[2;2]; while error>tol

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 34

Page 35: Guia Rapida Matlab

Curso básico de MATLAB

x1 = X0(1); x2 = X0(2); g = [2*x1+2;18*x2-18]; H = [2 0;0 18]; alfa = transpose(g)*g/(transpose(g)*H*g); X = X0-alfa*g; X0 = X; k = k+1; error=norm(g); end x1 = X(1) x2 = X(2) g f = x1^2+9*x2^2+2*x1-18*x2+10 error k --------------- final del programa ------------------ Ejemplo: Frecuencia de resonancia La frecuencia de resonancia en un circuito LC esta dada por aquella frecuencia que iguala a la reactancia capacitivo con la reactancia inductiva, esto es:

LC XX = Por tanto:

fLfC

ππ

22

1=

Despejando la frecuencia

LCf

π21

=

A esta frecuencia se le conoce como frecuencia de resonancia. Ejemplo: sea L=10 mH y C=10 µF. Encontrar la frecuencia de resonancia, así como respuesta a la frecuencia de 300 a 700Hz si estos dos elementos están en paralelo. --------------- Programa en MATLAB ------------------- clear all L=0.01; C=10e-6; fres=1/(sqrt(L*C)*2*pi)

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 35

Page 36: Guia Rapida Matlab

Curso básico de MATLAB

cont=1; for f=300:700 XL(cont)=i*2*pi*f*L; XC(cont)=-i/(2*pi*f*C); XLC(cont)=XL(cont)*XC(cont)/(XL(cont)+XC(cont)); cont=cont+1; end f=300:700; subplot(211); plot(f,imag(XL),f,imag(XC)); xlabel('Frecuencia [Hz]'); ylabel('Impedancia [ohms]'); title('Impedancia capacitiva e inductiva'); grid subplot(212); plot(f,imag(XLC)); xlabel('Frecuencia [Hz]'); ylabel('Impedancia [ohms]'); title('Impedancia del paralelo Xc y XL'); grid --------------- fin del programa --------------------------- >> ejemplo3 fres = 503.2921

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 36

Page 37: Guia Rapida Matlab

Curso básico de MATLAB

300 350 400 450 500 550 600 650 700-60

-40

-20

0

20

40

60

Frecuencia [Hz]

Impe

danc

ia [o

hms]

Impedancia capacitiva e inductiva

300 350 400 450 500 550 600 650 700-2

-1

0

1

2

3x 104

Frecuencia [Hz]

Impe

danc

ia [o

hms]

Impedancia del paralelo Xc y XL

Manuel Madrigal Instituto Tecnológico de Morelia, Octubre 2006 37