SlideShare una empresa de Scribd logo
1 de 36
Descargar para leer sin conexión
APUNTES DE MATLAB
                     Ingenier´ T´cnica Industrial.
                             ıa e


En estas breves notas, se pretende dar un primer paso en el aprendizaje del
uso 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.
                o



1     Comandos b´sicos. Variables.
                a

Hagamos 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
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
>> 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
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 matrices

2.1    Vectores

Para 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                                    o
trasposici´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
                                         a
signo de interrogaci´n.)
                    o

Si queremos declarar un vector de coordenadas equiespaciadas entre dos

                                       4
dadas, por ejemplo, que la primera valga 0, la ultima 20 y la distancia entre
                                               ´
coordenadas sea 2, basta poner:
>> vect1=0:2:20
vect1 = 0 2 4 6 8 10 12 14 16 18 20

Equivalentemente, 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 20

A las coordenadas de un vector se accede sin m´s que escribir el nombre
                                              a
del 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                      a
aplicar sobre vectores. El resultado es el vector formado por la aplicaci´n de
                                                                         o
la 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 escalar
de vectores; suma, resta, producto y potencia de matrices) se representan
con los operadores habituales:
>> v,w
>> z=v*w’
>> Z=w’*v
>> v*w


                                      5
??? Error using ==¿ * Inner matrix dimensions must agree.


    Tambi´n pueden efectuarse multiplicaciones, divisiones y potencias de
          e
vectores, entendi´ndolas como elemento a elemento (como, de hecho, se re-
                 e
alizan la suma y la resta). El operador utilizado para ellas es el habitual
precedido por un punto (.); es decir:
>> v.*w
>> w./v
>> v. 2

Finalmente, tambi´n pueden calcularse longitud, producto escalar, producto
                 e
vectorial, etc:
>> length(v)
>> dot(u,v)
>> cross(u,v)


2.2    Variables l´gicas
                  o

Tambi´n existen variables l´gicas que toman los valores 0 (falso) o 1 (ver-
      e                    o
dadero). Por ejemplo:

   Vector l´gico cuyas coordenadas valen 1 si la coordenada correspondiente
           o
de 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
Distinto (∼ es el operador de negaci´n)
                                       o

   >> logic2 = v ∼= v2


2.3   Polinomios

Se puede trabajar con polinomios: basta tener en cuenta que un polinomio
no es m´s que un vector. El orden de los coeficientes es de mayor a menor
        a
grado, 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
               o
ra´ a los n´meros i, −i, 0.5 y π
  ıces       u



                                      7
>> poly([i -i 1/2 pi])




2.4    Matrices

Las matrices se escriben como los vectores, pero separando las filas mediante
un 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=M

Podemos 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
                                                    a
de 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
       e
la segunda columna de mat


                                     8
>> mat(:,2)

O a su segunda fila
>> mat(2,:)

Y tambi´n podemos acceder a la matriz como si fuera una columna. Por
        e
ejemplo: 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 comando
que obtiene la submatriz formada por los elementos que est´n en ”todas”las
                                                             a
filas que hay entre la segunda y la tercera y en las columnas primera y tercera
de 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
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
           o


Ejercicios

Vectores

  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
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.
                      a

Matrices

  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
(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.
                                                 a


3.1    Gr´ficas de funciones y = f (x)
         a

Para representar gr´ficamente una funci´n, por ejemplo y = sen (x), se siguen
                    a                 o
los 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 pocos
puntos la gr´fica tiene un aspecto demasiado lineal a trozos. Para evitarlo,
            a
basta tomar m´s puntos.
              a

    >> x=linspace(0,2*pi,100);


                                    12
>> y=sin(x);

   >> plot(x,y)

   Tambi´n pueden dibujarse funciones con el comando fplot. Este comando
          e
genera 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       a

El 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             a
funciones y dibujandolas.

   >> x=linspace(0,2*pi,100);

   >> y=sin(x);

   >> z=cos(x);

   >> plot(x,y,x,z)


                                     13
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 comando
axis, 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
3.1.3   Etiquetado de gr´ficas.
                        a

Ejemplo:

   >> 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                                                 a
con el comando legend

   >> legend ( exp(-x 2) ,        2*exp(-x 2) )

   Para insertar texto sobre un punto cualquiera de la ventana, (En las
nuevas versiones esto se puede hacer directamente sobre la ventana):

   >> gtext( texto     )


3.1.4   Comando subplot

El 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
>> 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
                      e

Dibujar 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 comando
quiver

   >> 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
3.3    Curvas en impl´
                     ıcitas

El comando ezplot dibuja curvas como plot en cartesianas y param´tricas
                                                                     e
de una manera m´s sencilla ya que genera autom´ticamente los valores de la
                   a                             a
variable 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 la
dependiente:

    >> ezplot( sin(1/x) , [ 0, pi, -1.2, 1.2 ])

    Para dibujar curvas en forma impl´ıcita se utiliza el comando ezplot con
el siguiente formato ezplot( g(x,y) ) donde la curva es g(x, y) = 0, y se
pueden 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 3D

4.1    Curvas en el espacio

Dibujar 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
>> 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)
         a

