Vous êtes sur la page 1sur 37

Curso bsico de MATLAB

CURSO BSICO DE MATLAB

OBJETIVO

Este curso bsico de MATLAB tiene como objetivo principal de que el estudiante se inicie en el uso de esta herramienta computacional que es bsica en toda ingeniera a nivel Mundial. Los conocimientos bsicos que debe de tener el estudiante son los de Algebra Lineal. Este curso puede ser cubierto fcilmente en 6 horas realizando todos los ejercicios que se muestran. Con este curso bsico, el estudiante debe de ser capaz de seguir aprendiendo el MATLAB de manera autodidacta.

INTRODUCCION El nombre de MATLAB proviene de la contraccin de los trminos MATrix LABoratory y fue inicialmente concebido para proporcionar fcil acceso a las libreras LINPACK y EISPACK, las cuales representan hoy en da dos de las libreras ms importantes en computacin y clculo matricial. MATLAB es un entorno de computacin y desarrollo de aplicaciones totalmente integrado orientado para llevar a cabo proyectos en donde se encuentren implicados elevados clculos matemticos y la visualizacin grfica de los mismos. MATLAB integra anlisis numrico, clculo matricial, proceso de seal y visualizacin grfica en un entorno completo donde los problemas y sus soluciones son expresados del mismo modo en que se escribiran tradicionalmente, sin necesidad de hacer uso de la programacin tradicional. En los medios universitarios MATLAB se ha convertido en una herramienta bsica, tanto para los profesionales e investigadores de centros docentes, como una importante herramienta para el dictado de cursos universitarios, tales como sistemas e ingeniera de control, lgebra lineal, proceso digital de imagen, seal, etc. En el mundo industrial MATLAB est siendo utilizado como herramienta de investigacin para la resolucin de complejos problemas planteados en la realizacin y aplicacin de modelos matemticos en ingeniera. Los usos ms caractersticos de la herramienta los encontramos en reas de computacin y clculo numrico tradicional, teora de control automtico, estadstica, anlisis de series temporales para el proceso digital de seal. MATLAB es la disponibilidad de los toolboxes especializados. Estos son paquetes especializados, orientados a ingenieros, cientficos y otros tipos de profesionales tcnicos. Para iniciar MATLAB, seleccionamos el programa MATLAB de un men del sistema.

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

Curso bsico de MATLAB

y aparece la siguiente ventana de MATLAB, que dice que MATLAB est esperando que introduzcamos un comando. Esta ventana puede cambiar en funcin de la versin.

Seguidamente se presentan comandos ms usados.

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

Curso bsico 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 grficos. 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 grfico de demostracin 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 interrupcin 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 instruccin 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 prctica se puede llegar a aprender el MATLAB.

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

Curso bsico de MATLAB

COMANDOS BASICOS EN MATLAB Suma 2+3 ans = 5 Resta 3-0.01 ans = 2.9900 Divisin 4/9.5 ans = 0.4211 Multiplicacin 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 Nmeros complejos i % por default MATLAB usa la i para nmero complejo ans = 0 + 1.0000i sqrt(-1) % sqrt significa raz cuadrada ans = 0 + 1.0000i x=2+3i

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

Curso bsico 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; A = 1.0000 2.0000 2.0000 0 2.0000 1.0000 2 1 3+2i] 3.0000 1.0000 3.0000 + 2.0000i

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

Curso bsico de MATLAB

B=[1 2 3;3 4 1] B = 1 2 3 3 4 1 Multiplicacin de matrices N C=[1 0 0;2 3 1;2 3 1]; Cx=[1 0 0;2 1 0; 2 3 1]; N=C*Cx = 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 2.0000 inv(A) ans = 0.0411 - 0.1096i 0.6027 - 0.2740i -0.0822 + 0.2192i Transpuesta de una matriz v v = 1.0000 2.0000 3.0000 + 1.0000i transpose(v) ans = 2.0000 0 1.0000 3.0000 1.0000 3.0000 + 2.0000i

0.5616 - 0.1644i -0.0959 - 0.4110i -0.1233 + 0.3288i

