Anda di halaman 1dari 10

Referencias para utilizar Matlab Temas: Nmeros complejos, Funciones y operaciones, Funciones de usuario, Inversa de una matriz, Ecuaciones

lineales, Bucles y decisiones, Interpolar, Ajuste de curvas y polinomios, Tiempo, Grficos, Entrada-salida, Conversin de base, Arrays, Puesta a punto, MuPAD, Integral, Derivada, ODE Nmeros Complejos >> sqrt(-1) ans = 0 + 1.0000i % No utilizar i o j para otras variables Algunas operaciones: >> c=2+3i c = 2.0000 + 3.0000i >> c=complex(2,3) c = 2.0000 + 3.0000i >> conj(c) ans = 2.0000 - 3.0000i >> real(c) ans = 2 >> imag(c) ans = 3 >> abs(c) % sqrt(real(c).^2 + imag(c).^2) ans = 3.6056 Forma polar o exponencial responde a: Eje imaginario

()

()

Rectangular a Polar:
>> r=abs(c) r = 3.6056 >> tetha=angle(c) tetha = 0.9828

Diagrama de Argand

Eje real

Exponencial a Rectangular:
>> c=r*exp(i*tetha) c = 2.0000 + 3.0000i

Polar a Rectangular:

>> c=r*cos(tetha)+i*r*sin(tetha) c = 2.0000 + 3.0000i


Dibujar un crculo en forma polar: >> circle = exp( 2*i*[1:360]*pi/360 ); >>plot(circle) >>axis('equal')
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1

-1

-0.5

0.5

Grfica Polar:

>> theta = 0:2*pi/100:2*pi; >>r = theta/(2*pi); >>polar(theta,r),title('Grfica polar con radio creciente')
Grfica polar con radio creciente 90 120 0.8 0.6 150 0.4 0.2 180 0 30 1 60

210

330

240 270

300

Conversin de coordenadas cartesianas a polares o cilndricas: [THETA,RHO] = cart2pol(X,Y) Conversin de coordenadas polares a cartesianas: [X,Y] = pol2cart(THETA,RHO) Funciones y operaciones matemticas comunes

Funciones matriciales:

Traspuesta [f, c]=size(x) rand(n) Matriz de nmeros aleatorios eye(n) Matriz identidad zeros(n) Matriz de ceros ones(n) Matriz de unos diag(n) Crea o extrae diagonales det(x) Determinante eig(x) Autovalores

Funciones vectoriales:

max(x) % Cuando matriz, mximo de cada columna. Mximo de matriz: max(max(x)) min(x) sum(x) prod(x) median(x) Mediana % Ms funciones estadsticas: plot(x,y) y activar Tools Data Statistics mean(x) Promedio o media any(x) Si al menos un valor es desigual a cero all(x) Si todos los valores son desiguales a cero

Funciones elementales:

abs(x) Mdulo sqrt(x) Raz cuadrada sign(x) El signo de x, (0 si x = 0, 1 si x < 0, y +1 si x > 0) round(x) Se redondea al entero ms cercano fix(x) Se redondea al entero ms cercano a cero floor(x) Se redondea al entero ms cercano a - ceil(x) Se redondea al entero ms cercano a + rem(x,y) Devuelve el residuo de x/y find(x) Indices a valores desiguales a cero norm(x) % Norma Eucldea

Funciones Trigonomtricas (Suponen ngulos en radianes): Conversin de ngulos:


ang_grados=ang_radianes*(180/pi) ang_radianes= ang_grados*(pi/180) sin(x) cos(x) tan(x) cot(x) sec(x) csc(x)

Funciones Trigonomtricas Inversas:


asin(x) acos(x) .

Funciones exponenciales y logartmicas:


exp(x) log(x) ( ) log10(x) ( )

Funciones Hiperblicas:
sinh(x) .

Funciones Hiperblicas Inversas:

asinh(x) . Precedencia de los operadores (de mayor a menor):

Operadores aritmticos:

. .^ ^ ~(Not) .* ./ .\ * / \ + Producto/divisin elemento por elemento (matrices de igual tamao): x.*y=[x(1)*y(1), x(2)*y(2),,x(n)*y(n)] x./y=[x(1)/y(1), x(2)/y(2),,x(n)/y(n)] Ejemplo1: Evitar divisin por cero >> x=[-1:.5:1] >> sin(x)./x ans = 0.8415 0.9589 NaN 0.9589 0.8415 >> x = x + (x==0)*eps % eps es una constante 2.2e-16, representa la precisin de operaciones en MATLAB >> sin(x)./x ans = 0.8415 0.9589 1.0000 0.9589 0.8415

