Sunteți pe pagina 1din 28

Curso Bsico de Matlab. Manejo de Matlab.

30/08/2010 LUIS MIGUEL CHUQUI

Curso Bsico de Matlab

Capitulo 1  Mens y entornos de desarrollo del Matlab Capitulo 2     Funciones bsicas de Matlab Estructura bsica de datos. Comandos bsicos Funciones matemticas

Capitulo 3  Algebra Lineal o Vectores y matrices o Operaciones de matrices y vectores en Matlab o Determinante o Matriz inversa o Ecuaciones Lineales o Valores y vectores propios o Otras matrices  Polinomios o Operaciones con polinomios o Races de polinomios. Capitulo 4  Programacin en Matlab o Bifurcaciones y bucles o Sentencia if o Sentencia switch o Sentencia for o Sentencia while o Sentencia break o Sentencia continue o Lectura y escritura interactiva de variables o Funcin input o Funcin disk o Ficheros *.m

Curso Bsico de Matlab

Capitulo 5  Grficas con Matlab  2D o Retcula o Graficas polares o Grficas logartmicas y semilogartmicas o Grficas de funciones paramtricas o Grficas de funciones implcitas o Mltiples curvas  3D o Subgrficas o Grfica de contorno o Grfica vectorial Introduccin Matlab es un entorno de clculo tcnico de altas prestaciones para clculo numrico y visualizacin integral, anlisis numrico, clculo matricial, procesamiento de seales y grficos en un entorno fcil de usar, donde los problemas y las soluciones son expresados como se escriben matemticamente, sin la programacin tradicional. Entre sus prestaciones bsicas se hallan: la manipulacin de matrices, la representacin de datos y funciones, la implementacin de algoritmos, la creacin de interfaces de usuario (GUI) y la comunicacin con programas en otros lenguajes y con otros dispositivos hardware. El paquete matlab dispone de dos herramientas adicionales que expanden sus prestaciones, a Simulink (plataforma de simulacin multidominio) y GUIDE (editor de interfaces de usuario - GUI). Los usos y aplicaciones tpicos de Matlab son:        Matemticas y clculo. Desarrollo de algoritmos. Adquisicin de datos. Modelado, simulacin y prototipos. Anlisis y procesado de datos. Grficos cientficos y de ingeniera. Desarrollo de aplicaciones.

Curso Bsico de Matlab

CAPITULO 1  MENS Y ENTORNOS DE DESARROLLO DEL MATLAB Los elementos que se muestran a continuacin, representan el entorno grfico para trabajar en MatLab. Esta venta es igual para cada una de las versiones de Matlab.

A continuacin se comenzar a la explicacin de cada uno de los siguientes elementos. Ventana de Comando.

Es aquella en la cual el usuario puede realizar operaciones, matemticas o ingreso de funciones para realizar los clculos.

Curso Bsico de Matlab

Workspace (Ventana de trabajo). Muestra las variables utilizadas, al realizar los clculos matemticos. Adems se puede tambin ver el contenido de las variables (El valor que posee cada una de las variables usadas, ya sean estas vectores o matrices). Cabe decir que en MatLab no se declaran variables, como en los lenguajes de programacin.

Commandhistory (Historial de comandos). Muestra cada una de los comandos utilizados, esta ventana permite al usuario ver cada una de las funciones utilizadas. Otra manera de ver los comandos utilizados es con la ayuda de las flechas de direccin arriba o abajo. SIMULINK Es un paquete de Software que se ejecuta acompaando a MATLAB para modelar, simular y analizar sistemas dinmicos. Funciona sobre MATLAB, es decir, para iniciar SIMULINK es necesario entrar antes en MATLAB. Ambos programas estn desarrollados y comercializados por TheMathWorks, Inc. SIMULINK es soportado en sistemas Windows, Unix o Macintosh Simulink puede simular cualquier sistema que pueda ser definido por ecuaciones diferenciales continuas y ecuaciones diferenciales discretas. Esto significa que se puede modelar sistemas continuos en el tiempo, discretos en el tiempo o sistemas hbridos SIMULINK puede trabajar con: - Sistemas lineales y no lineales - Sistemas en tiempo continuo, muestreados o un hbrido de los dos. - Sistemas multifrecuencia Posee una interfaz de usuario grfica (GUI), con diagramas de bloques para construir los modelos utilizando operaciones con el ratn del tipo pulsar y arrastrar. De esta forma, podemos dibujar los modelos de la misma forma que lo haramos
5

Curso Bsico de Matlab

