Práctica 1

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 11

Grados de la EPSE

Prácticas de Matlab
Práctica 1

1. Introducción
Matlab es el nombre abreviado de “MATrix LABoratory” . Matlab es un programa
pensado para realizar cálculos numéricos con vectores y matrices. Como caso particular
puede trabajar con números escalaras, tanto reales como complejos. Una de las capaci-
dades más atractivas es la facilidad para la representación de grá…cos, así como, la variedad
tanto en dos como en tres dimensiones. Además MATLAB tiene un lenguaje propio de
programación.

2. Breve recordatorio de matrices y operaciones básicas con


Matlab
Para de…nir una matriz en MATLAB, basta con introducir entre corchetes todos sus
vectores …la separados por punto y coma o por cambio de línea. Los vectores se pueden
introducir separando sus componentes por espacios en blanco o por comas.
El vector o matriz se lo podemos asignar a una variable. MATLAB distingue entre
mayúsculas y minúsculas en los nombres de las variables, que podrán tener hasta 31
letras y números. El nombre de la variable comenzará siempre por una letra.
La sintaxis de un vector es la siguiente:

vector=[a, b, c, d,. .., m]


vector=[a b c d . .. m]

De…ne un vector …la, cuyos elementos son los valores a, b,c,d, m.

vector=[a; b; c; d; ...; m]
vector=[a
b
c
d
...
m]

De…ne un vector columna, cuyos elementos son los valores a, b, c,d, m.

1
En resumen, las comas o espacios separan elementos de un vector …la, mientras que
el punto y coma o el cambio de línea separa las …las. MATLAB indica un error cuando
las …las tienen diferente número de elementos.

La sintaxis de un matriz es la siguiente:

Matriz= [a11 ; a12 ; :::; a1n ; a21 ; a22 ; :::; a2n ; :::; am1 ; am2 ; :::; amn ]
Matriz=[a11 ; a12 ; :::; a1n
a21 ; a22 ; :::; a2n
...
am1 ; am2 ; :::; amn ]

De…ne una matriz de m …las y n columnas.


Al igual que antes, en lugar de comas se puede poner espacios.

Algunas operaciones básicas con matrices son las siguientes:

A0 o transpose(A): Traspuesta de una matriz (At = A0 )


n división por la izquierda de escalares o matrices (AnB = A 1 B)
/ división por la derecha de escalares o matrices ( A=B = A B 1 )
inv(A): Inversa de una matriz cuadrada (A 1 = inv(A))
det(A): Calcula el determinante de una matriz cuadrada (determinate de A=det(A))
rank(A): Rango de la matriz A (Rango de A = rank(A))
[V; D] = eig(A): Valores y vectores propios de la matriz cuadrada A. V guarda los
vectores propios y D los valores propios. Si escribimos sólo eig(A) obtenemos los valores
propios
size(A) : Filas y columnas de la matriz A. El resultado es una vector …la, cuya primera
componente es el número de …las de A y la segunda el número de columnas
size(A; 1) : Número de …las de la matriz A
size(A; 2) : Número de columnas de la matriz A
length(x) : Longitud del vector x
diag(v) : Matriz diagonal con los elementos de v
eye(n) : Crea la matriz identidad de orden n
eye(m; n) : Crea la matriz identidad de orden m n.

Los comandos se deben escribir en la ventana de comandos (Command Window).


Si una expresión termina en ; su resultadose calcula pero no se imprime en pantalla.
Esto es especialmente útil cuando escribimos un programa en el que se efectúan una gran
cantidad de operaciones intermedias, pero sólo nos interesa el resultado …nal.
Por defecto una expresión se termina cuando se pulsa intro. Si deseamos continuar
en la siguiente línea (por ejemplo, por ser muy larga la expresión) tenemos que escribir
espacio y tres puntos ( ...) y después pulsar intro.
Podemos escribir también varias expresiones en una sola línea separándolas por comas
(,) o punto y coma (;).

2
Ejercicio 1 Introducir los siguientes matrices y vectores:
0 1
3
B4C
B C
x = (1 2 3 0 6); y = B
B1C
C
@2A
7
0 1 0 1
1224 122
A = @2 2 1 2A ; D = @2 5 1A
0104 018
Ejercicio 2 Calcular, cuando sea posible, las siguientes operaciones:
1. AD; x + y t ; x + y; At D 1 :
2. Teclear clc. ¿Cuál es el resultado?
3. Ejecutar los siguientes comandos
C =A+2
C = A + 2;