Ejemplo2: Evitar infinito x = -3/2*pi : pi/200 : 3/2*pi; y = tan(x); plot(x, y) figure; y = y .* (abs(y) < 1e10); %Devuelve cero slo en las asntotas plot(x, y)
x 10
15

80 60

4
40

20 0 -20

-2
-40

-4

-60 -80 -5

-6 -5

-4

-3

-2

-1

-4

-3

-2

-1

Operadores relacionales:
< <= > >= == ~=

Operadores lgicos:

~ (NOT) & (And) | (Or) && (And, escalar) || (Or, escalar) Ejemplo: La magnitud de un vector:

[
es

| |

+ +

S: >>magnitud=sqrt(sum(v.*v)) >>magnitud_otra=norm(v) % Norma eucldea Ver problema 28 Funciones de usuario function z=euclidea(x,y) z=sqrt(x.^2+y.^2); end Se ejecuta: >> z=euclidea(2,3) z = 3.6056 Inversa de una matriz La matriz por la matriz identidad es la matriz original: A=A*I=I*A Dos escalares son inversas si su producto es 1 (Ej.: .5 y 2) Dos matrices son inversas si su producto es la matriz identidad: Para que exista la inversa: La matriz debe ser cuadrada y su rango (nmero de filas o columnas linealmente independientes) igual al nmero de filas (ver ejemplo bucle If). Ejemplo: Matriz cuya tercera columna es 3 veces la primera (no es linealmente independiente): a= 1 2 3 4 5 12 7 8 21 >> rank(a) ans = 2 >> inv(a) Warning: Matrix is singular to working precision. ans = Inf Inf Inf Inf Inf Inf Inf Inf Inf

Ecuaciones lineales Solucin de un producto vectorial:

>>a=[1 -2 -3] >>x=[2 3 4] >> dot(a,x) ans = -16 >> a*b' ans = -16 Ecuaciones bsicas: >> solve('3*x-2=0') ans = 2/3 Solucin de un sistema de ecuaciones lineales:

Forma: Ax=b

+ +

+ +

>> A=[3 2 -1; 2 5 2; 4 -2 5] A= 3 2 -1 2 5 2 4 -2 5 >> b=[15 1 7]' b= 15 1 7 >> x=inv(A)*b % Utilizando la inversa (ver Jacobiano, Filtro lineal y ejemplo de If) x= 4.5794 -0.6262 -2.5140 >> x=A\b % Utilizando la divisin x = linsolve(A,b) % Otra opcin

Forma: xA=b

x y b deben ser vectores filas >> bp=b' bp = 15 1 7 >> xp=bp*inv(A) xp = 2.4766 -0.0280 1.9065 >> bp=xp*A bp = 15.0000 1.0000 7.0000 Bucles y Decisiones

Bucles:

for indice = j:m:k sentencias end Ejemplo while expresin sentencias end Ejemplo: x=-1; while x<=1 if x==0 disp('Se encontr cero'); break, % Sale del bucle (utilizado con for y while) continue sigue el lazo end y=sin(x)/x x=x+.5 end % Salta aqu cuando se ejecuta break

Decisiones:

if expresin1 sentencia1 elseif expresin2 sentencia2 elseif expresin3 sentencia3 . . else sentencian end

Ejemplo: [nf,nc] = size(A); if nf ~= nc disp(No existe la inversa, la matriz no es cuadrada) elseif rank(A) ~= nf disp(No existe la inversa, el rango no es igual al nmero de filas) else disp(Inversa de la Matriz:) disp(inv(A)) end switch expresin case valor1 sentencias1 case valor2 sentencias2 otherwise sentenciasn end Ejemplo: x = 3.2; % x en metros unidades ='pulgadas'; switch unidades case {'pulgadas'} y = x*0.0254; case{'pies'} y = x*0.3048; case{'metros'} y = x; case{'centmetros'} y = x/100; case{'milmetros'} y = x/1000; otherwise disp(['Unidad desconocida: ' unidades]) y = NaN; end Interpolar, Ajuste de curvas y polinomios t=linspace(n1, n2, n) n valores de n1 a n2 t=inicio:incremento:final

Interpolacin lineal:

A partir de la ecuacin que se deduce de los tringulos similares, supone que la funcin entre dos puntos se puede estimar con una lnea recta. y () () () () () ()

()

() +

(()

())

() b c x

a Ejemplo: x = 0:1:10; y = sin(x); xi = 0:.1:10; ylin = interp1(x,y,xi); % Interpolacin lineal ycub = spline(x,y,xi); % Comparacin con Spline (ver Ejemplo) plot(x,y,'o',xi,ylin,'r',xi,ycub,'g')
1 0.8 0.6 0.4 0.2 0 -0.2 -0.4 -0.6 -0.8 -1

10

Regresin o ajuste de curvas:

Ejemplo1: x = 0:0.1:1; y = [-0.447 1.978 3.28 6.16 7.08 7.34 7.66 9.56 9.48 9.30 11.2]; a = polyfit(x,y,3) % Devuelve a = 16.0758 -33.9245 29.3246 -0.6104 yhat = polyval(a,x); % Polinomio solucin: + err = yhat - y MSE = mean(err.^2) RMSE = sqrt(MSE) plot(x,y,'o',x,yhat),title('Regresin lineal'),... xlabel('x'),ylabel('y'),... grid,axis([-.1,1.1,-.5,11.5]),legend('medida','estimada',4) % Realizar la interpolacin directamente en grfico: plot(x,y) y activar Tools Basic Fitting % Obtener datos estadsticos directamente en grfico: plot(x,y) y activar Tools Data Statistics
Regresin lineal

10

y
4 2 medida estimada 0 0.2 0.4 x 0.6 0.8 1 0

Ejemplo2, Ejemplo3 Polinomios:

( ) ( )

polyval(a,x) Evala el polinomio

+ +

% a=[1 4 -7 -10] ; A = x.^3+ 4*x.^2 - 7*x - 10; % b=[0 1 0 1] ; B = s.^2 + 1;

c=a+b Suma polinomios

c=a-b Resta polinomios c=conv(a,b) Multiplica polinomios [q r]=dconv(a,b) Divisin de polinomios % q=Cociente, r=Resto; polyder(a) Derivada del polinomio polyint(a,C) Integral del polinomio r=roots(a) Races del polinomio % Valores de x para los cuales A(X)=0; a=poly(r) Coeficientes del polinomio % Coeficientes del polinomio cuya raz es r;

Ejemplo:
a=[1 5 11 13] b=[1 2 4] >> [q r] = deconv(a,b) % a/b = q + r/b q=1 3 r=0 0 1 1 + + + + + + + + + + Tiempo tic; for t=1:5000 y(t)=sin(2*pi*t/10); end ttranscurrido = toc % Tiempo transcurrido Grficos

Funciones bsicas:

plot(x, y, g*-) stairs(x, y) % Grfico discreto fplot(@(x) 200*sin(x(:))./x(:), [-20 20]) % Ajuste automtico de nmero de puntos title(Ttulo del grfico) xlabel() ylabel() axis([xmin, xmax, ymin, ymax, ]) axis square figure subplot % Colocar texto en grfico con gtext, a travs del cursor >> x=0:.01:2; >> y=exp(x); >> z=4*sin(3*x); >> plot(x,y,x,z), xlabel('x'), gtext('y'), gtext('z'); [x, y]=ginput(n) % Lectura de n puntos directamente de un grfico Ejemplos de grficos en 3D

Entrada-salida >>disp(Hola) Hola >> fprintf( 'Errores son: %5.1f %12.2e\n', 1.256, 0.1256 ) Errores son: 1.3 1.26e-001 >>x = input( Entre el valor de x: ) % Entrada de valores por teclado >> K = menu('Seleccione un color','Rojo','Azul','Verde') % Entrada a travs de un cuadro de dilogo >> a=5.123456789 % Cambia formato en que se ven los datos (no confundir con eps, precisin de clculo) a = 5.1235 >> format long >> a a = 5.123456789000000 De archivos: uiimport % Importar datos save salida.dat A ASCII % Salvar datos Conversin de base dec2bin(d) bin2dec(b) dec2hex(d) hex2dec(h) dec2base(d,b) % A cualquier base Arrays % Se atiende un conjunto de elementos como una sola entidad Arrays o clases en MATLAB: numricos, caracteres, lgicos, clula, estructura, referencia de funciones, Java.

Ejemplo de Estructura: Nombre, email, DNI, edad, calificaciones Alumno.nombre='Juan Prez' % Datos del primer alumno Alumno.email='juan@yahoo.com' Alumno.DNI='43033342' Alumno.edad=34 Alumno.calificaciones=[3 5 2 8] Alumno(2).nombre='Carlos Snchez' % Datos del segundo alumno Alumno(2).email='carlos@yahoo.com' Alumno(2).DNI='36355542' Alumno(2).edad=30 Alumno(2).calificaciones=[2 7 3 7] >> Alumno % Estructura creada Alumno = 1x2 struct array with fields: nombre email DNI edad calificaciones >> max(Alumno(1).calificaciones) % Mxima calificacin del primer alumno ans = 8 >> Alumno(2).email % email del segundo alumno ans = carlos@yahoo.com >> mean(Alumno(1).calificaciones) % Promedio de calificaciones del primer alumno ans = 4.5000 struct(nombre,) % Otra forma de crear estructuras

Ejemplo de Clulas: AlumnoC=struct2cell(Alumno) % Convierte la anterior estructura a clulas cellplot(AlumnoC) % Visualiza la estructura de las clulas >> AlumnoC{2,1,2} ans = carlos@yahoo.com >>AlumnoC{2,1,2}='carloss@yahoo.com' % Altera el email del segundo alumno Ejemplo 2 de Clulas: Definir la siguiente tabla Jamaica [70 73 65 79; 69 68 81 82; 72 77 78 81] D(1,1)={'Jamaica'}; D(1,2)={[1995, 1996, 1997]}; D(2,1)={[70 73 65 79; 69 68 81 82; 72 77 78 81]}; D(2,2)={'3 de Septiembre de 2011'}; celldisp(D) % Muestra el contenido de los elementos del arreglo cellplot(D) % Muestra visual [1995, 1996, 1997] 3 de Setiembre de 2011

Pais=D{1,1} % Muestra el contenido de una celda Maxhum1996=max(D{2,1}(2,:)) % Mxima humedad de 1996 (segunda fila de D) cell(n) % Crea celda de tamao nxn Puesta a punto (Debugging) A continuacin se muestra una captura de un programa dividido en clulas (no confundir con clulas de arrays), para facilitar su puesta a punto

Cada clula se identifica a travs de %%, lo que permite ejecutar secciones de programa de forma separada, facilitando la puesta a punto. La utilizacin de puntos de ruptura (Breakpoints) permite ejecutar el programa hasta determinada lnea de cdigo, utilizando Set/Clear Breakpoints desde el men Debug.

MuPAD Es la herramienta (a travs de Notebooks) que permite obtener la solucin de problemas utilizando matemtica simblica. >> mupadwelcome

Integral

Numrica:

x=linspace(0,4,200); y=2*ones(1,200); z=trapz(x,y) % Integral de un rectngulo z=8 % Posicin a partir de velocidad

( )

+ ( ) % Ecuacin base

t=0:10; % Tiempo v=[0 3 5 7 8 10 25 45 55 60 76]; % Velocidad % Se calcula posicin p(1)=0; for k=1:10 p(k+1)=trapz(t(k:k+1), v(k:k+1)) + p(k); end

Analtica:

Derivada Numrica: x=[x(1), x(2),x(n)]; dx=[x(2)-x(1), x(3)-x(2),,x(n)-x(n-1)]; % Diferencia de valores sucesivos >> x=[5 9 10 13]; >> y=diff(x) y=4 1 3

Analtica:

ODE Ecuaciones diferenciales ordinarias: ( )

; ( )

; (Conceptos bsicos).

Consideraciones para obtener la solucin:

Tipo: -Paso fijo: Perodo de muestreo constante para la solucin, requerido para generar cdigo -Paso variable: Perodo de muestreo variable, este es menor mientras mayor es la tasa de cambio de las variables. Discreto o continuo: -Discreto: Presencia de variables de estado discretas -Continuo: Presencia de variables de estado continuas Algoritmo: -ode1: Mtodo de Euler , Simulink -ode45: Cuarto o quinto orden del mtodo de Runge-Kutta -ode15s: Ecuaciones con mayor dificultad (stiff equations)

Simulink: Simulation Configuration Parameters

Ejemplos: -Sistemas de primer orden -Sistemas de segundo orden

Sistemas lineales:
initial(ss) dt=0.01 % Perodo muestreo t=[0:dt:10]; % Se definen las matrices A=[0, 1;-3, -2]; B=[0; 1]; C=[1 0]; D=0; % Se crea el modelo ejemp=ss(A,B,C,D); % Solucin utilizando initial yt=initial(ejemp, [y0, dy0], t); Comparacin de initial con ode45

Anda mungkin juga menyukai