con lpiz y papel. Esto supone un cambio radical respecto a los anteriores paquetes de simulacin. Una vez construidos los diagramas de bloques, podemos ejecutar simulaciones y analizar los resultados, tambin de forma grfica. En SIMULINK podemos encontrar una amplia biblioteca de bloques de sumideros, fuentes, componentes lineales y no lineales y conectores. Tambin podemos personalizar y crear nuestros propios bloques. Los modelos son jerrquicos, de forma que podemos ver un sistema desde un nivel superior y entrando en los bloques podemos ir descendiendo a travs de los niveles para ver con ms detalle el modelo. Las libreras principales de SIMULINK son Sources (fuentes): Sirven para generar todo tipo de seales. Sinks (sumideros): Se usan como salida o para visualizar la seal. Discrete: elementos de sistemas lineales y en tiempo discreto (funciones de transferencia, diagramas de espacio-estado...) Linear: elementos y conexiones para sistemas lineales y en tiempo contnuo (sumadores, multiplicadores...) Nonlinear: operadores no lineales (funciones arbitrarias, saturacin, retrasos...) Connections: Multiplexores, Demultiplexores, etc... Adems, existen una gran cantidad de Demos y de funciones complementarias. Despus de definir un modelo, se puede simular utilizando cualquiera de los mtodos de integracin disponibles, desde el men de rdenes de SIMULINK o introduciendo rdenes directamente desde la lnea de comando de MATLAB. Con los bloques de visualizacin podemos ver los resultados de la simulacin mientras se est ejecutando. Adems, los resultados de la simulacin se pueden transferir al espacio de trabajo de MATLAB para su posterior tratamiento. Tambin podemos usar las utilidades de los TOOLBOXES de aplicacin de MATLAB.

Curso Bsico de Matlab

CAPITULO 2  FUNCIONES BSICAS DE MATLAB Matlab ofrece la posibilidad de realizar las siguientes operaciones bsicas: Expresin Suma Resta Multiplicacin (Vectorial) Multiplicacin (Escalar) Divisin Potencia Smbolo + * .* / ^ Operacin A+B A-B A*B (A y B son Vectores) A.*B (B es un escalar) A/B A^B

Nota:Cabe decir que al manejar MatLab, solo maneja vectores o matrices. Rara vez utilizaremos un escalar. Ejemplo: Para el siguiente ejemplo se van a declarar variables A = 3 y B=4 y se proceder a realizar las operaciones respectivas. >> A = 3; >> B=4; >>C= A+B; >>D=A-B; >>E=A*B; >>F=A/B; Nota: Para este caso, verificar que variables se crearon al realizar las operaciones en el workspace, adems responder a la siguiente pregunta Se puede utilizar el operador.*?  ESTRUCTURA BSICA DE DATOS. Los datos en que maneja Matlab son:  Enteros.  Flotantes o Decimales.  Cadenas de Caracteres.
7

Curso Bsico de Matlab

Ejemplo: A continuacin se van a crear las siguientes variables. A=3; % Esta es una variable entera. A=3.3 % Esta es una variable flotante. A=HOLA % Esta es una variable con cadena de caracteres. Nota:Cabe decir que l % es un comentario, es decir el compilador no leer las siguientes lneas.  COMANDOS BSICOS Los comandos que ms se utilizarn al momento de manejar MatLab son los siguientes. Comando clc Clear All CloseAll who whos pwd Descripcin Limpia el contenido de la venta de comandos Elimina todas las variables utilizadas, hasta el momento Cierra todas las ventanas abiertas. Obtiene la lista de las variables declaradas Obtiene la lista de las variables declaradas con sus valores, tipo de dato. Muestra el directorio de trabajo actual

Nota: Se puede suprimir la palabra All, por la variable que se desea eliminar.  FUNCIONES MATEMTICAS COMUNES Aproximaciones. Funcin ceil (x) fix (x) floor (x) round (x) Descripcin redondea hacia infinito Redondea hacia cero Redondea hacia menos infinito redondea hacia el entero ms prximo

Curso Bsico de Matlab

Trigonometra Funcin sin (x) cos (x) tan (x) csc (x) Sec(x) Cot(x) Sind(x) Sinh(x) asin (x) Asind(x) Ejercicios: Realizar el clculo de los siguientes valores. Sin(30)= Cos(pi/6)= Asin(-0.7070)= Atan(1)= Para los siguientes valores de x=60, y=4/pi, z=2/9*pi Calcular: Y=sin(x+y)*cos(z) X=tan (y-z)-csc(x)+3cot(x)-sinh(y) Z=sec(x)-2tan(z)+csc(y) OTRAS FUNCIONES MATEMTICAS Funcin abs (x) sign (x) exp (x) Descripcin Calcula el valor absoluto Signo del argumento x, si x es un valor real (-1 si es negativo, 0 si es cero, y 1 si es positivo ) Exponencial
9