Podemos tambi´n dibujar superficies. Por ejemplo, para dibujar la superficie
                e
    −x2 −y 2
z=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
>> 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.
                 a


Ejercicios

Gr´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
(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.
                                                           a

4. 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
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          o

5.1     Expresiones Simb´licas.
                        o

Son cadenas de caracteres representando n´meros, funciones, operadores y
                                            u
variables. 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
• Ejemplo
        >> f = (x 2-7*x+8)/(x+2)


5.2       C´lculo de derivada n-´sima de una funci´n.
           a                    e                 o

El comando diff permite hallar la derivada n-´sima de una funci´n simb´lica
                                              e                 o        o
con 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
                                              o
la pondremos en forma bonita con el comando pretty.

   >>d3=diff(f,3)

   >>pretty(d3)


5.3       C´lculo de integrales.
           a

5.3.1     C´lculo de integrales indefinidas
           a

>>int (nombre funci´n)
                   o


5.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
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
                          o
con 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
• 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
>> 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).
                                                     o


5.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
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
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
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.
                                    o


6.2    Control de flujo. Bucles.

En el entorno de trabajo las instrucciones se ejecutan en el orden en el que
se van introduciendo.

   Dentro de un programa, el orden, el flujo, se pueden alterar utilizando
algunas instrucciones:


                                       28
a) Condicionales: Las secuencias de ´rdenes se ejecutan bas´ndose en
                                       o                      a
alguna condici´n.
              o

    b) Bucles (instrucciones iterativas): una o un grupo de ´rdenes que se
                                                            o
ejecutan 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
• 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
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
      end


6.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
• 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
        end


6.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
               o

La funci´n input permite imprimir un mensaje en la l´
        o                                               ınea de comandos de
MATLAB y recuperar como valor de retorno un valor num´rico o el resultado
                                                           e
de una expresi´n tecleada por el usuario. Despu´s de imprimir el mensaje,
               o                                  e
el programa espera que el usuario teclee el valor num´rico o la expresi´n.
                                                        e                  o
Cualquier expresi´n v´lida de MATLAB es aceptada por este comando. El
                  o a
usuario 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
de MATLAB y el resultado se devuelve como valor de retorno. Veamos dos
ejemplos 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-
                       a
spuesta se lee y se devuelve sin evaluar, con lo que se almacena en la cadena
direccion , As´ pues, en este caso, si se teclea una f´rmula, se almacena
                ı                                         o
como texto sin evaluarse.


6.5.2   Funci´n disp
             o

La funci´n disp permite imprimir en pantalla un mensaje de texto o el valor
        o
de una matriz, pero sin imprimir su nombre. En realidad, disp siempre im-
prime vectores y/o matrices: las cadenas de caracteres son un caso particular
de vectores. Veamos un ejemplo de su uso:

   >> disp (’El valor de la matriz es’)

   >> disp (A)


6.5.3   Observaci´n
                 o

Cuando se escribe un punto y coma al final de una instrucci´n, el ordenador
                                                             o
realiza las operaciones correspondientes y almacena el resultado bajo el nom-
bre que le hayamos asignado (para su uso en c´lculos posteriores) pero no
                                                 a
muestra el resultado del proceso en la pantalla.




                                     33
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
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.
          ıces

11. 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.
                    a

13. 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.
             a

14. 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.).
                   e



7      Ap´ndice: Algunas funciones utiles para
           e                       ´
      los ejercicios.
    1. Funci´n rem (n,i))
            o

                                     35
