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.
En caso de que queramos pasar el numero de polar a imaginario se haría de esta forma:
Este comando nos imprimirá la matriz unidad de orden "n":
- 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
>> 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
>> 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')