miércoles, 24 de abril de 2013


Practica de matlab:

Matlab es el nombre abreviado de “Matrix Laboratory”. Matlab es un programa para realizar cálculos numéricos con vectores y matrices. Como caso particular puede también trabajar con números escalares, tanto reales como complejos. Una de las capacidades más atractivas es la de realizar una amplia variedad de gráficos en dos y tres dimensiones. 

  • Operaciones con números reales:
>> 2+2

ans =

     4

>> 654654656465645+6765767657655352421

ans =

   6.7664e+18

  • Si introducimos la palabra "help" en la ventana de comandos el programa nos imprimira en pantalla una serie de comandos que nos ayudara a resolver el problema que tengamos.

aquí dejo algunas de ellas como ejemplo aunque hay muchas mas:

>> help
HELP topics:

matlab/general                 - General purpose commands.
matlab/ops                      - Operators and special characters.
matlab/lang                      - Programming language constructs.
matlab/elmat                    - Elementary matrices and matrix manipulation.
matlab/randfun                 - Random matrices and random streams.
matlab/elfun                     - Elementary math functions.
matlab/specfun                 - Specialized math functions.
matlab/matfun                  - Matrix functions - numerical linear algebra.
matlab/datafun                 - Data analysis and Fourier transforms.
matlab/polyfun                 - Interpolation and polynomials.
matlab/funfun                   - Function functions and ODE solvers.
matlab/sparfun                 - Sparse matrices.
matlab/scribe                   - Annotation and Plot Editing.
matlab/graph2d                - Two dimensional graphs.
matlab/graph3d                - Three dimensional graphs.
  • Si añadimos a la palabra help por ejemplo rank el programa nos mostrara la ayuda respecto a la palabra que le sigue en este caso de las matrices.

>> help rank
 RANK   Matrix rank.
    RANK(A) provides an estimate of the number of linearly
    independent rows or columns of a matrix A.
    RANK(A,tol) is the number of singular values of A
    that are larger than tol.
    RANK(A) uses the default tol = max(size(A)) * eps(norm(A)).

    Class support for input A:
       float: double, single

    Overloaded methods:
       gf/rank
       rptcp/rank

    Reference page in Help browser
       doc rank

  • También puedes declarar variables lo que nos permite trabajar más cómodos y más rápido 


>> cos(pi)

ans =

    -1

>> a=3

a =

     3

>> b=5

b =

     5

>> a-b

ans =

    -2

>> x=a+b

x =

     8
  • Si la variable utilizada no existe nos saldrá el siguiente mensaje.


>> z
??? Undefined function or variable 'z'.

  • También hace raíces, en el caso del ejemplo raíz cuadrada de 4:

>> sqrt(4)

ans =

     2
  •  Operaciones con números complejos:

>> z=3+2i

z =

   3.0000 + 2.0000i

>> s=5-7i

s =

   5.0000 - 7.0000i

>> z+s

ans =

   8.0000 - 5.0000i

>> z*s

ans =

  29.0000 -11.0000i

Para pasar un número complejo a polar solo hay que sacar su modulo y su ángulo 

>> abs(z)

ans =

    3.6056

>> angle(z)

ans =

    0.5880

>> m=abs(x)

m =

     8

>> alfa=angle(z)

alfa =

    0.5880

>> m=abs(z)

m =

    3.6056

 En caso de que queramos pasar el numero de polar a imaginario se haría de esta forma:

>> x=m*cos(alfa)

x =

     3

>> y=m*sin(alfa)

y =

    2.0000
  • Matrices
Para introducir una matriz solo hay que poner su nombre = y entre [] los números de las filas separados por un espacio y una coma cuando cambiemos de fila.


>> A=[1 2 3;5 -1 -2; 0 0 0 ]

A =

     1     2     3
     5    -1    -2
     0     0     0

>> B=[1 1 1;2 2 2 ;1 -1 2]

B =

     1     1     1
     2     2     2
     1    -1     2

Con esta función el programa nos crea una matriz con números aleatorios.

>> C=rand(3,3)

C =

    0.8147    0.9134    0.2785
    0.9058    0.6324    0.5469
    0.1270    0.0975    0.9575

Transpuesta de una matriz:

>> X=[1 1 5]'