Descripcin Seno con el ngulo en radianes Coseno con el ngulo en radianes Tan con el ngulo en radianes Cosecante con el ngulo en radianes Secante con el ngulo en radianes Cotangente con el ngulo en radianes Seno con el ngulo en radianes seno hiperblico (radianes) Arcoseno con el angulo radianes Arcoseno con el angulogrados

Curso Bsico de Matlab

Mximo comn divisor Mnimo comn mltiplo Logaritmo natural Logaritmo en base 2 Logaritmo en base 10 Modulo despus de la divisin, solo devuelve el numero positivo. (residuo) rem(x,y) Resto de la divisin entera (residuo), devuelve si el modulo es positivo o negativo. Sqrt(x) Raz cuadrada nthroot(x,n) Raz n-sima de x Ejercicios: Calcular los siguientes valores. Y verificar la respuesta 1. abs (-7) % valor absoluto de -7 Respuesta: ____________________________ 2. sign (10) % signo del nmero 10 Respuesta: ____________________________ 3. gcd (9,12) % mximo comn divisor entre 9 y 12 Respuesta: ____________________________ 4. lcm (10,25) % mnimo comn mltiplo Respuesta: ____________________________ 5. mod (-12,5) % mdulo de la divisin de -12 entre 5 Respuesta: ____________________________ 6. rem (12,5) % resto de la divisin de 12 entre 5 Respuesta: ____________________________ 7. rem(-12,5) %resto de la divisin de -12 entre 5 Respuesta: ____________________________

gcd(x) lcm(x) Log(x) Log2(x) Log10(x) mod (x,y)

10

Curso Bsico de Matlab

NMEROS COMPLEJOS Funcin abs (x) angle (x) complex (y,z) conj (x) imag(x) sing(x) isreal(x) Ejercicios Realizar las siguientes operacines con los los siguientes nmeros complejos A=2+3i; B=-6i; C=2-2j;D=45-12i Determinar para cada numero 1. 2. 3. 4. 5. El valor Del modulo. Angulo en grados. Conjugado El valor imaginario El valor real Descripcin Valor absoluto o modulo de un vector Angulo (radianes) de un nmero complejo Creacin de un nmero complejo Conjugado de un nmero complejo Valor de la parte imaginaria. Divide el numero complejo x por su magnitud, retorna el numero complejo con el angulo de fase y con el modulo igual a 1 Devuelve 1 si es real, o 0 si es complejo

11

Curso Bsico de Matlab

CAPITULO 3 ALGEBRA LINEAL.- MatLab, posee un software que ayuda al usuario a realizar clculos de algebra lineal tales como: inversa de una matriz, suma de matrices, determinante de una matriz, los cofactores de una matriz, la multiplicacin de vectores (producto punto, producto cruz), VECTORES Y MATRICES Para crear un vector introducimos los valores deseados separados por espacios (o comas) todo ello entre corchetes []. Si lo que queremos es crear una matriz lo hacemos de forma anloga pero separando las filas con puntos y comas (;). Generalmente usaremos letras maysculas cuando nombremos a las matrices y minsculas para vectores y escalares. Esto no es imprescindible y Matlab no lo exige, pero resulta til. Ejemplos: >> x = [5 7 -2 4 -6] % es un vector, los elementos los separamos con espacios x= 5 7 -2 4 -6 >> y = [2,1,3,7] % es otro vector, los elementos los separamos con comas y= 2137 >> z = [0 1 2,3 4,5] % es otro vector, da igual separar los elementos por comas o espacios z= 012345 >> A = [1 2 3; 4 5 6] % es una matriz con 2 filas y 3 columnas A= 123 456 DIRECCIONAMIENTO DE ELEMETOS DE VECTORES Y MATRICES Al momento de trabajar con vectores o matrices el usuario solo desea acceder a uno o varios elementos de un vector o una matriz. PARA LOS VECORES Para acceder a los elementos individuales de un vector lo haremos utilizando subndices, as x(n) sera el n-simo elemento del vector x. Si queremos acceder al ltimo podemos indicarlo usando endcomo subndice. Ejemplo: >> x = [5 7 -2 4 -6]; % declaracin del vector >>x (2) % segundo elemento del vector x ans =
12

Curso Bsico de Matlab

