Beruflich Dokumente
Kultur Dokumente
signo
Potenciacin
Multiplicacin
Divisin
Divisin inversa
Suma
Resta
^
*
/
\
+
-
Tecla
abreviada
alt 94
alt 42
alt 92
alt 43
alt 45
Clculos simples:
>> 27^1/3+32^0.2
ans =
11
>> 27^(1/3)+32^0.2
ans =
5
>> 4+5/3+1
ans =
6.6667
OPERADOR ASIGNACIN:
Es el que asigna el valor indicado a una variable. El valor puede ser una
matriz en forma general. Incluso puede ser otra variable.
>> x=15
x=
15
>> x=x+1
x=
16
>> x=3*x-12
x=
36
>> y=x+2
y=
38
>> who
Your variables are:
ans x y
>> whos
Name
Size
Bytes Class
ans
1x1
8 double array
x
1x1
8 double array
y
1x1
8 double array
Grand total is 3 elements using 24 bytes
>> clear x
>> who
Your variables are:
ans y
Donde vemos que con who y whos, vemos las variables. Con clear borramos
las variables.
FUNCIONES MATEMTICAS BSICAS
tipear en MATLAB
Funcin
Seno
Coseno
Tangente
Arc seno
Arc coseno
Arco tangente
seno hiperblico
Coseno hiperblico
Tangente hiperblico
sin(x )
cos(x )
tan(x )
asin(x)
acos(x )
atan(x )
sinh(x )
cosh(x )
tanh(x )
asinh(x )
acosh(x )
atanh(x )
abs(x )
sqrt(x )
angle(x )
factorial(x)
real(x )
imag(x )
conj(x )
round(x)
fix(x)
floor(x)
ceil(x)
sign(x)
rem(x,y)
exp(x)
log(x)
log10(x)
gcd(x,y)
lcm(x,y)
ans =
4
>> lcm(5,8)
ans =
40
>> sin(pi/2)
ans =
1
VARIABLES
Las variables con las que se trabaja, pueden ser de cualquier tipo. Y no
necesitan definirse previamente. Se crean al momento de escribirla.
Respecto a los formatos numricos con que MATLAB muestra los resultados
(recurdese que
Siempre calcula con doble precisin, es decir con unas 16 cifras decimales
equivalentes), las posibilidades existentes se muestran en la lista
format short
format long
format hex
format bank
format short e
format short g
format long e
format long g
format rational
enteros
>> y=2-6
y=
-4
>> y=2-6;
>>
Vea la diferencia.
Ejem2: Vea la diferencia entre x y X
>> x=2+3
x=
5
>>X
??? Undefined function or variable 'X'.
>>x
x=
5
1 2 3
>> x=[1,2,3]
x=
1 2 3
>> y=[1;2;3]
y=
1
2
3
>> y=[1
2
3]
y=
1
2
3
linspace(a, b, n): Crea un vector de n elementos, que empieza en a y termina
en b y que estn equiespaciados. Donde el espaciado esta dado por: (b-a)/(n1), si se omite el nmero de elementos ste por defecto es 100.
>> a=linspace(30,10,11)
a=
Columns 1 through 9
30 28 26 24 22
Columns 10 through 11
12 10
20
18
16
14
CARACTERIZACIN DE UN VECTOR
>> u=[4,5,9,0,8]
>> length(u)
>> v=[56;98;32]
>> length(v)
>> max(u)
>> min(v)
>> norma=sqrt(sum(u.^2))
>> norma=sqrt(sum(v.^2))
>> h=[2-3*i,1+i,8-3*i]
>> conj(h)
PRODUCTO INTERNO CANONICO DE VECTORES:
dot (u, v) u1v1 u2 v2 L un vn
>> u=[4 5 9 0 8]
>> v=[5 7 3 4 9]
>> dot(u,v)
>> norma=sqrt(dot(u,u))
>> norma=sqrt(dot(v,v))
PRODUCTO CRUZ DE VECTORES TRIDIMENSIONALES:
r r r
i
j k
cross(u, v ) u1 u2 u3 u2 v3 u3v2 , u3v1 u1v3 , u1v2 u2v1
v1 v2 v3
>> x=[2 5 9]
>> y=[6 2 8]
>> cross(x,y)
>> cross(y,x)
>> cross(x,x)
COMPONENTES DE UN VECTOR
>> a=[11;23;56;8;17;45;67;35]
>> a(3),a(7)
>> a(3:2:8)
>> a(8:-1:1)
>> b=a(1:3:8)'
OPERACIONES CON MATRICES Y VECTORES
Ya se ha comentado que MATLAB es fundamentalmente un programa para
clculo matricial. Inicialmente se utilizar MATLAB como programa
45
89]
MATLAB tiene en cuenta la diferencia entre vectores fila y vectores columna.
Por ejemplo, si se intenta sumar los vectores x e y se obtendr el siguiente
mensaje de error:
>> x+w
??? Error using ==> +
Matrix dimensions must agree.
>>
Estas dificultades desaparecen si se suma x con el vector transpuesto de y:
>> x+w'
A continuacin se van a estudiar estos temas con un poco ms de
detenimiento.
OPERACIONES CON MATRICES
OPERADORES ARITMTICOS
MATLAB puede operar con matrices por medio de operadores y por medio de
funciones. Se han visto ya los operadores suma (+), producto (*) y traspuesta
('), as como la funcin invertir inv( ).
Los operadores matriciales de MATLAB son los siguientes:
+
*
'
^
\
/
.*
. / y.\
.^
Adicin o suma
sustraccin o resta
Multiplicacin
traspuesta
Potenciacin
divisin-izquierda
divisin-derecha
Producto elemento a elemento
divisin elemento a elemento
Elevar a una potencia elemento a elemento
RESULTADO EN MATLAB
A= 3 4 5
4 6 3
4 8 0
B=
2 3 6 8
4 8 9 8
0 8 6 3
C=
C=[3,4,5,7;6,6,8,9;3,4,1,5;7,5,6,2;7,4,6,8]
3 4 5 7
6 6 8 9
3 4 1 5
7 5 6 2
7 4 6 8
C'
ans =
3 6 3 7 7
4 6 4 5 4
5 8 1 6 6
7 9 5 2 8
A*b
??? Undefined function or variable 'b'.
A*B
ans =
22 81
32 84
84
96
71
89
40
A*C
76
96
96
A*C'
D=[2 4 5 6]
E=[5 8 9 0]
D*E
D= 2 4 5 6
E= 5 8 9 0
??? Error using ==> *
Inner matrix dimensions must agree.
D*E'
A
ans =
A=
4+A
ans =
7 8
8 10
8 12
9
7
4
F=
7
8
8
8
10
12
9
7
4
G=
18
24
24
24
36
48
30
18
0
F=4+A
G=6*A
H=A^2
J=A.^2
K=A-5
87
3 4
4 6
4 8
H=
45 76 27
48 76 38
44 64 44
J=
9 16 25
16 36 9
16 64 0
K=
-2 -1 0
-1 1 -2
5
3
0
-1
L=A-B
A
N=inv(A)
-5
magic(4)
crea una matriz (44) con los nmeros 1, 2, ... 4*4, con
la
propiedad de que todas las filas y
columnas suman lo mismo .
hilb(5)
crea una matriz de Hilbert de tamao (55). La matriz
de Hilbert es una matriz cuyos elementos (i,j) responden a la expresin (1/
(i+j-1)). Esta es una matriz especialmente difcil de manejar por los grandes
errores numricos a los que conduce.
invhilb(5)
crea directamente la inversa de la matriz de Hilbert
kron(x,y)
produce una matriz con todos los productos de los
elementos del vector x por los elementos del vector y.
Equivalente a x'*y, donde x e y son vectores fila
compan(pol)
construye una matriz cuyo polinomio caracterstico
tiene como coeficientes los elementos del vector pol
(ordenados de mayor grado a menor)
vander(v)
construye la matriz de Vandermonde a partir del vector
v (las columnas son las potencias de los elementos de
dicho vector)
Existen otras funciones para crear matrices de tipos particulares. Con
Help/Matlab Help se puede obtener informacin sobre todas las funciones
disponibles en MATLAB, que aparecen agrupadas por categoras o por orden
alfabtico. En la categora Mathematics aparecen la mayor parte de las
funciones estudiadas en este apartado.
FORMACIN DE UNA MATRIZ A PARTIR DE OTRAS
MATLAB ofrece tambin la posibilidad de crear una matriz a partir de
matrices previas ya definidas, por varios posibles caminos:
recibiendo alguna de sus propiedades (como por ejemplo el tamao),
por composicin de varias submatrices ms pequeas,
modificndola de alguna forma.
A continuacin se describen algunas de las funciones que crean una nueva
matriz a partir de otra o de otras, comenzando por dos funciones auxiliares:
[m,n]=size(A)
devuelve el nmero de filas y de columnas de la matriz
A. Si la matriz es cuadrada basta recoger el primer valor de retorno.
n=length(x)
calcula el nmero de elementos de un vector x
zeros(size(A))
forma una matriz de ceros del mismo tamao que una
matriz A previamente creada
ones(size(A))
dem con unos
A=diag(x)
forma una matriz diagonal A cuyos elementos
diagonales son los elementos de un vector ya existente x
x=diag(A)
forma un vector x a partir de los elementos de la
diagonal de una matriz ya existente A
diag(diag(A))
crea una matriz diagonal a partir de la diagonal de la
matriz A
blkdiag(A,B)
crea una matriz diagonal de submatrices a partir de las
matrices que se le pasan como argumentos
triu(A)
forma una matriz triangular superior a partir de una
matriz A (no tiene por qu ser cuadrada). Con un segundo argumento puede
controlarse que se mantengan o eliminen ms diagonales por encima o debajo
de la diagonal principal.
tril(A)
dem con una matriz triangular inferior
rot90(A,k)
Gira k*90 grados la matriz rectangular A en sentido
antihorario. k es un entero que puede ser negativo. Si se omite, se supone k=1
flipud(A)
halla la matriz simtrica de A respecto de un eje
horizontal
fliplr(A)
halla la matriz simtrica de A respecto de un eje vertical
reshape(A,m,n)
Cambia el tamao de la matriz A devolviendo una
matriz de tamao mn cuyas columnas se obtienen a partir de un vector
formado por las columnas de A puestas una a continuacin de otra. Si la
matriz A tiene menos de mn elementos se produce un error.
Un caso especialmente interesante es el de crear una nueva matriz
componiendo como submatrices otras matrices definidas previamente. A
modo de ejemplo, ejectense las siguientes lneas de comandos y obsrvense
los resultados obtenidos:
A=rand(3)
B=diag(diag(A))
C=[A, eye(3); zeros(3), B]
A=magic(6)
Recurdese que MATLAB accede a los elementos de una matriz por medio de
los ndices de fila y de columna encerrados entre parntesis y separados por
una coma. Por ejemplo:
A(2,3)
El siguiente comando extrae los 4 primeros elementos de la 6 fila:
A(6, 1:4)
Los dos puntos aislados representan "todos los elementos". Por ejemplo, el
siguiente comando extrae todos los elementos de la 3 fila:
A(3, :)
Para acceder a la ltima fila o columna puede utilizarse la palabra end, en
lugar del nmero correspondiente. Por ejemplo, para extraer la sexta fila (la
ltima) de la matriz:
A(end, :)
El siguiente comando extrae todos los elementos de las filas 3, 4 y 5:
A(3:5,:)
Se pueden extraer conjuntos disjuntos de filas utilizando corchetes [ ]. Por
ejemplo, el
siguiente comando extrae las filas 1, 2 y 5:
A([1 2 5],:)
En los ejemplos anteriores se han extrado filas y no columnas por motivos del
espacio ocupado por el resultado en la hoja de papel. Es evidente que todo lo
que se dice para filas vale para columnas y viceversa: basta cambiar el orden
de los ndices.
El operador dos puntos (:) puede utilizarse en ambos lados del operador (=).
Por ejemplo, a continuacin se va a definir una matriz identidad B de tamao
6x6 y se van a reemplazar filas de B por filas de A. Obsrvese que la siguiente
secuencia de comandos sustituye las filas 2, 4 y 5 de B por las filas 1, 2 y 3 de
A,
B=eye(size(A));
B([2 4 5],:)=A(1:3,:)
Se pueden realizar operaciones an ms complicadas, tales como la siguiente
7:
B=eye(size(A));
B(1:2,:)=[0 1; 1 0]*B(1:2,:)
Como nuevo ejemplo, se va a ver la forma de invertir el orden de los
elementos de un vector:
x=rand(1,5)
x=x(5:-1:1)
Obsrvese que por haber utilizado parntesis en vez de corchetes los valores
generados por el operador (:) afectan a los ndices del vector y no al valor de
sus elementos.
Para invertir el orden de las columnas de una matriz se puede hacer lo
siguiente:
A=magic(3)
A(:,3:-1:1)
aunque hubiera sido ms fcil utilizar la funcin fliplr(A), que es especfica
para ello.
Finalmente, hay que decir que A(:) representa un vector columna con las
columnas de A una detrs de otra. Se sustituyen las dos primeras filas de B por
el producto de dichas filas por una matriz de permutacin.
MATRIZ VACA A[ ]
Para MATLAB una matriz definida sin ningn elemento entre los corchetes es
una matriz que existe, pero que est vaca, o lo que es lo mismo que tiene
dimensin cero. Considrense los siguientes ejemplos de aplicacin de las
matrices vacas:
A=magic(3)
B=[ ]
exist(B)
isempty(B)
A(:,3)=[ ]
Las funciones exist() e isempty() permiten chequear si una variable existe y si
est vaca. En el ltimo ejemplo se ha eliminado la 3 columna de A
asignndole la matriz vaca.
prod(x)
producto de los elementos de un vector
cumprod(x)
devuelve el vector producto acumulativo de los
elementos de un vector [y,i]=sort(x) ordenacin de menor a mayor de los
elementos de un vector x.
Devuelve el vector ordenado y, y un vector i con las posiciones iniciales en x
de los elementos en el vector ordenado y.
En realidad estas funciones se pueden aplicar tambin a matrices, pero en ese
caso se aplican por separado a cada columna de la matriz, dando como valor
de retorno un vector resultado de aplicar la funcin a cada columna de la
matriz considerada como vector. Si estas funciones se quieren aplicar a las
filas de la matriz basta aplicar dichas funciones a la matriz traspuesta.
FUNCIONES QUE ACTAN SOBRE MATRICES
Las siguientes funciones exigen que el/los argumento/s sean matrices. En este
grupo aparecen algunas de las funciones ms tiles y potentes de MATLAB.
Se clasificarn en varios subgrupos:
FUNCIONES MATRICIALES ELEMENTALES:
B = A' calcula la traspuesta (conjugada) de la matriz A
B = A.' calcula la traspuesta (sin conjugar) de la matriz A
v = poly(A) devuelve un vector v con los coeficientes del polinomio
caracterstico de la matriz cuadrada A
t = trace(A) devuelve la traza t (suma de los elementos de la diagonal) de una
matriz cuadrada A
[m,n] = size(A) devuelve el nmero de filas m y de columnas n de una matriz
rectangular A
n = size(A) devuelve el tamao de una matriz cuadrada A
FUNCIONES MATRICIALES ESPECIALES
Las funciones exp( ), sqrt( ) y log( ) se aplican elemento a elemento a las
matrices y/o vectores que se les pasan como argumentos. Existen otras
funciones similares que tienen tambin sentido cuando se aplican a una matriz
como una nica entidad. Estas funciones son las siguientes (se distinguen
porque llevan una "m" adicional en el nombre):
expm(A) si A=XDX, expm(A) = X*diag(exp(diag(D)))*X
sqrtm(A) devuelve una matriz que multiplicada por s misma da la matriz A
logm() es la funcin recproca de expm(A)
Aunque no pertenece a esta familia de funciones, se puede considerar que el
operador potencia (^) est emparentado con ellas. As, es posible decir que:
A^n est definida si A es cuadrada y n un nmero real. Si n es entero, el
resultado se calcula por multiplicaciones sucesivas. Si n es real, el
resultado se calcula como: A^n=X*D.^n*X' siendo [X,D]=eig(A)
CLCULO DEL RANGO, NORMAS Y CONDICIN NUMRICA:
Existen varias formas de realizar estos clculos, con distintos niveles de
esfuerzo de clculo y de precisin en el resultado.
El rango se calcula implcitamente (sin que el usuario lo pida) al ejecutar las
funciones rref(A), orth(A), null(A) y pinv(A). Con rref(A) el rango se
calcula como el nmero de filas diferentes de cero; con orth(A) y null(A)
basadas ambas en la descomposicin QR el rango es el nmero de columnas
del resultado (o n menos el nmero de columnas del resultado).
Con pinv(A) se utiliza la descomposicin de valor singular, que es el mtodo
ms fiable y ms caro en tiempo de cpu. La funcin rank(A) est basada en
pinv(A).
Normas de matrices:
norm(A) norma sub-2, es decir, mximo valor singular de A, max(svd(A)).
normest(A) calcula una estimacin o aproximacin de la norma sub-2. til
para matrices grandes en las que norm(A) necesita demasiado tiempo
norm(A,2) lo mismo que norm(A)
-4 -6 -4
4 0 4
4 -4 -7
>> diary on
>> D=A+4*B
D=
21 6 15
37 10 40
35 20 38
>> E=A.*B
E=
5 2 9
40 4 64
49 16 18
>> diary off
>> F=A/B
F=
-0.2500 -0.3750 0.7500
-1.3125 1.2813 0.1875
3.9375 -2.8438 1.4375
Luego abriendo el archivo en:
C:\MATLAB7\work\malca.txt
disp(A+B),disp(A-B)
disp('El producto A*B, la division A/B es :')
disp(A*B),disp(A/B)
temp=[25.6 33.7 34.1 35.6 36.8]
fprintf('la temperatura en la maana es %e grados F \n',temp)
fprintf('la temperatura en la maana es %f grados F \n',temp)
fprintf('la temperatura en la maana es %g grados F \n',temp)
fprintf('la temperatura en la maana es \n %g grados F \n',temp)
visualizaremos:
>> malca
cual es tu nombre: Miriam
tus apellidos son:
Estrada Huancas
de que orden son las matrices cuadradas A y B:
4
ingrese la matriz A :
[1 2 3 4;3 5 1 7;6 1 3 5;7 0 5 1]
A=
1 2 3 4
3 5 1 7
6 1 3 5
7 0 5 1
ingrese la matriz B :
[9 2 3 4;3 5 8 7;1 1 3 5;7 0 5 0]
B=
9 2 3 4
3 5 8 7
1 1 3 5
7 0 5 0
la suma A+B, la resta A-B es :
10 4 6 8
6 10 9 14
7 2 6 10
14
10
-8
0
5
0
0 0
0 -7
0 0
0 0
1
0
0
0
1
la temperatura en la maana es
33.7 grados F
la temperatura en la maana es
34.1 grados F
la temperatura en la maana es
35.6 grados F
la temperatura en la maana es
36.8 grados F
III POLINOMIOS
Un polinomio de grado n es una expresin de la forma:
Pn(x) = anxn + an-1xn-1 + an-2xn-2 + . . . + a1x1 +a0
Donde los coeficientes del polinomio estn definidos en Matlab como vectores fila en forma
descendente.
Sea el polinomio: P4(x) = 5x4 - 7x3 + 4x2 + 6x 5, en Matlab se tiene como sigue:
>> p=[5 -7 4 6 -5]
p = 5 -7 4 6
>>
-5
0.7778 + 1.0216i
0.7778 - 1.0216i
0.7049
Obteniendo el polinomio original a partir de las raices:
>> q=poly(Races)
q = 1.0000 -1.4000
0.8000
1.2000 -1.0000
Como el polinomio original tenia el coeficiente mas alto 5, solo hay que multiplicar el vector
por el nmero 5. Y asi tenemos:
>> p=5*q
p = 5.0000 -7.0000
4.0000
6.0000 -5.0000
-9
Derivando un polinomio:
>> p=[5 -7 4
>> polyder(p)
-5]
ans = 20 -21
>> [a b]=residue(residuo,polos,k)
a = -0.0000 10.0000 20.0000
b = 1.0000 8.0000 19.0000 12.0000
La grfica es bastante sencilla, lo nico que hace Matlab es unir los diferentes
puntos con lneas rectas. Obviamente en el orden establecido.
Sean los siguientes datos tomados en un da de la temperatura ambiente. En la
estacin meteorolgica de la FACFYM-UNPRG.
N Orden
X x (horas)
Y y ( C)
01 02
02 04
21 22.4
03
06
27
04
08
28
05
10
30
06
12
32
07
14
31
08
16
30
09
18
27
10
20
26
11
22
24
12
24
20
GRAFICAS SIMPLES
Explicaremos el procedimiento para la creacin de los grficos simples en
dos dimensiones; identificando cada uno de los comandos de los programas en
MATLAB con lo siguiente:
Donde la primera lnea indica el intervalo dividido en partes iguales , cada una
de longitud 0.005. La segunda nos da la funcin y la tercera plotea la funcin
trazando lneas rectas entra cada par de puntos (x,f(x)).
r
g
b
w
rojo
verde
azul
blanco
negro
FORMA DE LINEA
.
Punto
lnea slida
o
crculos
:
punteado
x
marcas x
-.
Punto y raya
+
Cruces
-raya punteada
*
Asterisco
s
cuadrado
d
diamantes
v
Tringulo (arriba)
^
Tringulo (abajo)
<
Tringulo (izquierda)
>
Tringulo (derecha)
p
pentagrama
h
hexagrama
Obs: El comando
clf
borra la
figura actual de la pantalla de
grficos.
>> x=-20:1:20;
>> y=x.^3+6*x-7;
>> plot(x,y,'g*')
>> grid
>> title('grafico con linea
verde, en vez de linea va
*******')
f : R R3
clear,clf
xa=-2:0.2:2;
ya=-2:0.2:2;
[x,y]=meshgrid(xa,ya);
z=sin(x.^2+y.^2);
mesh(x,y,z)
title('grafico de z=sin(x.^2+y.^2)');
xlabel('eje x');
ylabel('eje y');
zlabel('eje z');
31
32
33
34
"
35 #
36 $
37 %
38 &
39 '
40 (
41 )
42 *
43 +
44 ,
45 46 .
47 /
48 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9
58 :
59 ;
60 <
61 =
62 >
63 ?
64 @
65 A
66 B
67 C
68 D
69 E
70 F
FORMATO ASCCI
71 G
111 o
151
72 H
112 p
152
73 I
113 q
153
74 J
75 K
76 L
77 M
78 N
79 O
80 P
81 Q
82 R
83 S
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
91 [
92 \
93 ]
94 ^
95 _
96 `
97 a
98 b
99 c
100 d
101 e
102 f
103 g
104 h
105 i
106 j
107 k
108 l
109 m
110 n
191 +
192 +
193 -
114 r
154
194 -
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
s
t
u
v
w
x
y
z
{
|
}
~
_
_
_
+
+
+
+
+
+