¿Cuál es la diferencia entre estas operaciones?


4. Ejecutar el comando t = 1 : 0.5 : 5. ¿Qué obtenemos? Obtener el vector z =
(1 5 9 13 17 ::: 45):
5. Ejecutar el comando t^2. ¿Por qué da error? ¿Qué ocurre si ponemos t:^2?
1
6. Calcular el vector d = .
t
7. Ejecutar los comandos [A D], [D; A0 ]. ¿Qué obtenemos?

También se pueden crear matrices eligiendo partes de matrices ya existentes. Tenemos


los siguientes comandos:
x(n): Devuelve el n-ésimo elemento del vector x
x([n,m,p]): Devuelve los elementos del vector x situados en las posiciones n-ésima,
m-ésima y p-ésima.
x(n:m): Devuelve los elementos del vector x situados entre el n-ésimo y el m-ésimo,
ambos inclusive
x(n:p:m): Devuelve los elementos del vector x situados entre el n-ésimo y el m-ésimo,
ambos inclusive pero separados de p en p unidades
A(m,n): Devuelve el elemento (m,n) de la matriz A (…la m y columna n)
A([m, n],[p, q]): Devuelve la submatriz de A formada por la intersección de las …las
n-ésima y m-ésima y las columnas p-ésima y q-ésima.
A(n,:): Devuelve la …la n-ésima de la matriz A
A(:,p): Devuelve la columna p-ésima de la matriz A
diag(A): Extrae la diagonal de la matriz A

3
Ejercicio 3 Realizar las siguientes operaciones:
1. Obtener un vector …la igual a la segunda …la de la matriz A;
2. Seleccionar del la matriz D la submatriz de orden 2 2 contenida en las dos primeras
…las y dos primeras columnas y asignársela a la matriz E.

Ejercicios para casa:


1. Calcular DA:
2. Hallar el número de …las y columnas de la matriz A:
3. Ejecutar el comando [x; y t ]: ¿Qué obtenemos?
4. Obtener un vector columna igual a la cuarta columna de la matriz A;
5. Calcular A1;2 D2;2 :

3. Precisión de los resultados


Los elementos de vectores y matrices son números reales almacenados en 8 bytes (53
bits para la mantisa y 11 para el exponente), lo que nos da entre 15 y 16 cifras decimales
de precisión.
Los resultados obtenidos en la pantalla por el programa MATLAB se pueden repre-
sentar con distinto grado de exactitud. A continuación se citan algunos de los comandos
que permiten aproximaciones numéricas:
format long: Ofrece los resultados con 16 cifras decimales
format short: Ofrece los resultados con 4 cifras decimales. Se trata del formato por
defecto de Matlab
format long e: Ofrece los resultados con 16 decimales más potencias de 10
format short e: Ofrece los resultados con 4 decimales más potencias de 10
format bank: Ofrece los resultados con 2 cifras decimales
format rat: Ofrece los resultados en forma de número racional aproximado
Por otro lado, MATLAB utiliza nombres especiales para números grades o números
especiales. Por ejemplo, si tratamos de calcular
1
0
MATLAB nos dará la respuesta nf, es decir, in…nito. Por otro lado, los resultados que nos
son números se representan por N aN . Por ejemplo, éste sería el resultado si intentamos
calcular una expresión indterminada como
0
:
0

Ejercicio 4 Calcular log (2) en los formatos long, short, long e.


1 1
Ejercicio 5 Calcular 3
+ 5
en forma de fracción.

4
4. Las funciones en MATLAB
Vamos a ver cómo se puede trabajar con funciones en MATLAB.

4.1. Funciones prede…nidas


En primer lugar, MATLAB tiene una amplia librería de funciones prede…nidas. A
continuación enumeramos algunas de ellas.

Funciones trigonométricas e hiperbólicas

Función trigonométrica Inversa


sin(Z) asin(Z)
cos(Z) acos(Z)
sec(Z) asec(Z)
csc(Z) acsc(Z)
tan(Z) atan(Z)
cot(Z) acot(Z)

sec=secante
csc=cosecante

Funciones exponenciales:
exp(Z): Función exponencial de base e
log(Z): Función logaritmo neperiano
sqrt(Z): Función raíz cuadrada
log10(Z): Función logaritmo decimal

Constantes especiales