7 >>x (end) % ltimo elemento del vector x ans = -6 Para acceder a un bloque de elementos a la vez, se usa la notacin de dos puntos (:), as x (m:n) nos da todos los elementos desde el m-simo hasta el n-simo del vector x. Ejemplo: >>x (2:4) % devuelve desde el segundo al cuarto elemento del vector x ans = 7 -2 4 Si introducimos un nmero entre el primero y el segundo tambin separado por dos puntos (:) se mostrarn los elementos del primero al ltimo indicado, incrementados segn el nmero que aparecen el centro (o decrementados si el nmero es negativo). Ejemplo: >>x (1:2:5) % devuelve el primero, tercero y quinto elemento del vector x ans = 5 -2 -6 Otra forma de obtener un conjunto concreto de elementos del vector es indicando entre corchetes [] las posiciones de los elementos que queremos obtener poniendo parntesis fuera de los corchetes. Ejemplo: >>x ( [3 5 1] ) % devuelve el tercer, quinto y primer elemento del vector x ans = -2 -6 5 PARA LA MATRIZ Para acceder a los elementos de una matriz necesitamos dar dos valores, el primero indica la fila y el segundo la columna. Ejemplos: >> A = [1 2 3; 4 5 6]; >> A (2,1) % elemento de la matriz que est en la fila 2 y en la columna 1 ans = 4 Si queremos que escriba toda una fila usaremos los dos puntos para indicar que queremos todos los elementos. >> A (2,:) % escribe la segunda fila de la matriz
13

Curso Bsico de Matlab

ans = 456 Y similar si queremos que escriba toda una columna pero ahora situamos los dos puntos en el lugar de las filas para indicar que queremos todas las filas de esa columna. >> A (:,2) % escribe la segunda columna de la matriz ans = 2 5 Al igual que con los vectores podemos indicar que escriba una serie de filas o columnas, la manera de hacerlo sera muy parecido. >> A (2,2:3) % escribe de la segunda fila de la matriz, las columnas de la 2 a la 3 ans = 56 >> A (2, [3 1] ) % escribe de la segunda fila de la matriz, las columnas 3 y 1 ans = 64 >> A ( [2 1] , 2:3) % escribe de las filas 2 y 1 de la matriz, las columnas de la 2 a la 3 Ejercicio: Como la matriz A A= 123 456 Calcular 1. Valores de la fila 1 2. Valores de la columna 2 3. Valor de fila 1 columna 3 CONSTRUCCIN ABREVIADA DE ALGUNOS VECTORES A parte de definir un vector introduciendo cada uno de sus elementos, tambin podemos crearlo haciendo uso de las siguientes sentencias: (a:b) crea un vector que comienza en el valor a y acaba en el valor b aumentando de 1 en 1. (a:c:b) crea un vector que comienza en el valor a y acaba en el valor b en pasos de c en c. linspace (a,b,c) 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,c) genera un vector logartmicamente espaciado entre los valores 10^a y 10^b con c elementos.
14

Curso Bsico de Matlab

logspace (a,b) genera un vector logartmicamente espaciado entre los valores 10^a y 10^b con 50 elementos. ones(1,n) crea un vector con n elementos, y cada elemento igual a 1. zeros(1,n) crea u8n vector con nelementos, y con valor igual a cero. FUNCIONES PARA OPERAR CON VECTORES Funcin Descripcin Cros(x,y) Producto vectorial entre los vectores x e y Dot(x,y) Producto punto entre los vectores x e y Length(x) Devuelve el tamao del vector Ejercicios: Crear un vector que comienza en 1, aumenta de 1 en 1 y acaba en 7 Respuesta: Crear un vector que comenzando en 1, aumenta de 3 en 3 hasta el 10 Respuesta: Crear un vector que comenzando en 50, disminuye de 7 en 7 hasta el 1 Respuesta: Generar un vector desde el 2 al 6 con 3 elementos equidistantes (linspace) Respuesta: Generar un vector desde el 2 al 6 con 4 elementos equidistantes Respuesta: Generar un vector logartmicamente espaciado entre 10^0 y 10^2 con 4elementos Respuesta: Dados los vectores A=(3,4,5) y B = (1,-2,-5) Determinar a. Un vector perpendicular a los vectores A y B Respuesta: b. La proyeccin del vector A sobre el vector B Respuesta: CONSTRUCCIN DE ALGUNAS MATRICES 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): donde m son filas y n columnas

15

Curso Bsico de Matlab

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 cuadrada 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. 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. Ejercicios Matriz cuadrada 3 x 3 de ceros Respuesta: Matriz 2 x 5 de ceros Respuesta: Matriz de unos de 4 x 4 Respuesta: Matriz de valores aleatorios entre 0 y 1 segn la uniforme (0,1) Respuesta: Matriz de valores aleatorios segn la normal (0,1) Respuesta: Matriz identidad o unidad de 4 x 4 Respuesta: Matriz mgica 4 x 4 Respuesta:

16

Curso Bsico de Matlab