Nos da el resto de dividir n entre i.

2. Funci´n fix (n/a))
        o
  Parte entera del cociente n/a.




                                   36

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

TIPOS DE DATOS MATLAB
TIPOS DE DATOS MATLABTIPOS DE DATOS MATLAB
TIPOS DE DATOS MATLAB
 
Manual Matlab 2008
Manual Matlab 2008Manual Matlab 2008
Manual Matlab 2008
 
Programacion matlab
Programacion matlabProgramacion matlab
Programacion matlab
 
Curso de introduccion_al_matlab
Curso de introduccion_al_matlabCurso de introduccion_al_matlab
Curso de introduccion_al_matlab
 
Tutorial de matrices matlab
Tutorial de matrices matlabTutorial de matrices matlab
Tutorial de matrices matlab
 
Guia 2 matlab
Guia 2 matlabGuia 2 matlab
Guia 2 matlab
 
Apuntesmatlab
ApuntesmatlabApuntesmatlab
Apuntesmatlab
 
Programacion en matlab
Programacion en matlabProgramacion en matlab
Programacion en matlab
 
Cursos de MATLAB
Cursos de MATLABCursos de MATLAB
Cursos de MATLAB
 
Matlab teoria
Matlab teoriaMatlab teoria
Matlab teoria
 
resumen matlab
resumen matlabresumen matlab
resumen matlab
 
Logica difusautilizandomatlab
Logica difusautilizandomatlabLogica difusautilizandomatlab
Logica difusautilizandomatlab
 
Tutorial matlab
Tutorial matlabTutorial matlab
Tutorial matlab
 
Capitulo5
Capitulo5Capitulo5
Capitulo5
 
Breves apuntes matlab5
Breves apuntes matlab5Breves apuntes matlab5
Breves apuntes matlab5
 
Apuntesmatlab
ApuntesmatlabApuntesmatlab
Apuntesmatlab
 
Informatica
InformaticaInformatica
Informatica
 
MATLAB 2010
MATLAB 2010MATLAB 2010
MATLAB 2010
 
Guia 1 matlab
Guia 1 matlabGuia 1 matlab
Guia 1 matlab
 
Vectores y Matrices
Vectores y MatricesVectores y Matrices
Vectores y Matrices
 

Similar a APUNTES DE MATLAB (20)

Introducion al matlab
Introducion al matlabIntroducion al matlab
Introducion al matlab
 
Notas matlab
Notas matlabNotas matlab
Notas matlab
 
practica matlab
practica matlabpractica matlab
practica matlab
 
Practica2
Practica2Practica2
Practica2
 
Estadística con Lenguaje R: Sesión 2
Estadística con Lenguaje R: Sesión 2Estadística con Lenguaje R: Sesión 2
Estadística con Lenguaje R: Sesión 2
 
Mathlab tutorial
Mathlab tutorialMathlab tutorial
Mathlab tutorial
 
Graficas con Matlab
Graficas con Matlab Graficas con Matlab
Graficas con Matlab
 
APUNTES DE MATHLAB.pdf
APUNTES DE MATHLAB.pdfAPUNTES DE MATHLAB.pdf
APUNTES DE MATHLAB.pdf
 
Matlab
MatlabMatlab
Matlab
 
Curso_de_introduccion_al_matlab.ppt
Curso_de_introduccion_al_matlab.pptCurso_de_introduccion_al_matlab.ppt
Curso_de_introduccion_al_matlab.ppt
 
Matlab
MatlabMatlab
Matlab
 
Matlab introducción
Matlab   introducciónMatlab   introducción
Matlab introducción
 
Matlab introducción
Matlab   introducciónMatlab   introducción
Matlab introducción
 
Matlab introducción
Matlab   introducciónMatlab   introducción
Matlab introducción
 
Silabo programación ii 2015-i
Silabo programación ii 2015-iSilabo programación ii 2015-i
Silabo programación ii 2015-i
 
clase de matlab
clase  de   matlabclase  de   matlab
clase de matlab
 
Clase1. introducción a matlab
Clase1. introducción a matlabClase1. introducción a matlab
Clase1. introducción a matlab
 
Matlab -compu_aplicada
Matlab  -compu_aplicadaMatlab  -compu_aplicada
Matlab -compu_aplicada
 