pi : pnúmero
i= 1
a + bi : Número complejo con parte real a y parte compleja b

Funciones especí…cas de variable numérica

abs(Z): Módulo o valor absoluto


rem(a,b): Da el resto de la división entre los reales a y b
angle(Z): Argumento de un complejo
imag(Z): Parte imaginaria de un complejo
real(Z): Parte real de un complejo
conj(Z): Complejo conjugado
…x(x): Elimina la parte decimal del real x
‡oor(x): Redondea los decimales al menor entero más cercano
ceil(x): Redondea los decimales al mayor entero más cercano
round(x): El entero más próximo al real x

Polinomios

5
Para representar un polinomio en Matlab es su…ciente con introducir sus coe…cientes
en un vector …la. Por ejemplo, si p (x) = x3 + x + 1, pondremos

p = [1; 0; 1; 1]:

Los comandos más utilizados para el manejo de polinomios son los siguientes:
polyval(p,x): Valor de p en x
roots(p): Cálculo de las raíces

Ejercicio 6 Asignar el valor 10 a la variable x y calcular


p
ecos(x) 1 + tg(x):

Obtener el resultado con 16 cifras decimales.

Ejercicios para casa:

1. Asignar a z1 ; z2 los valores 3 + 2i y 5 + 2i y calcular

z1 z1 jz2 j Re(z1 ):

Re(z1 ) indica la parte real del número complejo.

2. Hallar las raíces de p (x) = x5 + 4x4 + 2x2 + 1. Calcular p (4) :

4.2. Creación de funciones propias


Vamos a ver ahora cómo podemos crear en MATLAB nuestras propias funciones.
Para crear la función de k variables f (x1 ; x2 ; :::; xk ) utilizamos el siguiente comando:

f = inline(0 f uncion0 ;0 x01 ; :::;0 x0k )

o simplemente
f = inline(0 f uncion0 ):
Por ejemplo, para crear la función f (t; x) = t2 + x3 pondremos

f = inline(0 t^2 + x^30 ;0 t0 ;0 x0 )

o
f = inline(0 t^2 + x^30 ):
Cuando hay más de una variable es más conveniente el primer método, ya que así …jamos
nosotros el orden de las variables en la función.
Una vez de…nida la función podemos calcular el valor de la función en cualquier punto
al igual que con las funciones prede…nidas en MATLAB.

6
1
Ejercicio 7 De…nir la función f (x; y; z) = x2 +z
y 3 y calcular f (1; 3; 9) :

También podemos de…nir nuestra función de forma que se aplique a un vector o función
2
punto a punto. Por ejemplo, la función g (t) = et se puede de…nir como

g = inline(0 exp(t:^2)0 );

en cuyo caso sería válida tanto si t es un escalar como si es un vector o matriz.

Ejercicio 8 De…nir un vector t compuesto de todos los puntos desde 1 hasta 2 equiespa-
ciados y separados por una distancia de 0.1 unidades. Calcular el valor de g (t).

En algunas situaciones es necesario de…nir funciones dependientes de un parámetro.


En la función de…nida con el comando inline esto es complicado de realizar. Por ello,
vamos a ver otra forma de de…nir funciones en la que sí es factible.
La sintaxis es la siguiente

f = @ (x1 ; x2 ; :::; xn ) f uncion

Por ejemplo, para de…nir la función f (x; y) = x2 y pondremos

f = @(x; y) x^2 y;

o bien
f = @(x; y) x:^2: y;
si queremos calcular el valor de vectores.
Vamos a imaginar ahora que queremos que la función depende de un parámetro a. Por
ejemplo, f (x; y) = ax2 y. En primer lugar debemos asignar el valor de a, por ejemplo,

a = 2:

Después de…nimos la función

f = @(x; y) a x^2 y:

Si ponemos
f (2; 3)
el resultado que nos da es
24:
Si cambiamos el valor de a debemos de…nir de nuevo la función. Si no, la función seguirá
utilizando el valor antiguo de a:

Ejercicio 9 Calcular el valor de la función f (x; y; z) = a xy + bz 3 en (x; y; z) = (1; 4; 2)


para (a; b) = (1; 2).

7
5. Grá…cos
Matlab produce grá…cos de dos y tres dimensiones, así como contornos y grá…cos de
densidad. Se pueden representar los grá…cos y listar los datos, permite el control de colores,
sombreados y otras características de los grá…cos. Los grá…cos producidos por Matlab son
portables a otros programas.
Veamos los comandos de representación más usuales.
Para representar grá…camente una función utilizaremos el siguiente comando:

plot(X,Y): Representa el conjunto de puntos (X; Y ), donde X; Y son dos vectores.

Si queremos representar la función y = f (x) en un intervalo [a; b], construiremos


primero un vector que contega una subdivisión del intervalo con un paso pequeño:

x = a : paso : b:

En segundo lugar, calcularemos el vector y = f (x). Notemos que hemos de escribir la


función f de forma que se pueda calcular en vectores. Por ejemplo, si y = x2 pondremos

y = x:^2:

Notemos también que las funciones estándar de MATLAB (cos, sin, exp, log, etc.)
funcionan tanto con escalares como con vectores.

Ejercicio 10 Por ejemplo, si queremos representar la función y = x2 en el intervalo


[ 2; 2], efectuamos los siguientes pasos:

1. x = 2 : 0.01 : 2; crea el vector [ 2; 1.99; 1.98; :::; 1.98; 1.99; 2]:

2. y = x.^2; crea el vector [( 2)2 ; ( 1.99)2 ; ( 1.98)2 ; :::; (1.98)2 ; (1.99)2 ; 22 ]:

3. plot(x,y).

Es importante terminar los dos primeros comandos con ; para evitar que nos muestre
en pantalla los elementos de los vectores.

Podemos personalizar la grá…ca variando el color y los caracteres que se utilizan al


dibujar la grá…ca:

plot(X,Y,’S’): La misma grá…ca que plot(X,Y) con la opciones de…nidas en S.


Usualmente, S se compone de dos caracteres entre comillas simples, el primero de los
cuales …ja el color de la línea del grá…co, mientras que el segundo …ja el carácter a usar
en el gra…cado.

Algunos de los valores posibles de colores y caracteres son, respectivamente, los sigu-
ientes:
Colores
y amarillo m magenta r rojo c cyan
g verde b azul w blanco k negro

8
Caracteres
línea
. puntos x x-marcas + signo más * estrellas --
discontinua
o círculos - sólidos : líneas a puntos -. Guiones y puntos

Ejercicio 11 Teclear plot(x; y;0 gx0 ): ¿Qué obtenemos?

En la grá…ca se pueden añadir titulos, etiquetas, mallas y textos:


title(‘texto’): Añade el texto como título del grá…co en la parte superior del mismo
en grá…cos 2-D y 3-D
xlabel(‘texto’): Sitúa el texto al lado del eje x en grá…co 2-D y 3-D
ylabel(‘texto’): Sitúa el texto al lado del eje y en grá…cos 2-D y 3-D
zlabel(‘texto’): Sitúa el texto al lado de eje z en un grá…co 3-D
text(x,y,’texto’): Sitúa el texto en el punto (x,y) dentro del grá…co 2-D
gtext(‘texto’): Permite situar el texto en un punto seleccionado con el ratón dentro
de un grá…co 2-D
grid: Sitúa rejillas en los ejes de un grá…co 2-D o 3-D. La opción grid on coloca las
rejillas y grid o¤ las elimina. La opción grid permuta entre on y o¤
hold: Permite mantener el grá…co existente con todas sus propiedades, de modo que el
siguiente grá…co que se realice se sitúe sobre los mismos ejes y se superponga al existente.
La opción hold on activa la opción y hold o¤ la elimina. La opción hold permuta entre
on y o¤. Válido para 2-D y 3-D.
En 3D hay que poner el comando hold on después de dibujar el primer grá…co, ya
que si ponemos primero hold on, entonces se generará un grá…co bidimensional, y ya no
podremos obtener la grá…ca en tres dimensiones.
…gure(n): Hace que la ventana n pase a ser la ventana activa. Si dicha ventana no
existe, se crea una nueva ventana con el número n. La función close cierra la …gura activa,
mientras que close(n) cierra la ventana número n.
…gure(gcf): hace que la ventana activa aparezca

A continuación se presentan comandos que permiten manipular los ejes de un grá…co, la