OPERACIONES BSICAS CON MATRICES Operacin + * .* / ./ ^ .^ Expresin A+B A-B A*B A.*B A/B A./B A^n A.^n A Descripcin Suma del mismo orden Resta de matrices Multiplicacin de matrices Multiplicacin de un escalar por la matriz Divisin de matrices por la derecha Divisin de cada elemento correspondiente de la matriz Potenciacin de la matriz Potenciacin de cada elemento de la matriz Matriz transpuesta

Otras Operaciones con las matrices Operacin Det(A) Diag(v) Diag(A) eig(A) inv(A) trace(A) tril(A) triu(A) Size(A) DETERMINANTE MatLab provee un soporte para la realizacin de clculos como es el caso del clculo del determinante de la matriz. Ejercicio: Se define una matriz A=rand(4) la cual el numero 4 me indica el orden de la matriz, Despus se con la funcin en MatLabdet(A), calcular el determinante de la matriz. A=rand(4) A= 0.6557 0.0357 0.8491 0.9340 0.6787 0.7577 0.7431 0.3922 0.6555 0.1712 0.7060 0.0318 0.2769 0.0462 0.0971 0.8235
17

Descripcin Determinante de la matriz Crea una matriz diagonal, con los valores del vector Extrae la diagonal de la matriz, como un vector columna Valores propios de la matriz Matriz inversa Traza de la matriz Matriz triangular inferior Matriz triangular superior Devuelve el numero de filas y columnas de la matriz, orden de la matriz.

Curso Bsico de Matlab

>>determinante=det(A) determinante = -0.1210 La respuesta es -0.12110 MATRIZ INVERSA Para calcular la matriz inversa se procede con la siguiente funcin inv(A) >> A=rand(4) A= 0.6557 0.0357 0.8491 0.9340 0.6787 0.7577 0.7431 0.3922 0.6555 0.1712 0.7060 0.0318 0.2769 0.0462 0.0971 0.8235

>>inver=inv(A) inver = -2.7122 -0.4442 2.5972 0.6306 -0.9312 1.6091 0.4668 0.1679 3.7778 -1.1294 -1.7721 -0.9981 3.3737 -0.2190 -3.0996 0.4577 El valor de la matriz inversa se almacena en la variable inver. ECUACIONES LINEALES Si queremos resolver un sistema de ecuaciones lineales, lo primero que debemos hacer es escribirlo en la forma matricial Ax = b. Por ejemplo consideremos el sistema de ecuaciones: 2x y z = 2 2x + 3y z = 6 x + 2y + 3z = 15 Este sistema se puede escribir en la forma Ax = b con:

18

Curso Bsico de Matlab

Para resolverlo en MATLAB, primero definimos la matriz A y el vector b, as: >> A=[2 -1 -1; 2 3 -1; 1 2 3] >> b=[2 6 15] (donde el smbolo indica que queremos la transpuesta de este vector, para que sea un vector columna) Ya habiendo definido la matriz A y el vector b, slo resta usar una de las rutinas de MATLAB. Segn nuestros conocimientos, si queremos encontrar un vector x tal que Ax = b, entonces ese vector debe ser x = A-1b. Esto puede ser hecho en MATLAB as. >> x = inv(A)*b Con lo cual obtenemos: x= 3.1429e+000 1.0000e+000 3.2857e+000 VALORES Y VECTORES PROPIOS En diversos campos de la ingeniera y las matemticas surge el problema de calcular los valores escalares y los vectores x 0 tales que para la matriz cuadrada A se cumple Ax = x Algunos de estos campos de aplicacin son: - Ecuaciones diferenciales - Estabilidad de sistemas lineales - Sistemas elctricos (componentes simtricas) - Polos y ceros de funciones transferencia - Diagonalizacin de matrices Podemos averiguar si el problema planteado por tiene solucin si se reescribe asi: (A )x = 0 El nmero se dice valor propio de A (matriz cuadrada) si y slo si det(A ) = 0 esta es la ecuacin caracterstica de la matriz A. Ejemplo: Calcular los valores y vectores propios para la matriz

Solucin: La ecuacin caracterstica queda:

% Introducimos la matriz del ejemplo A=[4 -5;2 -3]; % Calculamos sus valores propios: eig(A)
19

Curso Bsico de Matlab