X =

     1
     1
     5

>> A+B

ans =

     2     3     4
     7     1     0
     1    -1     2

>> A-C

ans =

    0.1853    1.0866    2.7215
    4.0942   -1.6324   -2.5469
   -0.1270   -0.0975   -0.9575

>> A

A =

     1     2     3
     5    -1    -2
     0     0     0



>> A*X

ans =

    18
    -6
     0

>> A*C

ans =

    3.0073    2.4707    4.2448
    2.9139    3.7394   -1.0694
         0         0         0

>> X*a

ans =

     3
     3
    15

En caso de que la operación entre matrices no este permitida nos saldrá este error:

>> X*A
??? Error using ==> mtimes
Inner matrix dimensions must agree.

Esta función es para obtener el rango de una matriz.


>> rank(A)

ans =

     2

>> rank (2)

ans =

     1

>> rank(B)

ans =

     2

 Polinomio caracteristico de la matriz:

>> poly(A)

ans =

     1     0   -11     0

Inversa de una matriz:

>> inv(C)

ans =

   -1.9958    3.0630   -1.1690
    2.8839   -2.6919    0.6987
   -0.0291   -0.1320    1.1282

Determinante de una matriz:

>> det(a)

ans =

     3

Este comando nos imprimirá la matriz unidad de orden "n":

>> eye(3)

ans =

     1     0     0
     0     1     0
     0     0     1

Valores propios y vectores propios

>> [val.vec]=eig(A)

val =

    vec: [3x1 double]

>> [z,v]=eig(A)

z =

    0.6535   -0.4204    0.0493
    0.7569    0.9073   -0.8385
         0         0    0.5426


v =

    3.3166         0         0
         0   -3.3166         0
         0         0         0

>> expm(A)

ans =

   17.9521    8.3009   11.2875
   20.7522    9.6513   11.4836
         0         0    1.0000

  • Esta función nos borra todas las variables definidas

>> clear

  • El comando "syms" nos permite trabajar con las variables como un símbolo 

>> syms x y s lambda

>> A=[1 2 3;0 1 0;3 -1 7]

A =

     1     2     3
     0     1     0
     3    -1     7

>> det(A-lambda*eye(3))

ans =

- lambda^3 + 9*lambda^2 - 6*lambda - 2

>> x+y

ans =

x + y

>> x-y

ans =

x - y

>> x*x

ans =

x^2

>> x+x

ans =

2*x

>> x+2*y

ans =

x + 2*y

>> c=det(A-lambda*eye(3))

c =

- lambda^3 + 9*lambda^2 - 6*lambda - 2

>> c=A-lambda*eye(3)

c =

[ 1 - lambda,          2,          3]
[          0, 1 - lambda,          0]
[          3,         -1, 7 - lambda]

>> det(c)

ans =

- lambda^3 + 9*lambda^2 - 6*lambda - 2

>> p=det(c)

p =

- lambda^3 + 9*lambda^2 - 6*lambda - 2

>> q=poly(A)

q =

    1.0000   -9.0000    6.0000    2.0000

  • Derivadas


>> f=3*x^2

f =

3*x^2

>> diff(f,x)

ans =

6*x

  • Integrales

 Integral indefinida

>> int(f,x)

ans =

x^3

Integral definida

>> int(f,x,-3,5)

ans =

152


>> p=int(f,x,-3,5)

p =

152

Si ponemos double el resultado sera un número real no entero

>> double(p)

ans =

   152

  • Matlab también nos permite hacer gráficos de funciones para ello ponemos la función  y los intervalos que queremos que tenga nuestra gráfica y con la función plot(x,y),title('parábola') nos sacara una gráfica de titulo parábola como se muestra en la foto de mas abajo.


>> y=x^2

y =

x^2

>> x=[-2:0.1:2]

x =

  Columns 1 through 15

   -2.0000   -1.9000   -1.8000   -1.7000   -1.6000   -1.5000   -1.4000   -1.3000   -1.2000   -1.1000   -1.0000   -0.9000   -0.8000   -0.7000   -0.6000

  Columns 16 through 30

   -0.5000   -0.4000   -0.3000   -0.2000   -0.1000         0    0.1000    0.2000    0.3000    0.4000    0.5000    0.6000    0.7000    0.8000    0.9000

  Columns 31 through 41

    1.0000    1.1000    1.2000    1.3000    1.4000    1.5000    1.6000    1.7000    1.8000    1.9000    2.0000