colocación del mismo dentro de la pantalla, su apariencia, su presentación desde distintos
puntos de vista, etc.
axis([xmin xmax ymin ymax]): Sitúa los valores máximo y mínimo para los ejes
X e Y en el grá…co actual
axis(‘auto’): Sitúa los ejes en la escala automática por defecto (la dada por xmin=min(x),
xmax=max(x) e y libre)
axis(axis): Congela el escalado de ejes en los límites corrientes, de tal forma que al
situar otro grá…co sobre los mismo ejes (con hold en on), la escala no cambie
axis(‘equal’): Sitúa el mismo factor de escala para ambos ejes
axis(‘o¤’): Elimina las etiquetas y marcas de los ejes y las rejillas, manteniendo el
título del grá…co y los textos situados en él con text y gtext
axis(‘on’): Coloca de nuevo las etiquetas, marcas y rejillas de los ejes

9
Los comandos title, axis, etc. hay que ponerlos después de realizada la grá…ca con el
comando plot, y no antes, a menos que esté activada la opción hold on:
Otra forma de representar grá…camente una función es usando el comando ezplot. La
sintaxis es:
ezplot(0 f (x)0 ; [x1 ; x2 ]):

Ejercicio 12 Realizar los siguientes pasos:


x
1. Usando el comando plot representar en color rojo la función f (x) = e en el
intervalo [ 3; 3] :

2. Usando el comando ezplot representar la función g (x) = ex en el mismo intervalo

3. Fijar los siguientes ejes: [ 3; 3] [ 5; 20] :

4. Añadir los nombres a los ejes con los comandos xlabel e ylabel.

5. Escribir text( 2; 12;0 e^f xg0 ), text(2; 12;0 e^fxg0 ):¿Qué ocurre?

6. Añadir el título: Funciones ex y e x :

Finalmente, podemos dividir una ventana grá…ca en m particiones horizontales y n


verticales para colocar múltiples grá…cas en ella:
subplot(m,n,p): Divide la ventana grá…ca en m n subventanas y coloca el grá…co
corriente en la ventana p-ésima, empezando a contar por la parte superior izquierda y de
izquierda a derecha hasta acabar la línea, para pasar a la siguiente

Es importante utilizar los comandos vistos anteriormente (hold on, axis, etc. después
de cada comando subplot, y no antes. Además, estos comandos habrá que usarlos cada
vez que cambiemos a una nueva subgrá…ca.

Ejercicio 13 Sin cerrar la ventana anterior, teclear f igure(2) y subplot(1; 3; 1). Dibujar
de nuevo la grá…ca de la función f (x) = e x del ejercicio 12. Poner el título f (x) : ¿Qué
ocurre?

Ejercicio 14 Teclear subplot(1; 3; 2) y dibujar en las segunda partición la función g (x) =


ex del ejercicio 12. Poner el título g (x).

A continuación vamos a representar grá…camente una función de dos variables. Obvi-


amente necesitamos un grá…co en tres dimensiones. Urilizaremos el comando ezsurf: La
sintaxis es:
ezsurf (0 f (x; y)0 ; [x1 x2 ]; [y1 y2 ])
Matlab utiliza orden alfabético en las variables.

Ejercicio 15 Dibujar la grá…ca del paraboloide z = 1 x2 y 2 en (x; y) 2 [ 2; 2] [ 3; 3]:


Ponerle un título a la grá…ca. Añadirle las etiquetas de los ejes y escribir el texto "f (x; y)"
en el punto (0; 0; 3.5).

10
También podemos dibujar curvas en el espacio usando el comando plot3.

plot3(X,Y,Z): Representa el conjunto de puntos (X; Y; Z), donde X; Y; Z son tres


vectores.

Ejercicio 16 Para representar en el mismo gra…co que antes (en color rojo y con los ejes
[ 2; 2] [ 2; 2] [0; 15]) la hélice r (t) = (cos (t) ; sen (t) ; t), 0 t 8 , ejecutar los
siguientes comandos:

1. t = 0 : 0.01 : 8 pi;

2. x = cos (t) ; y = sin (t) ; z = t;

3. plot3(x; y; z;0 r0 )

4. axis([ 2 2 2 2 0 20])

Es importante recordar que el comando hold on hay que usarlo después de haber
hecho la primera grá…ca. Si lo hacemos antes, se dibujará un grá…co en 2D.

Ejercicios para casa:

1. Representar la función y = x2 en el intervalo [ 2; 2] en color rojo y con asteriscos.

2. Fijar los ejes x 2 [ 2; 2]; y 2 [ 2; 2] , z 2 [0; 30]; y dibujar en el mismo grá…co


junto a la hélice del ejercicio 16 la curva r (t) = (t; t4 ; t), 0 t 3:

11

También podría gustarte