ans = 2 -1 % Calculamos sus vectores propios unitarios: [V,D]=eig(A); V= 0.9285 0.7071 0.3714 0.7071 D= 20 0 -1 OTRAS MATRICES HIPERMATRICES Matlab permite trabajar con matrices de ms de dos dimensiones. Los elementos de una hipermatriz pueden ser nmeros, caracteres, estructuras y vectores o matrices de celdas. Las funciones que operan con matrices de ms de dos dimensiones son anlogas a las funciones vistas anteriormente aunque con algunas diferencias, por ejemplo, a la hora de definirlas: >> HM(:,:,1) = [1 2 3; 4 5 6]; % definimos la primera capa >> HM(:,:,2) = [7 8 9; 10 11 12] % definimos la segunda capa HM(:,:,1) = 123 456 HM(:,:,2) = 789 10 11 12 Nota: Estas hipermatrices son usadas al momento de leer un archivo de sonido estreo, debido a que este posee canal izquierdo y canal derecho, otro ejemplo seria al leer una imagen en jpeg, esta tiene tres matrices debido a que esta en RGB (Red,Green,Blue). REPRESENTACIN Y TRATAMIENTO DE POLINOMIOS. Matlab nos brinda una serie de funciones para trabajar con los polinomios. Aqu los polinomios se representan como vectores, por ejemplo, sea p(x) = 8x4 - 5x3 + x2 + 3x + 4 en Matlab debemos ingresar a p de la siguiente manera >> p = [ 8 - 5 1 3 4 ] p = 8 - 5 1 3 4

20

Curso Bsico de Matlab

Funciones bsicas:  roots(p): Obtiene races de un polinomio dado Calcula las races de un polinomio cuyos coeficientes son los elementos del vector p. Si p tiene N+1 componentes, el polinomio es p(1)*X^N + ... + p(N)*X + p(N+1). >> q = [ 1 - 5 6 ] q = 1 - 5 6 >>roots(q) ans = 3 2  poly(v):Construye un polinomio a partir de sus races Retorna un vector (polinomio) cuyos elementos son los coeficientes del polinomio cuyas races son los elementos de v. Puede apreciarse que rootsy polyson funciones inversas. >> v = roots(q) v = 3 2 >> q =poly(v) q = 1 - 5 6 O si desea verlo un poco ms claro note que: polyval(p, x):Evala un polinomio en un punto dado Si p tiene N+1 elementos, retorna el valor del polinomio al evaluarlo en x. Es decir y = p(1)* xN + p(2)*xN-1 + ... + p(N)*x + p(N+1) conv(p, q): Multiplicacin de polinomios convviene de convolucin, en el caso de los vectores convolucionar dos vectores es equivalente a multiplicarlos. El resultado es un vector de longitud = longitud(p)+longitud(q)-1 Veamos un ejemplo: Sean p(x) = 2x + 1 y q(x) = 3x + 4 >> p = [ 2 1 ] p = 2 1 >> q = [ 3 4 ] q = 3 4 >> r = conv(p, q) r = 6 11 4 Ejercicios 1. Dadas las siguientes matrices.

A= 2. a. b. c.

B= Determinar. Determinate de las matrices La matriz inversa de cada matriz. El producto A*B
21

Curso Bsico de Matlab

d. e. f. g.

El producto A.*B La diagonal de la matriz A y B El producto cruz de las matrices AxB El producto punto de las A.B

3. Resuelva el siguiente sistema de ecuaciones con MATLAB.:

4. Resolver la ecuacin x^4+2*x^2+3=0 5. Encontrar las races de la siguiente funcin P(x)=2*x^2+x 6. Multiplicar los anteriores polinomios

22

Curso Bsico de Matlab

CAPITULO 4 Programacin con MatLab. Bucles y bifurcaciones.Son aquellas sentencias en las cuales el usuario realiza un control del flujo del programa, para realizar ciertas operaciones. IFEs un operador lgico el cual permite comparar escalares (o de matrices elemento a elemento). Si el resultado de la comparacin es verdadero, devuelven un 1, en caso contrario devuelven un 0. Los operadores elementales son: <menor que >mayor que <= menor o igual >= mayor o igual == igual = no igual

&& Conjuncin || Disyunsin ~ negacin XorDisyunsion exclusiva. Nota: Es importante no dejar espacios entre los operadores formados por dos smbolos. Si los datos acomparar son matrices, la comparacin se hace elemento a elemento, devolviendo una matrizbinaria. Ejemplo: Programa que imprime si el dia actual es par o impar >> d=date; >>dia=str2num(d(1:2)); >>if(mod(dia,2)==1) disp('Diaimpar'); else disp('Dia par') end Para este ejercicio la funcin date captura la fecha, mientras da-mes-ao, as: (01-Sep-2010), como lo que nos devuelve es un vector de caracteres, debemos de sacar el da, entonces se debe de sacar solo los dos primeros elementos del vector. Y transformarlos a nmero. FOR. Se utiliza cuando se desea, realizar una repeticin de una operacin, esta operacin se ejecuta siempre cuando el valor a comparar sea verdadero. For valor inicial:pasosde:valor final <Sentenica a ser repetida> End Para la segunda condicin esta sentencia realizara una repeticin de cada elemento en pasos de uno. Forvalorinicial:valor final <Sentenica a ser repetida>
23