-0.0822 + 0.2192i -0.2055 + 0.5479i 0.1644 - 0.4384i

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

Curso bsico de MATLAB

1.0000 B B = 1 3 2 4 3 1

2.0000

3.0000 + 1.0000i

transpose(B) ans = 1 3 2 4 3 1 N N = 1 10 10 0 6 6 0 1 1

transpose(N) ans = 1 10 0 6 0 1

10 6 1

Transpuesta conjugada de una matriz v v = 1.0000 2.0000 3.0000 + 1.0000i v' ans = 1.0000 A=[2+i 2-3i;1 2+i] A = 2.0000 + 1.0000i 1.0000 A' ans = 2.0000 - 1.0000i 2.0000 + 3.0000i

2.0000

3.0000 - 1.0000i

2.0000 - 3.0000i 2.0000 + 1.0000i

1.0000 2.0000 - 1.0000i

Valores caractersticos de una matriz

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

Curso bsico de MATLAB

>>A=[1 2 0;3 2 1;0 -1 2] A= 1 2 3 2 0 -1 >> eig(A) ans = -0.8662 3.6554 2.2108 0 1 2 % valores caractersticos de la matriz A

>> [V,D]=eig(A) % V: matriz de vectores caractersticos, D: Matriz diagonal de valores caractersticos


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) ans = 1.0000 2.0000 0.0000 3.0000 2.0000 1.0000 -0.0000 -1.0000 2.0000 >> det(A) ans = -7 >> help matfun % para ver mas funciones matriciales % Determinante de la matriz A % propiedad donde A=V*D*inv(V), similar a Zabc=T*Z012*inv(T)

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

Curso bsico de MATLAB

Funciones trigonomtricas Las funciones trigonomtricas son en radianes sin(3.2) ans = -0.0584 cos(pi) ans = -1 tan(pi/4) ans = 1.0000 exp(-2) ans = 0.1353 log(pi/4*2) ans = 0.4516 cosh(2+i) ans = 2.0327 + 3.0519i % seno de 3.2 rad

% coseno de pi rad.

% tangente

% exponencial e-2

% logaritmo

% coseno hiperblico

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

Curso bsico 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 Divisin por 2 elemento a elemento v./2 ans = 0.5000 1.0000 1.5000 + 0.5000i Cuadrado de la matriz N N N = 1 10 10 N^2 ans = 1 80 80 0 42 42 0 7 7 0 6 6 0 1 1

Cuadrado elemento a elemento N.^2 ans = 1 100 100

0 36 36

0 1 1

Divisin de vectores elemento a elemento c=[1 2 3 4]; d=[2 2 2 2]; c./d

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

10

Curso bsico de MATLAB

ans = 0.5000

1.0000

1.5000

2.0000

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

11

Curso bsico de MATLAB

MANIPULACION DE MATRICES t=0:1:5 t = 0 % crea vector con valores de 0 a 5 a intervalos de uno 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 Columns 8 through 11 0.5000 1.0000 t t = 0 t(2) ans = 1 t(5) ans = 4 B B = 1 3 B(2,2) ans = 4 B(:,1) ans = 1 3 B(2,:) ans = 3 size(B) ans = 2 size(t) ans = 1 2 4 3 1 % obtiene el valor del elemento en la posicin 2,2, de la matriz B 1 2 3 4 5 % obtiene el valor del elemento en la posicin 2 de t

1.5000

2.0000

% obtiene el valor del elemento en la posicin 5 de t

% obtiene todos los valores de la columna 1

% obtiene todos los valores del rengln 2 4 1 % obtiene la dimensin de la matriz B que es de orden 2X3 3 % obtiene la dimensin del vector t, que es de orden 1X6 6

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

12

Curso bsico 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

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

13

Curso bsico de MATLAB

