miércoles, 9 de mayo de 2012

Practica de matlab

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')