>> y=x.^2

y =

  Columns 1 through 15

    4.0000    3.6100    3.2400    2.8900    2.5600    2.2500    1.9600    1.6900    1.4400    1.2100    1.0000    0.8100    0.6400    0.4900    0.3600

  Columns 16 through 30

    0.2500    0.1600    0.0900    0.0400    0.0100         0    0.0100    0.0400    0.0900    0.1600    0.2500    0.3600    0.4900    0.6400    0.8100

  Columns 31 through 41

    1.0000    1.2100    1.4400    1.6900    1.9600    2.2500    2.5600    2.8900    3.2400    3.6100    4.0000




>> plot(x,y),title('parabola')



Transformada de Laplace:


La transformada de Laplace de una función f(t) definida (en ecuaciones diferenciales, o en análisis matemático o en análisis funcional) para todos los números positivos t ≥ 0, es la función F(s), definida por:
F(s)
  = \mathcal{L} \left\{f(t)\right\}
  =\int_{0}^\infty e^{-st} f(t)\,dt.
siempre y cuando la integral esté definida. Cuando f(t) no es una función, sino una distribución con una singularidad en 0, la definición es:
F(s)
  = \mathcal{L} \left\{f(t)\right\}
  =\lim_{\varepsilon \rightarrow 0} \int_{-\varepsilon}^\infty e^{-st} f(t)\,dt.

Cuando se habla de la transformada de Laplace, generalmente se refiere a la versión unilateral. También existe la transformada de Laplace bilateral, que se define como sigue:
F_B(s)
  = \mathcal{L}\left\{f(t)\right\}
  =\int_{-\infty}^{\infty} e^{-st} f(t)\,dt.

Propiedades de nuestro interés:

Linealidad

\mathcal{L}\left\{a f(t) + b g(t) \right\}
  = a \mathcal{L}\left\{ f(t) \right\} +
    b \mathcal{L}\left\{ g(t) \right\}

Derivación

\mathcal{L}\{f'(t)\}
  = s \mathcal{L}\{f(t)\} - f(0)
\mathcal{L}\{f''(t)\}
  = s^2 \mathcal{L}\{f(t)\} - s f(0) - f'(0)
\mathcal{L}\left\{ f^{(n)}(t) \right\}
  = s^n \mathcal{L}\{f(t)\} - s^{n - 1} f(0) - \cdots - f^{(n - 1)}(0)
\mathcal{L}\left\{ f^{(n)}(t) \right\}
  = s^n \mathcal{L}\{f(t)\} - \sum_{i=1}^{n} s^{n - i} f^{(i - 1)}(0)

Integración

\mathcal{L}\left\{ \int_0^t f(\tau)\, d\tau \right\}
  = {1 \over s} \mathcal{L}\{f\}

Dualidad

\mathcal{L}\{ t f(t)\}
  = -F'(s)

Ejemplo de lazo cerrado


Sistema de control de lazo cerrado:
Son los sistemas en los que la acción de control está en función de la señal de salida. Los sistemas de circuito cerrado usan la retroalimentación desde un resultado final para ajustar la acción de control en consecuencia. El control en lazo cerrado es imprescindible cuando se da alguna de las siguientes circunstancias:
  1. Cuando un proceso no es posible de regular por el hombre.
  2. Una producción a gran escala que exige grandes instalaciones y el hombre no es capaz de manejar.
  3. Vigilar un proceso es especialmente dificil en algunos casos y requiere una atención que el hombre puede perder fácilmente por cansancio o despiste, con los consiguientes riesgos que ello pueda ocasionar al trabajador y al proceso.



Ejemplo:

Termostato de la calefacción:
  1. Sensor = sensor de temperatura
  2. Termostato = controlador
  3. Caldera = actuador
Este es un ejemplo claro y sencillo. En primer lugar tenemos un sensor que se encarga de controlar la temperatura, comparando la temperatura de la entrada y la salida. El termostato que actúa como controlador le manda una señal a la caldera, que es el actuador, para que caliente los radiadores.