AYUDAS EN MATLAB help HELP topics: MATLAB\general MATLAB\ops MATLAB\lang MATLAB\elmat MATLAB\elfun MATLAB\specfun .. Ayuda de un tpico en especial help elfun Elementary math functions. Trigonometric. sin sinh asin asinh cos cosh .. Ayuda de una funcin en particular help sin SIN Sine. SIN(X) is the sine of the elements of X. General purpose commands. Operators and special characters. Programming language constructs. Elementary matrices and matrix manipulation. Elementary math functions. Specialized math functions.

Sine. Hyperbolic sine. Inverse sine. Inverse hyperbolic sine. Cosine. Hyperbolic cosine.

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 Tecnolgico de Morelia, Octubre 2006

14

Curso bsico de MATLAB

help help help help help help help +

sym/inv.m zpk/inv.m tf/inv.m ss/inv.m lti/inv.m frd/inv.m

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 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 or - Logical not - Logical xor - Logical any - True if all - True if

+ + * .* ^ .^ \ / .\ ./ kron

== ~= < > <= >=

AND & OR | NOT ~ EXCLUSIVE OR any element of vector is nonzero 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 Tecnolgico de Morelia, Octubre 2006

15

Curso bsico de MATLAB

punct punct punct punct punct punct transpose ctranspose horzcat vertcat subsasgn subsref subsindex

Separator , Semicolon ; Comment % Invoke operating system command ! Assignment = Quote ' Transpose .' Complex conjugate transpose ' Horizontal concatenation [,] Vertical concatenation [;] Subscripted assignment ( ),{ },. Subscripted reference ( ),{ },. 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 unique intersect setdiff setxor ismember -

Set union. Set unique. Set intersection. Set difference. Set exclusive-or. True for set member.

See also ARITH, RELOP, SLASH.

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

16

Curso bsico de MATLAB

GRAFICACION EN MATLAB Ejemplo 1: Graficar la funcin y = sin( x)e 0.4 x x=0:0.05:10; y=sin(x).*exp(-0.4*x); plot(x,y); xlabel(x);ylabel(y); Ejemplo 2: Graficar la funcin z = cos( p ) + i sin( 2 p )e 0.05 p + 0.01 p 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 funcin y = sin( x)e 0.4 x con diferente tipo de lnea x=0:0.05:10; y=sin(x).*exp(-0.4*x); plot(x,y,+); xlabel(x);ylabel(y); Ejemplo 4: Graficar la funcin y = sin( x)e 0.4 x con grid x=0:0.05:10; y=sin(x).*exp(-0.4*x); plot(x,y); xlabel(x);ylabel(y); grid Ejemplo 5: Graficar la funcin y = sin(3t )e 0.3t con titulo y grid 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 Tecnolgico de Morelia, Octubre 2006

17

Curso bsico 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);


1 0.5 0 -0.5 -1 40 20 0 -20 -40

10

20

30

10

20

30

30

1000 800

20

600 400 200

10

0 0 10 20 30

0 0 10 20 30

Ejemplo 7: Diferente forma de graficacin clf x = 0:0.1:4; y = sin(x.^2).*exp(-x); stem(x,y) % diferente forma de graficar grid
0.35 0.3 0.25 0.2 0.15 0.1 0.05 0 -0.05 -0.1 -0.15 0 0.5 1 1.5 2 2.5 3 3.5 4

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

18

Curso bsico 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 despus en la pantalla del MATLAB ejecutar dicho ejemplo: ejemplo1

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

19

Curso bsico 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 Tecnolgico de Morelia, Octubre 2006

20

Curso bsico 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 Tecnolgico de Morelia, Octubre 2006

21

Curso bsico 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 funcin 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); -----------------------------Evaluacin de la funcin 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 Tecnolgico de Morelia, Octubre 2006

22

Curso bsico de MATLAB

grid

20

15

10

0 1 0.5 0 -0.5 Y -1 -1 -0.5 X 0.5 0 1

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 Tecnolgico de Morelia, Octubre 2006

23

Curso bsico 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');
Grafica de contorno 2 1.5 -0.1 1 0.5 -0.4 0 -0.5 -1 -1.5 -2 -2 -0.2 0.2 Y 0 0.1

-0.3 0.3 0.4

