APUNTES DE MATLAB                     Ingenier´ T´cnica Industrial.                             ıa eEn estas breves notas,...
C´lculos/comandos encadenados:   a  >> x=sin(3),y=cos(10),z=tan(8)  Y si no caben en un rengl´n                           ...
>> 1/3  Los m´s usuales son:        a  >> format long  >> format short e  >> format long e  >> format short  >> format rat...
Inf Infinito, aparece si hacemos 1/0.      NaN Mensaje de error (Not a Number), por ejemplo 0/0.           ´      eps Epsil...
dadas, por ejemplo, que la primera valga 0, la ultima 20 y la distancia entre                                             ...
??? Error using ==¿ * Inner matrix dimensions must agree.    Tambi´n pueden efectuarse multiplicaciones, divisiones y pote...
Distinto (∼ es el operador de negaci´n)                                       o   >> logic2 = v ∼= v22.3   PolinomiosSe pu...
>> poly([i -i 1/2 pi])2.4    MatricesLas matrices se escriben como los vectores, pero separando las filas medianteun punto ...
>> mat(:,2)O a su segunda fila>> mat(2,:)Y tambi´n podemos acceder a la matriz como si fuera una columna. Por        eejemp...
formado por la diagonal de la matriz M>> diag(diag(M))Matriz tridiagonal 5x5 con 0 en la diagonal principal y 1 en la sub ...
dos formas distintas. ¿Existe una funci´n predefinida en matlab                                                  o         ...
(a) Defina un vector formado por la tercera columna de J.       (b) Defina un vector igual a la cuarta fila de J.       (c) D...
>> y=sin(x);   >> plot(x,y)   Tambi´n pueden dibujarse funciones con el comando fplot. Este comando          egenera los v...
3.1.2   Estilos de l´                    ıneas y color.  Por ejemplo,   >> plot(x,y, m+ )   >> plot(x,y, g* )   >> plot(x,...
3.1.3   Etiquetado de gr´ficas.                        aEjemplo:   >> x=linspace(-3,3,500);   >> y=exp(-x. 2);   >> z=2*exp...
>> subplot(2,2,2), plot(x,y2), title( y=x 2 )   >> subplot(2,2,3), plot(x,y3), title( y=x 3 )   >> subplot(2,2,4), plot(x,...
3.3    Curvas en impl´                     ıcitasEl comando ezplot dibuja curvas como plot en cartesianas y param´tricas  ...
>> title( H´lice )                 e   • Con el comando ezplot3      >> ezplot3( cos(t) , sin(t) , t ,[0,10*pi])   • Tambi...
>> colormap(pink);  Para girar la figura mediante el rat´n:                                     o  >> rotate3d;4.3   Imprim...
(e) Limpie la ventana de gr´ficos, o abra una nueva figura.                               a    (f) Represente y=y(x) con una...
6. Representar gr´ficamente las siguientes curvas en param´tricas                     a                                    ...
• Ejemplo        >> f = (x 2-7*x+8)/(x+2)5.2       C´lculo de derivada n-´sima de una funci´n.           a                ...
Definimos la funci´n simb´lica:                       o      o      >>f=1/(1+t 2)      Y calculamos la integral:      >> in...
• Ejemplo  Si queremos resolver la ecuaci´n anterior ax2 + bx + c = 0 respecto de                                o  la var...
>> fzero( sin(x)- x+1 , 0)      Observaci´n: En este caso necesitamos tener la ecuaci´n en la forma                  o    ...
5.6    Herramientas interactivas    • Sumas de Riemann      Nos permiten aproximar el valor de la integral definida de una ...
6.1    Ficheros de comando o tipo Scripts y ficheros tipo       Funtion  • Ficheros de comandos o tipo Scripts.      Son lo...
Function [lista de salidas]= nombre de la funci´n [lista de                                                     o      ent...
a) Condicionales: Las secuencias de ´rdenes se ejecutan bas´ndose en                                       o              ...
• Ejemplo:  >>a=n;  if a>5  b= a+5  else  b= a-1  end• Estructura if-else-if  Se usa cuando hay m´s de dos condiciones que...
elseif n==3      x=b. 3      else      x=b      end  • Orden switch      El mismo resultado del ejemplo anterior se podr´ ...
• Ejemplo:        for i= 1:10        a(i)= i+2;        end        Produce el vector a= (3,4,5,6,7,8,9,10,11,12)   • Ejerci...
de MATLAB y el resultado se devuelve como valor de retorno. Veamos dosejemplos de uso de esta funci´n:                    ...
Ejercicios  1. Calcular la suma de los n primeros t´rminos de la sucesi´n: 1, 2x, 3x2 ,                                   ...
10. Escriba un script tal que, dada una ecuaci´n cuadr´tica de la forma:                                               o  ...
Nos da el resto de dividir n entre i.2. Funci´n fix (n/a))        o  Parte entera del cociente n/a.                        ...
Upcoming SlideShare
Loading in …5
×

Matlabreyes

439 views

Published on

  • Be the first to comment

  • Be the first to like this

Matlabreyes

  1. 1. APUNTES DE MATLAB Ingenier´ T´cnica Industrial. ıa eEn estas breves notas, se pretende dar un primer paso en el aprendizaje deluso de MATLAB (Matrix Laboratory).Hemos dividido este trabajo en las siguientes secciones: • Comandos b´sicos. Variables a • Vectores. polinomios y matrices. • Gr´ficas 2D. a • Gr´ficas 3D. a • C´lculo simb´lico. a o • Programaci´n con Matlab. o1 Comandos b´sicos. Variables. aHagamos algunas consideraciones generales: • Para salir del programa: File Exit Matlab ( o escribiendo >> exit) • Las ´rdenes se escriben a continuaci´n del prompt >> o o Ejemplo: >> 2 3 Tambi´n se puede asignar el valor a una variable: e >> x=5+3 2 Se pueden utilizar las funciones matem´ticas habituales. a >> sqrt(2) 1
  2. 2. C´lculos/comandos encadenados: a >> x=sin(3),y=cos(10),z=tan(8) Y si no caben en un rengl´n o >> x=sin(10),... z=3*6• MATLAB distingue entre may´sculas y min´sculas. u u Si se a˜ade un punto y coma (;) al final de la instrucci´n, la m´quina n o a no muestra la respuesta... pero no por ello deja de realizarse el c´lculo. a Los comentarios deben ir precedidos por % o, lo que es lo mismo, MATLAB ignora todo lo que vaya precedido por el s´ ımbolo %.• Operadores: +, −, ∗, /, . Las operaciones se eval´an por orden de prioridad: primero las poten- u cias, despu´s las multiplicaciones y divisiones y, finalmente, las sumas e y restas. Las operaciones de igual prioridad se eval´an de izquierda a u derecha.• La ayuda de MATLAB es bastante util; para acceder a la misma basta ´ teclear help. Es recomendable usarlo para obtener una informaci´no m´s precisa sobre la sintaxis y diversas posibilidades de uso de los a comandos. >> helpwin >> help det >> lookfor rota• Formatos n´mericos: El usuario puede controlar el n´mero de decimales u u con que aparece en pantalla el valor de las variables, sin olvidar que ello no est´ relacionado con la precisi´n con la que se hacen los c´lculos, a o a sino con el aspecto con que ´stos se muestran. e Para cambiar la presentaci´n del valor de la variable se usa el comando o format o bi´n en File Preferences Numeric Format e >> 1/3 >> format long 2
  3. 3. >> 1/3 Los m´s usuales son: a >> format long >> format short e >> format long e >> format short >> format rat >> format + La instrucci´n format vuelve al formato est´ndar que es el de 4 cifras o a decimales. La representaci´n interna del n´mero siempre es la misma. o u• Variables: Para conocer el valor de una variable, basta teclear su nombre. Para conocer las variables que se han usado hasta el momento se utiliza el comando who: >> who o, si se quiere m´s informaci´n: a o >> whos Para deshacerse de una variable >> clear y Los c´lculos que no se asignan a una variable en concreto se asignan a a la variable de respuesta por defecto que es ans (del ingl´s, answer). e Sin embargo, si el c´lculo se asigna a una variable, el resultado queda a guardado en ella. MATLAB tiene definida variables con valor predeterminado. Por ejemplo: pi El valor del n´mero π. u 3
  4. 4. Inf Infinito, aparece si hacemos 1/0. NaN Mensaje de error (Not a Number), por ejemplo 0/0. ´ eps Epsilon de la m´quina (obs´rvese que MATLAB trabaja en doble a e precisi´n). o >>eps ans = 2.2204e-016 pero... ´stos se pierden si se les asignan otro valor distinto. e >> eps=7 eps = 7 La unidad imaginaria se representa en MATLAB como i o j.2 Vectores, polinomios y matrices2.1 VectoresPara definir un vector fila, basta introducir sus coordenadas entre corchetes:>> v=[1 2 3]>> w=[4 5 6];El operador es el de trasposici´n para matrices reales y conjugaci´n y o otrasposici´n para matrices complejas. Nos permite definir vectores columnas: o>> w(La comilla es la que, en un teclado est´ndar, se encuentra en la tecla del asigno de interrogaci´n.) oSi queremos declarar un vector de coordenadas equiespaciadas entre dos 4
  5. 5. dadas, por ejemplo, que la primera valga 0, la ultima 20 y la distancia entre ´coordenadas sea 2, basta poner:>> vect1=0:2:20vect1 = 0 2 4 6 8 10 12 14 16 18 20Equivalentemente, si lo que conocemos del vector es que la primera coor-denada vale 0, la ultima 20 y que tiene 11 en total, escribiremos: ´>> vect2=linspace(0,20,11)vect2 = 0 2 4 6 8 10 12 14 16 18 20A las coordenadas de un vector se accede sin m´s que escribir el nombre adel vector y, entre par´ntesis, su ´ e ındice:>> vect2(3)y se pueden extraer subvectores, por ejemplo:>> vect2(2:5)o,>> vect1(:)Las funciones matem´ticas elementales est´n definidas de forma que se pueden a aaplicar sobre vectores. El resultado es el vector formado por la aplicaci´n de ola funci´n a cada elemento del vector. As´ o ı:>> log(v)Vector definido como el producto de un vector por un escalar>> p=(0:0.1:1)*pi>> x=sin(p)Las operaciones habituales entre vectores (suma, resta y producto escalarde vectores; suma, resta, producto y potencia de matrices) se representancon los operadores habituales:>> v,w>> z=v*w’>> Z=w’*v>> v*w 5
  6. 6. ??? Error using ==¿ * Inner matrix dimensions must agree. Tambi´n pueden efectuarse multiplicaciones, divisiones y potencias de evectores, entendi´ndolas como elemento a elemento (como, de hecho, se re- ealizan la suma y la resta). El operador utilizado para ellas es el habitualprecedido por un punto (.); es decir:>> v.*w>> w./v>> v. 2Finalmente, tambi´n pueden calcularse longitud, producto escalar, producto evectorial, etc:>> length(v)>> dot(u,v)>> cross(u,v)2.2 Variables l´gicas oTambi´n existen variables l´gicas que toman los valores 0 (falso) o 1 (ver- e odadero). Por ejemplo: Vector l´gico cuyas coordenadas valen 1 si la coordenada correspondiente ode v es mayor o igual que 2 y 0 si no lo es >> abs(v) >= 2 Vector formado por la coordenadas de v que verifican la desigualdad >> vector = v(abs(v) >= 2) Asignaci´n de un valor l´gico (el doble signo igual es el igual l´gico) o o o >> v2=[3 2 1] >> logica=v==v2 6
  7. 7. Distinto (∼ es el operador de negaci´n) o >> logic2 = v ∼= v22.3 PolinomiosSe puede trabajar con polinomios: basta tener en cuenta que un polinomiono es m´s que un vector. El orden de los coeficientes es de mayor a menor agrado, por ejemplo: Polinomio x4 + 2x2 + 3>> p=[1 0 2 0 3] Polinomio 2x2 + x>> q=[2 1 0] MATLAB tiene funciones espec´ ıficas para polinomios como: Evaluaci´n del polinomio x4 + 2x2 + 3 en x = −1 o >>polyval(p,-1) Producto de los polinomios p y q >>pro=conv(p,q) Cociente entre pro y p; obviamente el resultado es q >> deconv(pro,p) Ra´ del polinomio pro ıces >> roots(pro) Polinomio m´nico (aquel cuyo coeficiente principal es 1) que tiene por ora´ a los n´meros i, −i, 0.5 y π ıces u 7
  8. 8. >> poly([i -i 1/2 pi])2.4 MatricesLas matrices se escriben como los vectores, pero separando las filas medianteun punto y coma; as´ una matriz 3x3: ı>> M=[1 2 3;4 5 6;7 8 9]Su traspuesta (en el caso de matrices reales), su traspuesta y conjugada (en el caso de matrices complejas) es:>> N=MPodemos realizar las operaciones usuales, suma, diferencia, producto, po-tencia, rango, determinante, inversa>> S=M+N, M*N>> S 3>> rank(M),inv(M)>> det(N)Para visualizar gr´ficamente la matriz a>> spy(M)Podemos construir matrices con otros vectores ya definidos>> mat=[v;w;0 0 1]A los elementos de una matriz se accede sin m´s que escribir el nombre ade la matriz y, entre par´ntesis, los respectivos ´ e ındices:Elemento en la primera fila y tercera columna de la matriz mat>> mat(1,3)Tambi´n se puede acceder a un fila o columna completas, por ejemplo a ela segunda columna de mat 8
  9. 9. >> mat(:,2)O a su segunda fila>> mat(2,:)Y tambi´n podemos acceder a la matriz como si fuera una columna. Por eejemplo: los elementos segundo a s´ptimo de la matriz como columna son e>> M(2:7)O podemos acceder a cualquiera de sus submatrices. Por ejemplo el comandoque obtiene la submatriz formada por los elementos que est´n en ”todas”las afilas que hay entre la segunda y la tercera y en las columnas primera y tercerade la matriz mat es>> mat(2:3,[1 3])Existen algunas matrices definidas previamente; por ejemplo, la matriz iden-tidad,>> eye(5)O la matriz de ceros>> zeros(3)O la matriz cuyos elementos valen todos 1:>> ones(4)Se puede conocer el tama˜o de una matriz n>> size(mat)Existen comandos que permiten crear de forma sencilla matrices. Por ejem-plo:Matriz diagonal cuya diagonal es el vector v>> diag(v)Matriz diagonal con la diagonal de M. La sentencia diag(M) da el vector 9
  10. 10. formado por la diagonal de la matriz M>> diag(diag(M))Matriz tridiagonal 5x5 con 0 en la diagonal principal y 1 en la sub y su-perdiagonal>> diag(ones(1,4),1)+diag(ones(1,4),-1) Indicaci´n: Ver ficheros .m en 6.1 oEjerciciosVectores 1. (a) Definir un vector fila de 10 elementos (valores reales), tal que la diferencia entre dos elementos consecutivos sea igual a 0.5. Nom- bre a a ese vector. (b) Defina un vector columnna b de longitud 10, y cuyos elementos sean los elementos de a elevados al cuadrado. (c) Halle el producto escalar a.b. 2. (a) Crear un vector cuyo primer elemento sea 50, el ultimo 480 y tal ´ que la diferencia entre dos elementos cualesquiera sea 3. (b) Hallar el n´mero de elementos del vector definido en el apartado u anterior. 3. Sean los vectores filas u y v definidos de la siguiente forma: u=[10,-11,12], w=[2,1,3]. (a) Halle el producto escalar entre u y w, y el producto elemento a elemento entre u y w. ¿C´al es la diferencia entre ambos produc- u tos? n 2 (b) La norma euclideana de un vector v es ||v|| = i=1 |vi | , donde v = (v1 , v2 , ..., vn ). Calcule la norma del vector u definido en (a) de 10
  11. 11. dos formas distintas. ¿Existe una funci´n predefinida en matlab o para determinar la norma de un vector? ¿C´mo podr´ determi- o ıa narlo? (c) El ´ngulo θ formado entre dos vectores x e y se define a partir de: a x.y cos θ = , ||x||||y|| donde x.y es el producto escalar entre ambos vectores. Aplique esta f´rmula para determinar el ´ngulo entre u y w. o a Exprese el ´ngulo en grados. aMatrices 1. Defina una matriz A (3x5) tal que la primera fila est´ formada por los e enteros consecutivos entre 1 y 5, la segunda fila por los enteros entre 6 y 10, y la tercera por los enteros entre 11 y 19 con incremento 2. (a) Halle la matriz transpuesta de A. (b) Defina una matriz cuyos elementos sean unos, y de las mismas dimensiones que A. (c) Compruebe si la siguiente matriz B es sim´trica (una matriz es e sim´trica cuando es igual a su transpuesta). e   2 −1 0 B =  −1 2 −1  0 −1 2 (d) Halle el producto matricial entre B y A. 2. Sea la matriz   1 2 3 4    5 6 7 8  J =   9 10 11 12  20 0 5 4 11
  12. 12. (a) Defina un vector formado por la tercera columna de J. (b) Defina un vector igual a la cuarta fila de J. (c) Defina una matriz (4x2) formada por la segunda y tercera colum- nas de J. (d) Defina una matriz (2x2) formada por los elementos de la segunda y tercera filas y la segunda y tercera columnas de J.3 Graficas 2D.MATLAB tiene un gran potencial de herramientas gr´ficas. a3.1 Gr´ficas de funciones y = f (x) aPara representar gr´ficamente una funci´n, por ejemplo y = sen (x), se siguen a olos siguientes pasos: En primer lugar generamos los valores: >> x=linspace(0,2*pi,10); Sustituimos en la funci´n: o >> y=sin(x); Y dibujamos la gr´fica con el comando plot: a >> plot(x,y) Por defecto une los puntos (x(i),y(i)) mediante una poligonal. Con pocospuntos la gr´fica tiene un aspecto demasiado lineal a trozos. Para evitarlo, abasta tomar m´s puntos. a >> x=linspace(0,2*pi,100); 12
  13. 13. >> y=sin(x); >> plot(x,y) Tambi´n pueden dibujarse funciones con el comando fplot. Este comando egenera los valores de la variable independiente autom´ticamente. a Dibuja la funci´n seno en el intervalo [0,2*pi] o >> fplot( sin(x) ,[0 2*pi])3.1.1 Superposici´n de gr´ficas o aEl comando hold on mantiene en la ventana gr´fica los dibujos anteriores a Dibuja sobre la gr´fica anterior la funci´n cos(x). a o >> hold on >> fplot( cos(x) ,[0 2*pi]) El comando hold off desactiva la superposici´n de gr´ficos. o a >> hold off Dibuja la funci´n x2 sen (1/x): o >> fplot( x 2*sin(1/x) ,[-0.05 0.05]) Podemos tambi´n dibujar dos gr´ficas en la misma ventana creando dos e afunciones y dibujandolas. >> x=linspace(0,2*pi,100); >> y=sin(x); >> z=cos(x); >> plot(x,y,x,z) 13
  14. 14. 3.1.2 Estilos de l´ ıneas y color. Por ejemplo, >> plot(x,y, m+ ) >> plot(x,y, g* ) >> plot(x,y, yd ,x,z, r– ) Para ver todos los estilos, teclea >> help plot Para poner una malla: >> grid on Para desactivarla >> grid off Para modificar los ejes que aparecen por defecto, usamos el comandoaxis, con el siguiente formato: >> axis([xmin xmax ymin ymax]). Por ejemplo, >> axis([-1 1 -1 1]) Para que vuelvan a la situaci´n inicial: o >> axis auto Para ”cuadrar” los ejes: >> axis square 14
  15. 15. 3.1.3 Etiquetado de gr´ficas. aEjemplo: >> x=linspace(-3,3,500); >> y=exp(-x. 2); >> z=2*exp(-x. 2); >> plot(x,y, - ,x,z, – ) % dibujamos >> title ( Campanas de Gauss )% t´ ıtulo >> xlabel ( Eje de Abscisas ) % eje horizontal >> ylabel ( Eje de Ordenadas ) % eje vertical y por ultimo a˜adimos un texto explicativo de cada uno de los gr´ficos ´ n acon el comando legend >> legend ( exp(-x 2) , 2*exp(-x 2) ) Para insertar texto sobre un punto cualquiera de la ventana, (En lasnuevas versiones esto se puede hacer directamente sobre la ventana): >> gtext( texto )3.1.4 Comando subplotEl comando subplot sirve para dibujar varios gr´ficos en una misma ventana. a Ejemplo: >> x=linspace(-2,2,100); >> y1=x;y2=x. 2; y3=x. 3; y4=x. 4; >> subplot(2,2,1), plot(x,y1), title( y=x ) 15
  16. 16. >> subplot(2,2,2), plot(x,y2), title( y=x 2 ) >> subplot(2,2,3), plot(x,y3), title( y=x 3 ) >> subplot(2,2,4), plot(x,y4), title( y=x 4 )3.2 Curvas en param´tricas eDibujar la curva dada por: x(t) = (1/t) cos(t) ; t ∈ [1, 100] y(t) = (1/t) sen (t) >>t=linspace(1,100,10000); >>x=(1./t).*cos(t); y=(1./t).*sin(t); >> plot(x,y) Podemos dibujar las curvas y sus vectores tangentes utilizando el comandoquiver >> t=linspace(0,2*pi,1000); >> x=3*cos(t); y=2*sin(t); >> plot(x,y), hold on >> t=linspace(0,2*pi,30); >> x=3*cos(t);y=2*sin(t); >> dx=-3*sin(t);dy=2*cos(t); >> quiver(x,y,dx,dy) 16
  17. 17. 3.3 Curvas en impl´ ıcitasEl comando ezplot dibuja curvas como plot en cartesianas y param´tricas ede una manera m´s sencilla ya que genera autom´ticamente los valores de la a avariable independiente. Tambi´n se utiliza para dibujar curvas en impl´ e ıcitas.Utiliza el intervalo [−2π, 2π] por defecto. >> ezplot( cos(x) ) Tomando otro intervalo en la variable independiente: >> ezplot( sin(1/x) , [ 0 , pi ]) Podemos tomar un intervalo en la variable independiente y otro en ladependiente: >> ezplot( sin(1/x) , [ 0, pi, -1.2, 1.2 ]) Para dibujar curvas en forma impl´ıcita se utiliza el comando ezplot conel siguiente formato ezplot( g(x,y) ) donde la curva es g(x, y) = 0, y sepueden especificar los intervalos de variaci´n de x e y. Por ejemplo: o >> ezplot( x 2+y 2-1 , [-1,1,-1,1])4 Graficas 3D4.1 Curvas en el espacioDibujar la curva r(t) = (cos(t), sen (t), t) con t ∈ [0, 10π] • Con el comando plot3 >> t=linspace(0,10*pi,5000); >> plot3(cos(t),sin(t),t),grid on >> xlabel( Eje x ), ylabel( Eje y ), zlabel( Eje z ) 17
  18. 18. >> title( H´lice ) e • Con el comando ezplot3 >> ezplot3( cos(t) , sin(t) , t ,[0,10*pi]) • Tambi´n existe el comando quiver3 que funciona de manera an´loga e a al correspondiente en 2D.4.2 Gr´ficas de funciones z = f (x, y) aPodemos tambi´n dibujar superficies. Por ejemplo, para dibujar la superficie e −x2 −y 2z=e seguimos los siguientes pasos: • Primero generamos un mallado de la regi´n de XY sobre la que vamos o a dibujar >> [x,y]=meshgrid(-2:0.1:2) Tambi´n podemos generar mallados no cuadrados, por ejemplo: e >> [x,y]=meshgrid(-2:0.1:2,-1:0.1:3); • Sustituimos en la funci´n o >> z=exp(-x. 2-y. 2); • Dibujamos la funci´n con cualquiera de los tres comandos siguientes o plot3, mesh, surfl. >> plot3(x,y,z) >> mesh(x,y,z) >> surf(x,y,z) Los comandos siguientes sirven para modificar el dibujo obtenido. Para cambiar el color: >> shading interp; 18
  19. 19. >> colormap(pink); Para girar la figura mediante el rat´n: o >> rotate3d;4.3 Imprimir, exportar, guardar gr´ficos a • Podemos imprimir desde la ventana gr´fica: File Print o File Print a Preview • Podemos exportar gr´fico a un procesador de textos con Edit Copy a Figure y se pega en el procesador de textos. Tambi´n podemos exportar e con File Export • Podemos guardar gr´ficos como un fichero gr´fico con File Save As a a • Otra posibilidad es crear un fichero-M (Script) con los comandos que generan el gr´fico. aEjerciciosGr´ficos a 1. Sea la funci´n y = sen (3πx), definida en 0 ≤ x ≤ 1. o (a) Eval´e la funci´n en N puntos igualmente espaciados en el rango u o [0, 1], y represente y = y(x) uniendo los puntos mediante segmen- tos de recta: tomando N = 10 y N = 100 (b) Dibuje las gr´ficas anteriores en dos figuras diferentes, para verlas a simult´neamente y compararlas (utilice el comando figure). a (c) Ponga t´ ıtulo y nombre a los ejes de la segunda gr´fica. a (d) Superponga luego una malla. 19
  20. 20. (e) Limpie la ventana de gr´ficos, o abra una nueva figura. a (f) Represente y=y(x) con una l´ ınea de color azul. (g) Represente y=y(x) con c´ ırculos de color rojo.2. Dibuje la gr´fica de las funciones: y = cos x e y = x, para 0 ≤ x ≤ 2, a en la misma ventana, con 100 puntos. (a) Aplique el comando zoom para determinar en forma aproximada el punto de intersecci´n. o (b) Limpie la ventana de gr´ficos. a (c) Represente y = sen (3πx) con 0 ≤ x ≤ 1. (d) Var´ el rango de los ejes x e y mediante el comando axis, tal que ıe el rango en el eje x sea entre –0.5 y 1.5, y el rango en y sea entre −1.2 y 1.2.3. Mediante el comando subplot cree una figura con cuatro gr´ficas,a tal que en la primera gr´fica (contando de arriba hacia abajo, y de a izquierda a derecha) se represente la funci´n y = sen (3πx), en la o segunda y = cos(3πx), en la tercera y = sen (6πx) y en la cuarta y = cos(6πx),con 0 ≤ x ≤ 1. Nombre a los ejes en cada gr´fica. a4. Represente la gr´fica de las siguientes funciones, para 0 ≤ x ≤ 10, en a una misma figura pero en diferentes subventanas (mediante el comando subplot). Experimente con los comandos axis, grid y hold. sen x 1 x2 +1 (10−x)1/3 y= x , u= (x−1)2 + x, v = x2 −4 , w= 4−x2 )1/2 .5. Sean las funciones g(x) = sen (2πx) y h(x) = cos(2πx), con 0 ≤ x ≤ 1. Represente ambas funciones en la misma ventana, cada una con 100 puntos como m´ ınimo, y tal que la curva (x, g(x)) est´ representada por e un trazo continuo de color rojo, y la curva (x, h(x)) por una l´ınea pun- teada de color verde. Agregue un texto (mediante el comando legend) dentro de la ventana de gr´ficos, indicando cual trazo representa cada a curva Ponga t´ıtulo a la gr´fica y nombre a los ejes. a 20
  21. 21. 6. Representar gr´ficamente las siguientes curvas en param´tricas a e (a) x = 3 sen (2t) cos(t), y = 3 sen (2t) sen (t). Donde t varia entre −π y π. (b) x = t sen (t), y = cos(t), z = t. Donde el par´metro vale 0 ≤ t ≤ a 20. 7. Representar las siguientes superficies utilizando los distintos comandos. 2 +y 2 (a) f (x, y) = ex sen ( x2 + y 2 ) (b) f (x, y) = para −8 ≤ x ≤ 8, −8 ≤ y ≤ 8. x2 + y 2 Indicaci´n Para que no haya problemas de divisi´n por cero con- o o siderar la funci´n R = x2 + y 2 + eps y construir la funci´n como o o z = sin(R)/R.5 C´lculo Simb´lico. a o5.1 Expresiones Simb´licas. oSon cadenas de caracteres representando n´meros, funciones, operadores y uvariables. Las variables no requieren valores predefinidos. • Definici´n de variable simb´lica El comando syms define simb´licamente o o o variables y tiene el siguiente formato syms nombre variable • Ejemplo >>syms x • Definici´n de funci´n simb´lica o o o Despu´s de tener definida la variable independiente como variable simb´lica e o es posible definir funciones simb´licas de la siguiente forma o nombre funci´n = expresi´n matem´tica o o a 21
  22. 22. • Ejemplo >> f = (x 2-7*x+8)/(x+2)5.2 C´lculo de derivada n-´sima de una funci´n. a e oEl comando diff permite hallar la derivada n-´sima de una funci´n simb´lica e o ocon el siguiente formato diff(nombre funcion, n). Si queremos hallar la deriva-da de la funci´n basta escribir el comando como diff(nombre funcion) o Ejemplo Calculemos la derivada tercera de la funci´n f definida anteriormente y ola pondremos en forma bonita con el comando pretty. >>d3=diff(f,3) >>pretty(d3)5.3 C´lculo de integrales. a5.3.1 C´lculo de integrales indefinidas a>>int (nombre funci´n) o5.3.2 C´lculo de integrales definidas a>> int(nombref uncion, variable, liminf erior, limsuperior) • Ejemplo sin(x) 1 Calculemos 0 1+t2 dt Definimos las variables simb´licas x y t: o >> syms t x 22
  23. 23. Definimos la funci´n simb´lica: o o >>f=1/(1+t 2) Y calculamos la integral: >> int(f, t, 0, sin(x)) • Ejercicio 1 √ Calcular 0 1 − x2 dx • Resultado de las integrales definidas en forma num´rica e >> numeric(ans) Con m´s decimales: a >>vpa(ans, no decimales)5.4 Ecuaciones Algebraicas.Nos planteamos la resoluci´n de ecuaciones o sitemas de ecuaciones, tanto ocon ra´ reales como complejas, para lo que se utiliza el comando ”solve”. ıces • Resoluci´n de una ecuaci´n o o >>solve( ecuaci´n ), donde por ecuaci´n se entiende la expresi´n al- o o o gebraica de la misma. • Ejemplo Si queremos resolver una ecuaci´n de segundo grado ax2 + o + bx + c = 0: >>solve( a ∗ x 2+b ∗ x + c = 0 ) • Resoluci´n de una ecuaci´n respecto a otra variable o o >>solve( ecuaci´n , nombre variable ) o 23
  24. 24. • Ejemplo Si queremos resolver la ecuaci´n anterior ax2 + bx + c = 0 respecto de o la variable b: >> solve( a ∗ x 2+b*x+c=0 , b )• Resoluci´n de un sistema de ecuaciones o >>[var 1,var 2]= solve( ecuaci´n 1 , ecuaci´n 2 ) o o• Ejemplo x−y =0 Resolver el sistema: x+y =1• Observaci´n: o Si no se puede encontrar una soluci´n en forma algebraica (ecuaci´n o o no algebraica), el comando solve devuelve una aproximaci´n num´rica o e de la soluci´n. Ocurre por ejemplo al intentar resolver sin(x) = x − 1: o >>solve ( sin(x) = x-1 ) Entonces, en estos casos es mejor utilizar el comando f zero que utiliza el m´todo de bisecci´n para calcular las ra´ e o ıces, bien dentro de un intervalo, o bien a partir de un valor real.• Comando fzero: >> fzero( ecuaci´n , [a,b]): busca una ra´ en el intervalo [a, b], y o ız para ello es necesario que la funci´n tome valores de distinto signo en o los extremos del intervalo, ya que su b´squeda se basa en el teorema u de Bolzano. Ejemplo >> fzero( sin(x)- x+1 , [0,pi]) >>fzero( ecuaci´n , a)): busca una r´´ de la ecuaci´n a partir del o aız o valor real a. Ejemplo 24
  25. 25. >> fzero( sin(x)- x+1 , 0) Observaci´n: En este caso necesitamos tener la ecuaci´n en la forma o o f (x) = 0, y al colocarla en el comando fzero s´lo ponemos f (x). o5.5 Ecuaciones Diferenciales Ordinarias.Para resolver ecuaciones de este tipo, usaremos el comando dsolve: >>var resultado =dsolve( ecuaci´n diferencial , var ) o • Ejemplo dy Resolver la ecuaci´n diferencial o dx = 1 + y2. >>y= dsolve( Dy= 1+y 2 , x ) Resuelve la ecuaci´n y el resultado lo mete en la variable y. o • Resoluci´n de un problema con condiciones iniciales o >> variable resultado =dsolve( ecuaci´n diferencial , condici´n o o o condiciones iniciales separadas por comas , var ) • Ejemplo dy dx = 1 + y2 Resolver y(0) = 1 >>y= dsolve( Dy= 1+y 2 , y(0)=1 , x ) • Ejercicio   d2 x  dt2 − 2 dx − 3x = 0 dt Resolver x(0) = 0   x (0) = 1 25
  26. 26. 5.6 Herramientas interactivas • Sumas de Riemann Nos permiten aproximar el valor de la integral definida de una funci´n f o en el intervalo [0,1]. Si queremos hacerla para otro intervalo, habr´ que ıa b 1 hacer antes un cambio de variable que convierta a f (x)dx en 0 g(t)dt y aplicar luego las sumas de Riemann. >> rsums(f ) • Ejemplo 2 Evaluemos la integral de f (x) = 10xe−5x y la comparamos luego con la aproximaci´n de las sumas de Riemann o >>f= ’10*x*exp(-5*x 2)’ Evaluamos el valor de la integral definida de f en [0,1] con 6 decimales: >>vpa(int(f,0,1),6) Activamos las sumas de Riemann: >> rsums(f)6 Programaci´n en Matlab. o • Los tipos de programas que podemos realizar en Matlab son dos: tipo Scripts (ficheros de comandos) y tipo Function (en el que se definen fun- ciones matem´ticas de una o varias variables). Ambos son ficheros de a texto con extensi´n .m, que contienen instrucciones propias de Matlab. o Como archivos de texto, se pueden crear con cualquier procesador. Re- comendamos no obstante, utilizar el editor que trae incorporado Mat- lab, que se invoca con la siguiente instrucci´n: o >> edit nombre del archivo; Para conocer los archivos existentes de este tipo podemos teclear what. 26
  27. 27. 6.1 Ficheros de comando o tipo Scripts y ficheros tipo Funtion • Ficheros de comandos o tipo Scripts. Son los m´s simples, no tienen argumentos de entrada ni de salida. Son a utiles para automatizar bloques de instrucciones y c´lculos que deben ´ a efectuarse repetidamente. Operan sobre datos existentes en el espacio de trabajo. Adem´s, cualquier variable creada por uno de estos archivos a permanece en el espacio de trabajo una vez que finaliza su lectura. • Observaci´n. o Matlab trabaja con memoria din´mica, por lo que no es necesario a declarar las variables que se van a usar. Por esta misma raz´n, habr´ o a que tener especial cuidado y cerciorarse de que entre las variables del espacio de trabajo no haya ninguna que se llame igual que las de nue- stro programa (proveniente, por ejemplo, de un programa previamente ejecutado en la misma sesi´n), porque ´sto podr´ provocar conflictos. o e ıa A menudo, es conveniente reservar memoria para las variables (por ejemplo, si se van a utilizar matrices nuy grandes); para ello, basta con asignarles cualquier valor. Del mismo modo, si se est´ usando mucha a memoria, puede ser conveniente liberar parte de ella (clear) variables que no se vayan a usar m´s.a • Ficheros tipo Function. Aceptan argumentos de entrada y salida. Sirven para extender el lenguaje de Matlab usando nuestras propias funciones. Tienen su propio espacio de trabajo reservado, donde puede definirse variables propias locales que no afectan al espacio de trabajo general. Los pasos principales para definir una funci´n en Matlab son: o 1) Decidir un nombre para la funci´n, que no sea igual al de o alguna funci´n predefinida en Matlab. o 2) La primera l´ ınea del archivo debe tener el formato: 27
  28. 28. Function [lista de salidas]= nombre de la funci´n [lista de o entradas] 3) Documentar la funci´n: describir brevemente el prop´sito o o de la funci´n y c´mo puede ser usada. Estas l´ o o ıneas deben estar prece- didas del s´ ımbolo %, pues son l´ ıneas de comentarios y debe indicarse al programa que las ignore. 4) Incluir el c´digo que defina la funci´n. o o • Ejemplo Vamos a realizar un peque˜o programa para calcular el ´rea de un n a tri´ngulo, conocidas las longitudes de sus lados. a El nombre de la funci´n que defina puede ser area, y el archivo: area.m. o Siguiendo los paso anteriores ser´ ıa: function [A]= area(a,b,c) %Calcula el ´rea de un tri´ngulo de lados de longitud a, b y c a a %Entradas: a,b,c: longitudes de los lados % Salidas: A: ´rea del tri´ngulo a a % Uso: area=area(a,b,c) s = (a + b + c)/2; A = sqrt(s ∗ (s − a) ∗ (s − b) ∗ (s − c)); La funci´n ´rea puede invocarse desde la ventana de comandos de Mat- o a lab, como cualquier otra funci´n predefinida. o6.2 Control de flujo. Bucles.En el entorno de trabajo las instrucciones se ejecutan en el orden en el quese van introduciendo. Dentro de un programa, el orden, el flujo, se pueden alterar utilizandoalgunas instrucciones: 28
  29. 29. a) Condicionales: Las secuencias de ´rdenes se ejecutan bas´ndose en o aalguna condici´n. o b) Bucles (instrucciones iterativas): una o un grupo de ´rdenes que se oejecutan varias veces.6.3 Condicionales. • Estructura if simple Su forma es la siguiente: if condicional comando end El comando se ejecuta si todos los elementos en condicional son ver- daderos. • Ejemplo: >>a=3; if a>2 b=a+5 end • Estructura if compuesta if condicional comando primero else comando segundo end 29
  30. 30. • Ejemplo: >>a=n; if a>5 b= a+5 else b= a-1 end• Estructura if-else-if Se usa cuando hay m´s de dos condiciones que puedan cunplirse. Su a forma es: if condicional primero comando primero elseif condicional segundo comando segundo elseif condicional tercero comando tercero ...... else comando final end• Ejemplo: >>b= 1:5;n=5; if n==1 x=b. 1 elseif n==2 x=b. 2 30
  31. 31. elseif n==3 x=b. 3 else x=b end • Orden switch El mismo resultado del ejemplo anterior se podr´ haber obtenido con ıa switch, de la siguiente forma: switch(n) case(1) x=b. 1 case(2) x=b. 2 case(3) x=b. 3 otherwise x=b end6.4 Bucles. • Bucles for. Ejecuta una o varias sentencias un n´mero predeterminado de veces. u Su forma general es: for i=1:n sentencias end 31
  32. 32. • Ejemplo: for i= 1:10 a(i)= i+2; end Produce el vector a= (3,4,5,6,7,8,9,10,11,12) • Ejercicio: Crear la matriz de Hilbert. Es decir, una matriz A = (aij )1≤i,j≤n , donde 1 aij = i+j−1 • Bucles while. Sirve para ejecutar una sentencia o grupo de sentencias mientras se cumpla una condici´n. Su forma general es: o while condicional comando end6.5 Lectura y escritura interactiva de variables.Veremos una forma sencilla de leer variables desde el teclado y escribir men-sajes en la pantalla del PC.6.5.1 Funci´n input oLa funci´n input permite imprimir un mensaje en la l´ o ınea de comandos deMATLAB y recuperar como valor de retorno un valor num´rico o el resultado ede una expresi´n tecleada por el usuario. Despu´s de imprimir el mensaje, o eel programa espera que el usuario teclee el valor num´rico o la expresi´n. e oCualquier expresi´n v´lida de MATLAB es aceptada por este comando. El o ausuario puede teclear simplemente un vector o una matriz. En cualquier caso,la expresi´n introducida es evaluada con los valores actuales de las variables o 32
  33. 33. de MATLAB y el resultado se devuelve como valor de retorno. Veamos dosejemplos de uso de esta funci´n: o Ejemplo 1: >> n= input(’Teclee el n´mero de elmentos’); u Ejemplo 2: >> direccion= input(’¿D´nde vives?’, ’s’); o Observemos el par´metro ’s’. En este caso el texto tecleado como re- aspuesta se lee y se devuelve sin evaluar, con lo que se almacena en la cadenadireccion , As´ pues, en este caso, si se teclea una f´rmula, se almacena ı ocomo texto sin evaluarse.6.5.2 Funci´n disp oLa funci´n disp permite imprimir en pantalla un mensaje de texto o el valor ode una matriz, pero sin imprimir su nombre. En realidad, disp siempre im-prime vectores y/o matrices: las cadenas de caracteres son un caso particularde vectores. Veamos un ejemplo de su uso: >> disp (’El valor de la matriz es’) >> disp (A)6.5.3 Observaci´n oCuando se escribe un punto y coma al final de una instrucci´n, el ordenador orealiza las operaciones correspondientes y almacena el resultado bajo el nom-bre que le hayamos asignado (para su uso en c´lculos posteriores) pero no amuestra el resultado del proceso en la pantalla. 33
  34. 34. Ejercicios 1. Calcular la suma de los n primeros t´rminos de la sucesi´n: 1, 2x, 3x2 , e o 3 4x , ..., 2. Decidir si un no natural es primo. 3. Escribir un no natural en una base dada (menor de 10). 4. Represente la funci´n sin(nπx)en el intervalo −1 ≤ x ≤ 1 , para o n=1,2,3,...,8. 5. La Sucesi´n de Fibonnaci empieza con los n´meros 0 y 1, y los t´rminos o u e restantes son la suma de los dos t´rminos anteriores: e f1 = 0, f2 = 1, fn = fn−1 + fn−2 , n = 3, 4, ... a) Definir una funci´n que determine el en´simo t´rmino de la serie o e e (input: n, output: ) b) Comprobar la hip´tesis de que el cociente entre dos t´rminos suce- o √ e 5+1 sivos de la serie tiende al valor 2 (sugerencia: calcule el cociente para los primeros 20 t´rminos). e 6. Almacenar en un vector las ra´ cuadradas de los primeros 25 n´meros ıces u pares. 7. Almacenar en un vector los productos entre los 10 primeros n´meros u impares con los m´ltiplos de 3 positivos menores que 100. u 8. Escriba un script que determine si un a˜o dado es bisiesto (nota: debe n ser m´ltiplo de 4). El a˜o debe ser leido desde la pantalla, y el resultado u n mostrarse en pantalla. 9. Escriba un script tal que determine si π e > eπ , y entonces asigne a √ una variable b el valor: b = a2 − c2 , y b = 0 en caso contrario. 34
  35. 35. 10. Escriba un script tal que, dada una ecuaci´n cuadr´tica de la forma: o a 2 ax + bx + c = 0 , calcule las dos ra´ reales si el discriminante es no ıces negativo, y en caso contrario despliegue un mensaje indicando que no hay ra´ reales. ıces11. Escriba un script que lea los coeficientes de las rectas: ax + by = c dx + ey = f y determine si son paralelas, y en caso de no serlo, determine si son perpendiculares.12. Escriba un script que lea las coordenadas de 3 puntos en el plano, y determine si est´n alineados. 14. a13. Defina la funci´n area (ver el te´rico) y apl´ o o ıquela para calcular el ´rea a de un tri´ngulo de lados de longitudes 10, 15, 20. a14. a) Dado un vector v, escriba una funci´n que determine sus coordenadas o cartesianas (x,y) a partir de sus coordenadas polares (r,θ). b) Aplique la funci´n anterior para determinar las coordenadas carte- o sianas para r=5 y θ = π . 6 sin(πx)15. a) Defina la funci´n f (x) = o x , donde x puede ser un escalar o un vector ımite de la funci´n , cuando x → 0. Sugerencia: Observe b) Estime el l´ o el comportamiento de f(x) al evaluarla en una secuencia de valores que se aproximan a 0: [0.1,0.01,0.001,0.0001,...etc]. Pruebe a cambiar el formato num´rico (de short a long p.e.). e7 Ap´ndice: Algunas funciones utiles para e ´ los ejercicios. 1. Funci´n rem (n,i)) o 35
  36. 36. Nos da el resto de dividir n entre i.2. Funci´n fix (n/a)) o Parte entera del cociente n/a. 36

×