Actualizado el 25 de Mayo del 2019 (Publicado el 8 de Marzo del 2018)
1.060 visualizaciones desde el 8 de Marzo del 2018
140,9 KB
21 paginas
Creado hace 21a (11/01/2004)
Tutorial de Matlab.
Antonio Souto Iglesias.
Presentamos un tutorial de Matlab porque en C´alculo Num´erico es importante poder
realizar r´apidamente y con exactitud los c´alculos elementales que son necesarios para
los diferentes ejercicios. Matlab es una herramienta potent´ısima, casi est´andar para
c´alculos en muchas ramas de la Ingenier´ıa, y de uso razonablemente simple. Haremos
una descripci´on de los elementos b´asicos de Matlab y remitimos al estudiante interesado
a cualquier edici´on del manual de referencia del programa[2] para un mejor conocimiento
del mismo. Tambi´en es interesante el libro sobre Matlab de Higham y Higham[1] y
una buena referencia en castellano con ejemplos procedentes de problemas en C´alculo
Num´erico es el de Quintela[3].
1 Conceptos b´asicos.
Para arrancar Matlab, se procede como con cuaquier programa Windows, o sea, Inicio,
Programas, Matlab o Student Matlab caso de que utilicemos la versi´on educacional. Una
vez arrancado aparece el cursor con el s´ımbolo (>>) o (EDU >>), indicando que puedes
introducir ´ordenes. De hecho, en este tutorial, cuando veas este s´ımbolo, es que tienes
que introducir por teclado la orden que aparece escrita a la derecha del mismo.
La utilizaci´on m´as b´asica de Matlab es como calculadora 1. As´ı por ejemplo, puedes
calcular cos(5) · 27.3, para lo cual debes introducir2:
>>cos(5)*2^7.3
ans =
44.7013
Matlab mantiene en memoria el ´ultimo resultado. Caso de que ese c´alculo no se asigne a
ninguna variable, lo hace a una variable por defecto de nombre ans. Si quieres referirte
a ese resultado, hazlo a trav´es de la variable ans, y si no asignas ese nuevo c´alculo a
ninguna variable, volver´a a ser asignado a ans.
>>log(ans)
ans =
3.8000
En este momento os podr´ıais preguntar si este ha sido un logaritmo decimal o neperiano
(natural). Para saberlo, deb´eis pedir ayuda sobre el comando log utilizando:
>>help log
LOG
Natural logarithm.
LOG(X) is the natural logarithm of the elements of X.
Complex results are produced if X is not positive.
See also LOG2, LOG10, EXP, LOGM.
1Funcionando de este modo, es similar a una calculadora programable, aunque bastante m´as vers´atil.
2Los argumentos de las funciones trigonom´etricas siempre est´an en radianes.
2
Por defecto, los resultados aparecen con 4 cifras decimales. Si necesitares m´as precisi´on
en los resultados, puedes utilizar la orden format long y repite los c´alculos:
>>format long
Para recuperar una orden y ejecutarla otra vez o modificarla se usan la flechas arriba y
abajo del cursor ⇑, ⇓. Presionemos ⇑ hasta recuperar la orden:
>>cos(5)*2^7.3
ans =
44.70132670851334
Ejercicio 1.1 Realizar la siguiente operaci´on: 2.72.1 + log10 108.2.
Ejercicio 1.2 Realizar la siguiente operaci´on: e2.72.1+log10 108.2.
Caso de que necesit´eis referiros a determinados c´alculos pod´eis asignarlos a variables y
as´ı recuperarlos despu´es mediante esas variables. Por ejemplo, pod´eis con ⇑ recuperar la
orden cos(5) · 27.3 y asignar su valor a la variable x. Luego pod´eis utilizarla para otros
c´alculos.
>>x=cos(5)*2^7.3
x =
44.70132670851334
>>y=log(x)
y =
3.80000318145901
Ejercicio 1.3 Realizar la siguiente operaci´on: 2.72.1+log10 108.2 y asignarla a la variable
x.
Ejercicio 1.4 Realizar la siguiente operaci´on: e2.72.1+log10 108.2 y asignarla a la variable
t.
Como es muy f´acil recuperar ´ordenes previas podemos utilizar esta idea para simular los
t´erminos de una sucesi´on recurrente. Por ejemplo xn+1 = cos(xn)
>>x=0.2
x =
0.20000000000000
>>x=cos(x)
x =
0.98006657784124
>>x=cos(x)
x =
0.55696725280964
>>x=cos(x)
x =
3
0.84886216565827
>>x=cos(x)
x =
0.66083755111662
>>x=cos(x)
x =
0.78947843776687
>>x=cos(x)
x =
0.70421571334199
Ejercicio 1.5 Repetir la operaci´on anterior hasta que se estabilice el cuarto decimal de
x de un paso al siguiente.
Ejercicio 1.6 Cambiar el formato para que otra vez se vean s´olo cuatro decimales.
Ejercicio 1.7 Empezando por x = 100 repetir la operaci´on x = x − (x2 − 81)/2/x hasta
que se converja en el cuarto decimal. ¿Qu´e relaci´on hay entre el ´ultimo x y 81?
Ejercicio 1.8 Definir A como vuestro DNI. Empezando por x = 100 repetir la operaci´on
x = x − (x2 − A)/2/x hasta que se converja en el cuarto decimal. ¿A qu´e ha convergido
la sucesi´on?
A veces es bueno apagar y encender la ”calculadora”para borrar todo y empezar de
nuevo. Esto se hace con la orden clear. Hay que tener cuidado al utilizarla pues no
solicita confirmaci´on, y sus resultados son definitivos.
>>clear
>>x
??? Undefined function or variable ’x’.
Ejercicio 1.9 Preguntar el valor de A igual que acabamos de preguntar x. ¿Tiene sen-
tido el resultado?
2 Manejo de vectores.
Para crear y almacenar en memoria un vector v que tenga como componentes v1 = 0,
v2 = 2, v3 = 4, v4 = 6 y v5 = 8 podemos hacerlo componente a componente:
>>v(1)=0
v =
0
>>v(2)=2
v =
0
2
>>v(3)=4
4
v =
0
>>v(4)=6
v =
0
>>v(5)=8
v =
0
2
2
2
4
4
4
6
6
8
O, para simplificar la creaci´on de vectores, se puede definir un vector especificando su
primer elemento, un incremento, y el ´ultimo elemento. Matlab rellenar´a ese vector. As´ı
podemos definir igualmente el vector v como una secuencia que empieza en 0, avanza de
2 en 2 y que termina en el 8:
>> v = [0:2:8]
v =
>> v
v =
0
0
2
2
4
4
6
6
8
8
Si ponemos ; al final de una l´ınea de comandos, cuando pulsemos la tecla Enter para
ejecutarla, se ejecutar´a pero no mostrar´a el resultado. Esto es muy ´util algunas veces:
>> v = [0:2:8];
>> v
v =
0
2
4
6
8
Podemos construir el vector v editando directamente entre los corchetes las componentes
del vector v:
>>v = [0 2 4 6 8];
>> v
v =
0
2
4
6
8
Puedes acceder f´acilmente al contenido de una posici´on del vector, por ejemplo la primera.
>> v(1)
ans =
0
O modificarla:
>> v(1)=-3;
>> v
v =
-3
2
4
6
8
5
O hacer operaciones entre componentes, v2 · v3
5:
>> v(2)*v(5)^3
ans =
1024
Ejercicio 2.1 Calcular la suma de los elementos de v, elemento a elemento.
Para trasponer un vector una matriz se usa el ap´ostrofo que es el acento que est´a en la
misma tecla que el signo de interrogaci´on ”?”.
>> v’
ans =
-3
2
4
6
8
Como hemos comentado, para recuperar una orden y ejecutarla otra vez o modificarla se
usan la flechas arriba y abajo del cursor ⇑, ⇓. Presionemos ⇑ hasta recuperar la orden:
>> v(1)=-3;
Modifiqu´emosla para dejar el valor original
>> v(1)=0;
Al definir ese vector v de 5 componentes, en realidad lo que definimos es una matriz fila
de cinco columnas, o sea un matriz de 1x5. Esto lo podemos comprobar si preguntamos
el tama˜no de v utilizando la sentencia size:
>>size(v)
ans =
1
5
que nos indica que v tiene una fila y 5 columnas.
Ejercicio 2.2 Definir un nuevo vector que sea el traspuesto de v y aplicar a ese vector
el comando size. ¿Es coherente el resultado?
3 Introducci´on al tratamiento de matrices.
Haremos una introducci´on a la definici´on y manipulaci´on de matrices. Se supone que
has seguido la secci´on anterior y dispones de los conocimientos b´asicos sobre la definici´on
y manipulaci´on de vectores usando Matlab. Definir una matriz es muy similar a la
definici´on de un vector. Para definir una matriz, puedes hacerlo dando sus filas separadas
por un punto y coma (tener cuidado de poner los espacios en blanco!):
6
>> A = [ 1 2 3; 3 4 5; 6 7 8]
A =
1
3
6
2
4
7
3
5
8
o definirla directamente fila a fila3:
>> A = [ 1 2 3
3 4 5
6 7 8]
A =
1
3
6
2
4
7
3
5
8
Se puede modificar alguno de los elementos de la matriz A, accediendo a cualquiera de
sus posiciones, por ejemplo:
>> A(2,2)=-9
A =
1
3
6
2
-9
7
3
5
8
Dejemos su valor original:
>> A(2,2)=4;
De igual modo, puedes considerarla como una fila de vectores columna:
>> B = [ [1 2 3]’ [2 4 7]’ [3 5 8]’]
B =
1
2
3
2
4
7
3
5
8
(Otra vez, es importante colocar los espacios en blanco.)
Ejercicio 3.1 Sumar los elementos diagonales de la matriz A, refiri´endonos a ellos,
elemento a elemento.
Podemos sumar o restar matrices para tener otras matrices.
>>C=A+B
C =
2
5
9
4
8
14
6
10
16
3Esto es lo que yo suelo hacer.
7
Ejercicio 3.2 Definir la matriz D = 2B − A.
Tambi´en podemos multiplicarlas.
>>C=A*B
C =
14
26
44
31
57
96
37
69
117
Ejercicio 3.3 Definir la matriz D = B − A · B.
Ejercicio 3.4 Definir la matriz C = AAt.
Podemos definir algunos tipos especiales de matrices, como por ejemplo una matriz de
3x3 que tenga todos sus elementos nulos.
>>I=zeros(3)
I =
0
0
0
0
0
0
0
0
0
Podemos modificar sus elementos diagonales para tener la matriz identidad, para lo cual
debes usar ⇑ para modificar la definici´on del primer elemento, cambiando los ´ındices para
definir los dem´as.
>>I(1,1)=1;
>>I(2,2)=1;
>>I(3,3)=1
I =
1
0
0
0
1
0
0
0
1
Ejercicio 3.5 Definir la matriz D = B − A · B como D = B(I − A).
Otra forma de definir la matriz identidad es a trav´es de la funci´on diag, que recibe un
vector que convierte en diagonal de una matriz cuyos otros elementos son nulos.
>>J=diag([1 1 1])
J =
1
0
0
0
1
0
0
0
1
Ejercicio 3.6 Definir una matriz D diagonal cuyos elementos sean −2, 1, 0.2 y −0.7.
Ejercicio 3.7 Pedir ayuda de la funci´on eye, y definir la matriz diagonal de 10x10.
8
3.1 Definici´on de submatrices.
Se pueden definir “subvectores” o submatrices muy facilmente. Si definimos v como:
>> v = [0:2:8]
v =
0
2
4
6
8
Podemos definir un vector e que sean las tres primeras componentes del vector v como:
>> e=v(1:1:3)
e =
0
2
4
Esta orden es equivalente a la siguiente, pues cuando el incremento es la unidad:
>> e=v(1:3)
e =
0
2
4
Como comentamos al principio, la notaci´on usada por Matlab sigue en lo posible la
notaci´on est´andar de ´Algebra Lineal que ya conoc´eis. Es muy sencillo multiplicar matrices
y vectores, teniendo cuidado de que las dimensiones sean las adecuadas.
>> A*v(1:3)
??? Error using == *
Inner matrix dimensions must agree.
>> A*v(1:3)’
ans =
16
28
46
Acost´umbrate a ver ese mensaje de error! Una vez que empiezas a trabajar con vectores
y matrices,
Comentarios de: Tutorial de Matlab (0)
No hay comentarios