-1.5

-1

-0.5

0 X

0.5

1.5

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 Tecnolgico de Morelia, Octubre 2006

24

Curso bsico 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 Tecnolgico de Morelia, Octubre 2006

25

Curso bsico 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 demostracin. Este programa ofrece todo tipo de herramientas con las que cuenta el MATLAB, por ejemplo uso de matrices, formas de graficacin, libreras, entre muchas cosas ms. Es recomendable ver este Demo a menudo. La forma de ejecutar el Demo es: demo

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

26

Curso bsico de MATLAB

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

3x + 2 y 3z = 4 2x y = 0 x + 10 y + z = 2
Este sistema se puede agrupar de la forma:

3 2 3 x 4 2 1 0 y = 0 1 10 1 z 2
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 0 1 2 -1 1 10 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 Tecnolgico de Morelia, Octubre 2006

27

Curso bsico de MATLAB

x = 0.0286 y = 0.0571 z = 1.4000


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

x = Ax + bu
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)

v(t)

i(t)

La ecuacin que describe al circuito es:

di (t ) R 1 = i (t ) + v(t ) dt L L
Solucin: Se representa a la ecuacin diferencial en una funcin -----------------------------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 ecuacin diferencial de la funcin ecua_est. Para este caso se utiliza la funcin ode23 de MATLAB clear all t0=0; % tiempo inicial de integracin tf=10; % tiempo final de integracin c_i=0; % condicin inicial de la variable de estado [t,cor]=ode23('ecua_est',[t0 tf],c_i); % uso de ode23 para solucin plot(t,cor);

La grafica corresponde a i (t ) .

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

28

Curso bsico 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 v(t) i1(t) R1

L2 i2(t) R2

Las ecuaciones que describen al circuito son:

v = L1

di1 + R1 (i1 i2 ) dt di 0 = L2 2 + R2i2 + R1 (i2 i1 ) dt

Y en forma de ecuacin de estado se tiene:

di1 R1 dt L = 1 di2 R1 dt L2

R1 i1 1 L1 + L v R1 + R2 i2 1 0 L2

Representada en una funcin 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 Tecnolgico de Morelia, Octubre 2006

29

Curso bsico de MATLAB

plot(t,cor); Las dos graficas corresponden a i1 (t ), i2 (t ) . ------------------------------

Ejemplo: Factor de Potencia vs Capacitor Para el seguiste sistema, obtener el voltaje y el factor de potencia en el punto indicado. Utilizar valores de reactancia capacitiva Xc de 10 a 100 ohms. Considerar: Vs = 440 volts Zs = 1+j0.2 ohms ZL = 10+j20 ohms

Zs I Vs

V ZL

Xc

Solucin: La corriente y el voltaje estn dados por:

I=

VS XCZL ZS + XC + ZL

V = VS Z S I
De esta manera la potencia aparente esta dada por

S = VI * = P jQ
Por tanto el PF dado por:

FP =

P S

Y la potencia reactiva entregada por el capacitor dada por:

Qcap =

XC

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

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

30

Curso bsico de MATLAB

clear all Zs=1+i*0.2; Vs=440; ZL=10+i*20; c=1; for Xc=10:1:100 I=Vs/(Zs-i*Xc*ZL/(-i*Xc+ZL)); V=Vs-Zs*I; S=V*conj(I); FP(c)=real(S)/norm(S); Xcap(c)=Xc; Vcap(c)=abs(V); Qcap(c)=abs(V)^2/Xc; c=c+1; end subplot(311); plot(Xcap,FP); xlabel('Xc en ohms'); ylabel('Factor de potencia en P'); grid subplot(312); plot(Xcap,Vcap); xlabel('Xc en ohms'); ylabel('Voltaje en P [V]'); grid subplot(313); plot(Xcap,Qcap/1000); xlabel('Xc en ohms'); ylabel('Potencia del capacitor [KVAR]'); grid ------------ fin de programa --------------------------------

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

31

Curso bsico de MATLAB

1 Factor de potencia en P 0.8 0.6 0.4