Curso Bsico de Matlab

End Ejemplo: for i=10:-1:1 kk(11-i)=i end


Es importante evitar en lo posible el uso de bucles en MatLab, ya que consumen mucho tiempo, pudindose en muchos casos realizar las mismas operaciones de una forma ms eficiente y compacta. WHILE Permite implementar bucles condicionales. Su sintaxis es: whileexpresion <haceralgo;> End

SWITCH Al igual que en C la secuencia de casos se interrumpe tan pronto se verifique el primero de ellos. Sintaxis: switch<expresin> case<condicin>, <sentencias> otherwise <sentencias> End Break Hace que se termine la ejecucin del bucle fory/o whilems interno de los que comprenden a dicha sentencia. CONTINUE Hace que se pase inmediatamente a la siguiente iteracin del bucle foro while, saltando todas las sentencias que hay entre el continuey el fin del bucle en la iteracin actual. ENTRADA Y SALIDA DE DATOS INPUT La funcin input permite imprimir un mensaje enla lnea de comandos de MatLab y recuperar comovalor de retorno un valor numrico o el resultadode una expresin tecleada por el usuario.
24

Curso Bsico de Matlab

Sintaxis: <identificador o variable> = input(<Texto deseado>'); <identificador> = input(<Texto deseado>, s); DISP La funcin disppermite imprimir en pantalla un mensaje de texto o el valor de una matriz, pero sin imprimir su nombre. Las cadenas de caracteres son un caso particular de vectores. disp('<Texto deseado>'); FICHEROS DE COMANDOS (SCRIPTS) Y FUNCIONES Los ficheros de comando y las funciones se denominan M-files (ficheros M), puesto que llevan el sufijo .m. Los ficheros de comando son archivos de texto que contienen una secuencia de comandos de matlab. Las funciones son M-files que devuelven valores. La mayor diferencia entre los ficheros de comando y las funciones radica en que las variables que se crean en las funciones son variables locales, mientras que las variables que se crean en los ficheros de comando son globales. Las cajas de herramientas de matlab son colecciones de M-files tiles. Si escribe sus propios ficheros de comandos y funciones le resultar ms fcil y ms eficiente utilizar matlab. Ejercicios 1. Realizar un programa en Matlab que resuelva un sistema de ecuaciones lineales para el caso de 3 ecuaciones con 3 incgnitas. Utilizar por una parte las facilidades de matlab (operador \) as como la programacin directa del mtodo de Cramer 2. Realizar un programa que lea 10 nmeros y determine cules y cuntos de ellos son mltiplos de 7. El programa, primero pedir los 10 nmeros, y a continuacin mostrar slo aquellos que son mltiplos de 7 as como cuntos son. 3. Realizar un programa que permita ingresar una ecuacin, muestre la solucin. 4. Dada la solucin, o las races, calcular la ecuacin. 5. Dada una cantidad en grados, determine el nmero de vueltas y el Angulo correspondiente en el crculotrigonomtrico. Grados = 390 Vueltas = 1 Angulo = 30 6. Dada una cantidad (vlida) de das, determine su equivalente en aos y meses. Asuma que todos los aos tienen 365 das y los meses 30.

25

Curso Bsico de Matlab

7. Dadas las pendientes M1 y M2 y los cortes con el eje Y B1 y B2 de dos rectas L1 y L2 (L1: Y = M1 *X +B1; L2: Y = M2 *X +B2); determine en punto de interseccin entre las dos rectas. Asumaque M1 != M2: 8. Dados n numeros cuente la cantidad de numeros positivos, negativos y cero. 9. Determine si un ao es o no bisiesto. Son bisiestos los aos que sean mltiplos de 4, salvo los que finalizan en 00, que slo lo sern cuando tambin sean mltiplos de 400. 10. Convertir un numero entero dado en base 10 a base binaria. 11. Para una matriz A, cuadrada, de 10 x 10 elementos, muestre los siguientesresultados: (a) Nmero de elementos distintos de cero. (b) La suma de los elementos situados encima de la diagonal principal, es decir, los elementos A(i; j)tales que i < j. (c) El producto de los elementos de la diagonal principal (A(1; 1) * A(2; 2) * *A(10; 10)).

26

Curso Bsico de Matlab

FUNCIONES GRFICAS 2D Y 3D ELEMENTALES 2D: plot() crea un grfico a partir de vectores con escalaslineales sobre ambos ejes, >>plot(X,Y,opcin) (opcin: permite elegir color y trazo de la curva) holdon:permite pintar ms grficos en la misma figura(se desactiva conhold off) gridactiva una cuadrcula en el dibujo.Escribiendo de nuevo gridse desactiva. 2D: loglog() escala logartmica en ambos ejes,semilogx(): escala lineal en el eje de ordenadas y logartmica en el eje deabscisas, semilogy(): escala lineal en abscisas y logartmica en ordenadas 2D: subplot(n,m,k) subdivide una ventana grfica se puede en m particiones horizontales y n verticales y k es la subdivisin que seactiva. 2D: polar(ngulo,r) para pintar en polares 2D: fill(x,y,opcin) dibuja una curva cerrada y la rellena del color que se indique en opcin 3D:plot3es anloga a su homloga bidimensional plot. plot3(X,Y,Z, opcin) ELECCIN DE LA ESCALA DE LOS EJES axis([x0 x1 y0 y1]) (2D), axis([x0 x1 y0 y1 z0 z1]) (3D) axis auto: devuelve la escala a la de defecto axis off: desactiva los etiquetados de los ejes desapareciendo los ejes, sus etiquetas y la malla, axis on: lo activa de nuevo axisequal: los mismos factores de escala para los dos ejes axissquare: cierra con un cuadrado la regin delimitada por los ejes de coordenadas actuales. Para elegir las etiquetas que aparecen en los ejes: set(gca, XTick,-pi:pi/2,pi) %gca:get current axis set(gca, XTicklabel,({-pi,-pi/2,0,pi/2,pi}) FUNCIONES PARA AADIR TTULOS A LA GRFICA title('ttulo') aade un ttulo al dibujo. Para incluir en el texto el valor de una variable numrica es preciso transformarla mediante : int2str(n) convierte el valor de la variable entera n en carcter num2str(x) convierte el valor de la variable real o compleja x en carcter. Ejemplo: title(num2str(x)) xlabel(texto) aade una etiqueta al eje de abscisas. Con xlabel offdesaparece. Lo mismo ylabel(texto) o zlabel(texto) text(x,y,'texto') introduce 'texto' en el lugar especificado por las coordenadas xe y. Si xe yson vectores, el texto se repite por cada par de elementos. gtext('texto') introduce texto con ayuda del ratn.

FUNCIONES DE MATLAB PARA GRFICOS 2D Y 3D


27

Curso Bsico de Matlab

Imprimir grficos: Print(botn File en ventana grfica) Guardar grficos: Save(botn File en ventana grfica): Se crea un fichero .fig que podr volver a editarse y modificarse Exportar grficos: Export(botn File en ventana grfica) figure(n): Llamar una nueva figura o referirnos a una figura ya hecha closeall borra todas las figuras, close(figure(n)) una en concreto REPRESENTACIN GRFICA DE SUPERFICIES Creacin de una malla a partir de vectores [X, Y]=meshgrid(x,y) Grfica de la malla construida sobre la superficie Z(X,Y): mesh(X,Y,Z), meshc(X,Y,Z) (dibuja ademslneas de nivel en el plano z=0) Grfica de la superficie Z(X,Y): surf(X,Y,Z), surfc(X,Y,Z) pcolor(Z) dibuja proyeccin con sombras de color sobre el plano (la gama de colores est en consonancia con las variaciones de Z) contour(X,Y,Z,v) y contour3(X,Y,Z,v) generan las lneas de nivel de una superficie para los valores dados en v. Para etiquetar las lneas, primero cs=contour(Z) (para saber los valores del contorno) y luego clabel(cs) odirectamenteclabel(cs,v) Diferentes formas de representar lospolgonos coloreados: shading flat: sombrea con color constante para cada polgono. shadinginterp: sombrea calculado por interpolacin de coloresentre los vrtices de cada polgono shadingfaceted: sombreado constante con lneas negras superpuestas (opcin por defecto) hidden off (desactiva la desaparicin de lneas escondidas), hiddenon(lo activa) MANIPULACIN DE GRFICOS view(azimut, elev), view([xd,yd,zd]) rotate(h,d,a) o rotate(h,d,a,o), h es el objeto, d es un vector que indica la direccin, a un ngulo y o el origen de rotacin En ventana grfica: View (camera toolbar) TRANSFORMACIN DE COORDENADAS [ang,rad]=cart2pol(x,y), de cartesianas a polares [ang,rad,z]=cart2pol(x,y,z), de cartesianas a cilindricas [x,y]=pol2cart(ang,rad), de polares a cartesianas [x,y,z]=pol2cart(ang,rad,z), de cilindricas a cartesianas [angx,angz,rad]=cart2sph(x,y,z), de cartesianas a esfericas [x,y,z]=aph2cart(angx,angz,rad), de esfericas a cartesianas

28