Intro_Matlab_1.pdf
Intro_Matlab_1.pdfIntro_Matlab_1.pdf
Intro_Matlab_1.pdf
 
Matlab
MatlabMatlab
Matlab
 

Más de jlccarvajal

Más de jlccarvajal (9)

Lógica matemáticasuppes
Lógica matemáticasuppesLógica matemáticasuppes
Lógica matemáticasuppes
 
Lógica matemáticasuppes
Lógica matemáticasuppesLógica matemáticasuppes
Lógica matemáticasuppes
 
Determinantes
DeterminantesDeterminantes
Determinantes
 
Matrices
MatricesMatrices
Matrices
 
Malla
MallaMalla
Malla
 
Horarios
HorariosHorarios
Horarios
 
Matrices
MatricesMatrices
Matrices
 
Tema1
Tema1Tema1
Tema1
 
Como realizar podcasts
Como realizar podcastsComo realizar podcasts
Como realizar podcasts
 

APUNTES DE MATLAB

  • 1. APUNTES DE MATLAB Ingenier´ T´cnica Industrial. ıa e En estas breves notas, se pretende dar un primer paso en el aprendizaje del uso 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. o 1 Comandos b´sicos. Variables. a Hagamos 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. 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. >> 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. 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 matrices 2.1 Vectores Para 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 o trasposici´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 a signo de interrogaci´n.) o Si queremos declarar un vector de coordenadas equiespaciadas entre dos 4
  • 5. dadas, por ejemplo, que la primera valga 0, la ultima 20 y la distancia entre ´ coordenadas sea 2, basta poner: >> vect1=0:2:20 vect1 = 0 2 4 6 8 10 12 14 16 18 20 Equivalentemente, 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 20 A las coordenadas de un vector se accede sin m´s que escribir el nombre a del 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 a aplicar sobre vectores. El resultado es el vector formado por la aplicaci´n de o la 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 escalar de vectores; suma, resta, producto y potencia de matrices) se representan con los operadores habituales: >> v,w >> z=v*w’ >> Z=w’*v >> v*w 5
  • 6. ??? Error using ==¿ * Inner matrix dimensions must agree. Tambi´n pueden efectuarse multiplicaciones, divisiones y potencias de e vectores, entendi´ndolas como elemento a elemento (como, de hecho, se re- e alizan la suma y la resta). El operador utilizado para ellas es el habitual precedido por un punto (.); es decir: >> v.*w >> w./v >> v. 2 Finalmente, tambi´n pueden calcularse longitud, producto escalar, producto e vectorial, etc: >> length(v) >> dot(u,v) >> cross(u,v) 2.2 Variables l´gicas o Tambi´n existen variables l´gicas que toman los valores 0 (falso) o 1 (ver- e o dadero). Por ejemplo: Vector l´gico cuyas coordenadas valen 1 si la coordenada correspondiente o de 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. Distinto (∼ es el operador de negaci´n) o >> logic2 = v ∼= v2 2.3 Polinomios Se puede trabajar con polinomios: basta tener en cuenta que un polinomio no es m´s que un vector. El orden de los coeficientes es de mayor a menor a grado, 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 o ra´ a los n´meros i, −i, 0.5 y π ıces u 7
  • 8. >> poly([i -i 1/2 pi]) 2.4 Matrices Las matrices se escriben como los vectores, pero separando las filas mediante un 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=M Podemos 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 a de 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 e la segunda columna de mat 8
  • 9. >> mat(:,2) O a su segunda fila >> mat(2,:) Y tambi´n podemos acceder a la matriz como si fuera una columna. Por e ejemplo: 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 comando que obtiene la submatriz formada por los elementos que est´n en ”todas”las a filas que hay entre la segunda y la tercera y en las columnas primera y tercera de 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. 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 o Ejercicios Vectores 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. 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. a Matrices 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. (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. a 3.1 Gr´ficas de funciones y = f (x) a Para representar gr´ficamente una funci´n, por ejemplo y = sen (x), se siguen a o los 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 pocos puntos la gr´fica tiene un aspecto demasiado lineal a trozos. Para evitarlo, a basta tomar m´s puntos. a >> x=linspace(0,2*pi,100); 12
  • 13. >> y=sin(x); >> plot(x,y) Tambi´n pueden dibujarse funciones con el comando fplot. Este comando e genera 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 a El 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 a funciones y dibujandolas. >> x=linspace(0,2*pi,100); >> y=sin(x); >> z=cos(x); >> plot(x,y,x,z) 13
  • 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 comando axis, 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. 3.1.3 Etiquetado de gr´ficas. a Ejemplo: >> 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 a con el comando legend >> legend ( exp(-x 2) , 2*exp(-x 2) ) Para insertar texto sobre un punto cualquiera de la ventana, (En las nuevas versiones esto se puede hacer directamente sobre la ventana): >> gtext( texto ) 3.1.4 Comando subplot El 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. >> 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 e Dibujar 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 comando quiver >> 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. 3.3 Curvas en impl´ ıcitas El comando ezplot dibuja curvas como plot en cartesianas y param´tricas e de una manera m´s sencilla ya que genera autom´ticamente los valores de la a a variable 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 la dependiente: >> ezplot( sin(1/x) , [ 0, pi, -1.2, 1.2 ]) Para dibujar curvas en forma impl´ıcita se utiliza el comando ezplot con el siguiente formato ezplot( g(x,y) ) donde la curva es g(x, y) = 0, y se pueden 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 3D 4.1 Curvas en el espacio Dibujar 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. >> 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) a Podemos tambi´n dibujar superficies. Por ejemplo, para dibujar la superficie e −x2 −y 2 z=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. >> 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. a Ejercicios Gr´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. (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. a 4. 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. 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 o 5.1 Expresiones Simb´licas. o Son cadenas de caracteres representando n´meros, funciones, operadores y u variables. 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. • Ejemplo >> f = (x 2-7*x+8)/(x+2) 5.2 C´lculo de derivada n-´sima de una funci´n. a e o El comando diff permite hallar la derivada n-´sima de una funci´n simb´lica e o o con 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 o la pondremos en forma bonita con el comando pretty. >>d3=diff(f,3) >>pretty(d3) 5.3 C´lculo de integrales. a 5.3.1 C´lculo de integrales indefinidas a >>int (nombre funci´n) o 5.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. 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 o con 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. • 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. >> 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). o 5.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. 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. 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. 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. o 6.2 Control de flujo. Bucles. En el entorno de trabajo las instrucciones se ejecutan en el orden en el que se van introduciendo. Dentro de un programa, el orden, el flujo, se pueden alterar utilizando algunas instrucciones: 28
  • 29. a) Condicionales: Las secuencias de ´rdenes se ejecutan bas´ndose en o a alguna condici´n. o b) Bucles (instrucciones iterativas): una o un grupo de ´rdenes que se o ejecutan 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. • 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. 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 end 6.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. • 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 end 6.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 o La funci´n input permite imprimir un mensaje en la l´ o ınea de comandos de MATLAB y recuperar como valor de retorno un valor num´rico o el resultado e de una expresi´n tecleada por el usuario. Despu´s de imprimir el mensaje, o e el programa espera que el usuario teclee el valor num´rico o la expresi´n. e o Cualquier expresi´n v´lida de MATLAB es aceptada por este comando. El o a usuario 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. de MATLAB y el resultado se devuelve como valor de retorno. Veamos dos ejemplos 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- a spuesta se lee y se devuelve sin evaluar, con lo que se almacena en la cadena direccion , As´ pues, en este caso, si se teclea una f´rmula, se almacena ı o como texto sin evaluarse. 6.5.2 Funci´n disp o La funci´n disp permite imprimir en pantalla un mensaje de texto o el valor o de una matriz, pero sin imprimir su nombre. En realidad, disp siempre im- prime vectores y/o matrices: las cadenas de caracteres son un caso particular de vectores. Veamos un ejemplo de su uso: >> disp (’El valor de la matriz es’) >> disp (A) 6.5.3 Observaci´n o Cuando se escribe un punto y coma al final de una instrucci´n, el ordenador o realiza las operaciones correspondientes y almacena el resultado bajo el nom- bre que le hayamos asignado (para su uso en c´lculos posteriores) pero no a muestra el resultado del proceso en la pantalla. 33
  • 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. 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. ıces 11. 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. a 13. 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. a 14. 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.). e 7 Ap´ndice: Algunas funciones utiles para e ´ los ejercicios. 1. Funci´n rem (n,i)) o 35
  • 36. Nos da el resto de dividir n entre i. 2. Funci´n fix (n/a)) o Parte entera del cociente n/a. 36