0.2 10

20

30

40

50 60 Xc en ohms

70

80

90

100

436 434 432 430

Voltaje en P [V]

428 10

20

30

40

50 60 Xc en ohms

70

80

90

100

Potencia del capacitor [KVAR]

20 15 10 5

0 10

20

30

40

50 60 Xc en ohms

70

80

90

100

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

32

Curso bsico de MATLAB

Ejemplo: Mtodo del gradiente para encontrar el mnimo de una funcin no lineal f(x).

Este mtodo consiste en, a partir de un punto inicial x(k), avanzar en direccin contraria al gradiente (x f(x)) utilizando la siguiente ecuacin recursiva:

x ( k +1) = x ( k ) ( k ) x f x ( k )
donde: x(k) = = x f(x) = x(k+1) =
(k)

( )

Punto inicial Longitud de paso Gradiente de f(x) Nuevo punto (punto mejorado)

Donde la longitud del paso puede esta dada por:

(k ) =

T f (x ) x f (x ) x T f (x ) H x f (x ) x

Donde H es el Hessiano de la funcin. De aqu que aparezca el siguiente algoritmo para encontrar el mnimo de una funcin no lineal mediante el mtodo del gradiente. Algoritmo: Paso 1: Paso 2: Paso 3: Seleccionar un punto inicial, x(0). Hacer k = 1. Calcular g ( k ) = x f x ( k ) y (k), hacer x ( k +1) = x ( k ) ( k ) g ( k )

( )

Si ||g || (prcticamente cero) el proceso termina. En caso contrario, hacer k = k+1. Regresar al paso 2.
(k)

Ejemplo: Encontrar el valor mnimo de la siguiente funcin


2 f ( x ) = x12 + 9 x 2 + 2 x1 18 x 2 + 10

Solucin:

2 Paso 1: Considere el punto inicial x ( 0) = k = 0 , f(x(0)) = 18 2 (0) (0) Paso 2: Evaluar g y


2 x1 + 2 2(2 ) + 2 6 g ( 0) = x f x (0) = 18 x 18 = 18(2) 18 = 18 2 2 0 H= 0 18

( )

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

33

Curso bsico de MATLAB

(0) =

(g ) g (g ( 0 ) ) T H g ( 0 )

(0) T

( 0)

6 18) 18 360 = = 2 0 6 5904 (6 18) 0 18 18

(6

k=1

2 1.6341 360 6 x (1) = 2 5904 18 = 0.9024


Paso 3: ||g(0)||=18.97 Iteracin 2, para k=2

por tanto f(x(1)) = 7.0242

x ( 2)

5.268 1.756 ) 1.756 1.6341 = 0.9014 (5.268 1.756) 2 0 5.268 0 18 1.756

(5.268

5.268 1.1804 1.756 = 0.6518

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

0.998 x ( 21) = 1

0.0004 g ( 21) = 0.0001 tol

f(x(21)) 0

Como se puede ver la solucin exacta es:

1 x* = 1

f(x*) = 0

---------- Programa en MATLAB para la solucin 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 Tecnolgico de Morelia, Octubre 2006

34

Curso bsico 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:

XC = XL
Por tanto:

1 = 2fL 2fC
Despejando la frecuencia

f =

1 2 LC

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 estn en paralelo. --------------- Programa en MATLAB ------------------clear all L=0.01; C=10e-6; fres=1/(sqrt(L*C)*2*pi)

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

35

Curso bsico 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 Tecnolgico de Morelia, Octubre 2006

36

Curso bsico de MATLAB

Impedancia capacitiva e inductiva 60 40 Impedancia [ohms] 20 0 -20 -40 -60 300

350

400

450

500 550 Frecuencia [Hz]

600

650

700

x 10

Impedancia del paralelo Xc y XL

2 Impedancia [ohms]

-1

-2 300

350

400

450

500 550 Frecuencia [Hz]

600

650

700

Manuel Madrigal

Instituto Tecnolgico de Morelia, Octubre 2006

37

Vous aimerez peut-être aussi