Está en la página 1de 15

Grado en Ingeniera de Tecnologas de

Telecomunicacin
Prcticas de Matlab
Prctica 1
1. Introduccin
Matlab es el nombre abreviado de MATrix LABoratory . Matlab es un programa
pensado para realizar clculos numricos con vectores y matrices. Como caso particular
puede trabajar con nmeros escalaras, tanto reales como complejos. Una de las capaci-
dades ms atractivas es la facilidad para la representacin de grcos, as como, la variedad
tanto en dos como en tres dimensiones. Adems MATLAB tiene un lenguaje propio de
programacin.
2. Breve recordatorio de matrices y operaciones bsicas con
Matlab
Para denir una matriz en MATLAB, basta con introducir entre corchetes todos sus
vectores la separados por punto y coma o por cambio de lnea. 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
maysculas y minsculas en los nombres de las variables, que podrn tener hasta 31
letras y nmeros. 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]
Dene 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]
Dene 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 lnea separa las las. MATLAB indica un error cuando
las las tienen diferente nmero de elementos.
La sintaxis de un matriz es la siguiente:
Matriz= [a
11
, a
12
, ..., a
1n
; a
21
, a
22
, ..., a
2n
; ...; a
m1
, a
m2
, ..., a
mn
]
Matriz=[a
11
, a
12
, ..., a
1n
a
21
, a
22
, ..., a
2n
...
a
m1
, a
m2
, ..., a
mn
]
Dene una matriz de m las y n columnas.
Al igual que antes, en lugar de comas se puede poner espacios.
Algunas operaciones bsicas con matrices son las siguientes:
A

o transpose(A): Traspuesta de una matriz (A


t
= A

)
\ divisin por la izquierda de escalares o matrices (A\B = A
1
B)
/ divisin 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 slo 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 nmero de las de A y la segunda el nmero de columnas
size(A, 1) : Nmero de las de la matriz A
size(A, 2) : Nmero 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 expresin termina en ; su resultadose calcula pero no se imprime en pantalla.
Esto es especialmente til cuando escribimos un programa en el que se efectan una gran
cantidad de operaciones intermedias, pero slo nos interesa el resultado nal.
Por defecto una expresin se termina cuando se pulsa intro. Si deseamos continuar
en la siguiente lnea (por ejemplo, por ser muy larga la expresin) tenemos que escribir
espacio y tres puntos ( ...) y despus pulsar intro.
Podemos escribir tambin varias expresiones en una sola lnea separndolas por comas
(,) o punto y coma (;).
2
Ejercicio 1 Introducir los siguientes matrices y vectores:
x = (1 2 3 0 6), y =

3
4
1
2
7

A =

1 2 2 4
2 2 1 2
0 1 0 4

, D =

1 2 2
2 5 1
0 1 8

Ejercicio 2 Calcular, cuando sea posible, las siguientes operaciones:


1. AD, x + y
t
, x + y, A
t
D
1
.
2. Teclear clc. Cul es el resultado?
3. Ejecutar los siguientes comandos
C = A + 2
C = A + 2;
Cul 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 t2. Por qu da error? Qu ocurre si ponemos t.2?
6. Calcular el vector d =
1
t
.
7. Ejecutar los comandos [A D], [D; A

]. Qu obtenemos?
Tambin 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 interseccin 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 22 contenida en las dos primeras
las y dos primeras columnas y asignrsela a la matriz E.
Ejercicios para casa:
1. Calcular DA.
2. Hallar el nmero 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 A
1,2
D
2,2
.
3. Precisin de los resultados
Los elementos de vectores y matrices son nmeros 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 precisin.
Los resultados obtenidos en la pantalla por el programa MATLAB se pueden repre-
sentar con distinto grado de exactitud. A continuacin se citan algunos de los comandos
que permiten aproximaciones numricas:
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 ms potencias de 10
format short e: Ofrece los resultados con 4 decimales ms potencias de 10
format bank: Ofrece los resultados con 2 cifras decimales
format rat: Ofrece los resultados en forma de nmero racional aproximado
Por otro lado, MATLAB utiliza nombres especiales para nmeros grades o nmeros
especiales. Por ejemplo, si tratamos de calcular
1
0
MATLAB nos dar la respuestanf, es decir, innito. Por otro lado, los resultados que nos
son nmeros se representan por NaN. Por ejemplo, ste sera el resultado si intentamos
calcular una expresin indterminada como
0
0
.
Ejercicio 4 Calcular log (2) en los formatos long, short, long e.
Ejercicio 5 Calcular
1
3
+
1
5
en forma de fraccin.
4
4. Las funciones en MATLAB
Vamos a ver cmo se puede trabajar con funciones en MATLAB.
4.1. Funciones predenidas
En primer lugar, MATLAB tiene una amplia librera de funciones predenidas. A
continuacin enumeramos algunas de ellas.
Funciones trigonomtricas e hiperblicas
Funcin trigonomtrica Inversa
sin(Z) asin(Z)
cos(Z) acos(Z)
sec(Z) atan(Z)
csc(Z) asec(Z)
tan(Z) acsc(Z)
cot(Z) acot(Z)
sec=secante
csc=cosecante
Funciones exponenciales:
exp(Z): Funcin exponencial de base e
log(Z): Funcin logaritmo neperiano
sqrt(Z): Funcin raz cuadrada
log10(Z): Funcin logaritmo decimal
Constantes especiales
pi : nmero
i =

1
a + bi : Nmero complejo con parte real a y parte compleja b
Funciones especcas de variable numrica
abs(Z): Mdulo o valor absoluto
rem(a,b): Da el resto de la divisin 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 ms cercano
ceil(x): Redondea los decimales al mayor entero ms cercano
round(x): El entero ms prximo al real x
Polinomios
5
Para representar un polinomio en Matlab es suciente con introducir sus coecientes
en un vector la. Por ejemplo, si p (x) = x
3
+ x + 1, pondremos
p = [1, 0, 1, 1].
Los comandos ms utilizados para el manejo de polinomios son los siguientes:
polyval(p,x): Valor de p en x
roots(p): Clculo de las races
Ejercicio 6 Asignar el valor 10 a la variable x y calcular
e
cos(x)1
+

tg(x).
Obtener el resultado con 16 cifras decimales.
Ejercicios para casa:
1. Asignar a z
1
, z
2
los valores 3 + 2i y 5 + 2i y calcular
z
1
z
1
|z
2
| Re(z
1
).
Re(z
1
) indica la parte real del nmero complejo.
2. Hallar las races de p (x) = x
5
+ 4x
4
+ 2x
2
+ 1. Calcular p (4) .
4.2. Creacin de funciones propias
Vamos a ver ahora cmo podemos crear en MATLAB nuestras propias funciones.
Para crear la funcin de k variables f (x
1
, x
2
, ..., x
k
) utilizamos el siguiente comando:
f = inline(

funci on

1
, ...,

k
)
o simplemente
f = inline(

funci on

).
Por ejemplo, para crear la funcin f (t, x) = t
2
+ x
3
pondremos
f = inline(

t2 + x3

)
o
f = inline(

t2 + x3

).
Cuando hay ms de una variable es ms conveniente el primer mtodo, ya que as jamos
nosotros el orden de las variables en la funcin.
Una vez denida la funcin podemos calcular el valor de la funcin en cualquier punto
al igual que con las funciones predenidas en MATLAB.
6
Ejercicio 7 Denir la funcin f (x, y, z) =
1
x
2
+z
y
3
y calcular f (1, 3, 9) .
Tambin podemos denir nuestra funcin de forma que se aplique a un vector o funcin
punto a punto. Por ejemplo, la funcin g (t) = e
t
2
se puede denir como
g = inline(

exp(t.2)

),
en cuyo caso sera vlida tanto si t es un escalar como si es un vector o matriz.
Ejercicio 8 Denir 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 denir funciones dependientes de un parmetro.
En la funcin denida con el comando inline esto es complicado de realizar. Por ello,
vamos a ver otra forma de denir funciones en la que s es factible.
La sintaxis es la siguiente
f = @(x
1
, x
2
, ..., x
n
) funci on
Por ejemplo, para denir la funcin f (x, y) = x
2
y pondremos
f = @(x, y) x2 y,
o bien
f = @(x, y) x.2. y,
si queremos calcular el valor de vectores.
Vamos a imaginar ahora que queremos que la funcin depende de un parmetro a. Por
ejemplo, f (x, y) = ax
2
y. En primer lugar debemos asignar el valor de a, por ejemplo,
a = 2.
Despus denimos la funcin
f = @(x, y) a x2 y.
Si ponemos
f (2, 3)
el resultado que nos da es
24.
Si cambiamos el valor de a debemos denir de nuevo la funcin. Si no, la funcin seguir
utilizando el valor antiguo de a.
Ejercicio 9 Calcular el valor de la funcin f (x, y, z) = a
x
y
+ bz
3
en (x, y, z) = (1, 4, 2)
para (a, b) = (1, 2).
7
5. Grcos
Matlab produce grcos de dos y tres dimensiones, as como contornos y grcos de
densidad. Se pueden representar los grcos y listar los datos, permite el control de colores,
sombreados y otras caractersticas de los grcos. Los grcos producidos por Matlab son
portables a otros programas.
Veamos los comandos de representacin ms usuales.
Para representar grcamente una funcin utilizaremos el siguiente comando:
plot(X,Y): Representa el conjunto de puntos (X, Y ), donde X, Y son dos vectores.
Si queremos representar la funcin y = f (x) en un intervalo [a, b], construiremos
primero un vector que contega una subdivisin del intervalo con un paso pequeo:
x = a : paso : b.
En segundo lugar, calcularemos el vector y = f (x). Notemos que hemos de escribir la
funcin f de forma que se pueda calcular en vectores. Por ejemplo, si y = x
2
pondremos
y = x.2.
Notemos tambin que las funciones estndar de MATLAB (cos, sin, exp, log, etc.)
funcionan tanto con escalares como con vectores.
Ejercicio 10 Por ejemplo, si queremos representar la funcin y = x
2
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
, 2
2
].
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 grca variando el color y los caracteres que se utilizan al
dibujar la grca:
plot(X,Y,S): La misma grca que plot(X,Y) con la opciones denidas en S.
Usualmente, S se compone de dos caracteres entre comillas simples, el primero de los
cuales ja el color de la lnea del grco, mientras que el segundo ja el carcter a usar
en el gracado.
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
. puntos x x-marcas + signo ms * estrellas
lneas
continuas
o crculos - slidos : lneas a puntos -. Guiones y puntos
Ejercicio 11 Teclear plot(x, y,

gx

). Qu obtenemos?
En la grca se pueden aadir titulos, etiquetas, mallas y textos:
title(texto): Aade el texto como ttulo del grco en la parte superior del mismo
en grcos 2-D y 3-D
xlabel(texto): Sita el texto al lado del eje x en grco 2-D y 3-D
ylabel(texto): Sita el texto al lado del eje y en grcos 2-D y 3-D
zlabel(texto): Sita el texto al lado de eje z en un grco 3-D
text(x,y,texto): Sita el texto en el punto (x,y) dentro del grco 2-D
gtext(texto): Permite situar el texto en un punto seleccionado con el ratn dentro
de un grco 2-D
grid: Sita rejillas en los ejes de un grco 2-D o 3-D. La opcin grid on coloca las
rejillas y grid o las elimina. La opcin grid permuta entre on y o
hold: Permite mantener el grco existente con todas sus propiedades, de modo que el
siguiente grco que se realice se site sobre los mismos ejes y se superponga al existente.
La opcin hold on activa la opcin y hold o la elimina. La opcin hold permuta entre
on y o. Vlido para 2-D y 3-D.
En 3D hay que poner el comando hold on despus de dibujar el primer grco, ya
que si ponemos primero hold on, entonces se generar un grco bidimensional, y ya no
podremos obtener la grca 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 nmero n. La funcin close cierra la gura activa,
mientras que close(n) cierra la ventana nmero n.
gure(gcf): hace que la ventana activa aparezca
A continuacin se presentan comandos que permiten manipular los ejes de un grco, la
colocacin del mismo dentro de la pantalla, su apariencia, su presentacin desde distintos
puntos de vista, etc.
axis([xmin xmax ymin ymax]): Sita los valores mximo y mnimo para los ejes
X e Y en el grco actual
axis(auto): Sita los ejes en la escala automtica por defecto (la dada por xmin=min(x),
xmax=max(x) e y libre)
axis(axis): Congela el escalado de ejes en los lmites corrientes, de tal forma que al
situar otro grco sobre los mismo ejes (con hold en on), la escala no cambie
axis(equal): Sita el mismo factor de escala para ambos ejes
axis(o): Elimina las etiquetas y marcas de los ejes y las rejillas, manteniendo el
ttulo del grco y los textos situados en l con text y gtext
axis(on): Coloca de nuevo las etiquetas, marcas y rejillas de los ejes
Los comandos title, axis, etc. hay que ponerlos despus de realizada la grca con el
comando plot, y no antes, a menos que est activada la opcin hold on.
9
Ejercicio 12 Representar grcamente en un mismo grco, en color rojo y azul, respec-
tivamente, las siguientes funciones en el intervalo [5, 5]:
f (x) = e
x
,
g (x) = x
3
x 1.
Utilizar los ejes [5, 5] [10, 10] .
Ejercicio 13 Sin cerrar el grco anterior, teclear figure(2). Crear la grca de h(x) =
x
4
en el intervalo [5, 5] .
Ejercicio 14 Teclear figure(1) y aadir a la primera grca el ttulo "Funcin exponen-
cial y polinomio cbico", los nombres de los ejes x e y y el texto f (x) (resp. g (x)) en el
punto (1.8, 1.5), (resp. (2, 2)).
Ejercicio 15 Teclear axis(o) y ver qu pasa. Restituir despus las etiquetas y marcas.
Finalmente, podemos dividir una ventana grca en m particiones horizontales y n
verticales para colocar mltiples grcas en ella:
subplot(m,n,p): Divide la ventana grca en m n subventanas y coloca el grco
corriente en la ventana p-sima, empezando a contar por la parte superior izquierda y de
izquierda a derecha hasta acabar la lnea, para pasar a la siguiente
Es importante utilizar los comandos vistos anteriormente (hold on, axis, etc. despus
de cada comando subplot, y no antes. Adems, estos comandos habr que usarlos cada
vez que cambiemos a una nueva subgrca.
Ejercicio 16 Teclear subplot(1, 3, 1) y dibujar de nuevo la grca de la funcin h(x) del
ejercicio 13. Poner el ttulo h(x) Qu ocurre?
Ejercicio 17 Dibujar en las dos particiones restantes las funciones f (x), g (x) del ejer-
cicio 12. Poner el ttulo f (x) y g (x) , respectivamente.
A continuacin vamos a representar grcamente una funcin de dos variables. Obvi-
amente necesitamos un grco en tres dimensiones. Urilizaremos el comando ezsurf. La
sintaxis es:
ezsurf(

f (x, y)

, [x
1
x
2
], [y
1
y
2
])
Ejercicio 18 Dibujar la grca del paraboloide z = 1x
2
y
2
en (x, y) [2, 2][3, 3].
Ponerle un ttulo a la grca. Aadirle las etiquetas de los ejes y escribir el texto "f(x, y)"
en el punto (0, 0, 3.5).
10
Asimismo, el comando ezsurf permite dibujar supercies parametrizadas. Por ejem-
plo, vamos a dibujar la esfera de radio 1. La parametrizacin de esta esfera es
r (u, v) =

sen(u) cos (v)


sen(u) sen(v)
cos (u)

, 0 u , 0 v 2.
Tecleamos el comando:
ezsurf(

sin(u) cos(v)

sin(u) sin(v)

cos(u)

, [0 pi 0 2 pi]);
Ejercicio 19 Dibujar en Matlab el cilindro de radio 2 y altura 10 :
r (u, v) =

2 cos (u)
2sen(u)
v

, 0 u 2, 0 v 10.
Tambin 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 20 Para representar en el mismo graco que antes (en color rojo y con los ejes
[2, 2] [2, 2] [0, 15]) la hlice 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,

)
4. axis([2 2 2 2 0 20])
Es importante recordar que el comando hold on hay que usarlo despus de haber
hecho la primera grca. Si lo hacemos antes, se dibujar un grco en 2D.
Ejercicios para casa:
1. Representar la funcin y = x
2
en el intervalo [2, 2] en color rojo y con asteriscos.
2. Fijar los ejes x [2, 2], y [2, 2] , z [0, 30], y dibujar en el mismo grco
junto a la hlice del ejercicio 20 la curva r (t) = (t, t
4
, t), 0 t 3.
11
6. Ecuaciones diferenciales de primer orden
Consideremos una ecuacin de primer orden en forma normal:
dy
dt
= f (t, y) (1)
con la condicin inicial
y (t
0
) = y
0
.
6.1. Resolucin numrica
Las funcin
[t, y] = ode45(g, [t
0
, t
1
], inicial),
devuelve un conjunto de coordenadas t e y que representan la solucin de la ecuacin en
el intervalo t [t
0
, t
1
], y que se calculan usando mtodos de Runge-Kutta de cuarto y
quinto orden.
Aqu
g = inline(

funci on

),
donde

funci on

es la funcin f en (1), t es la variable independiente e y la variable


dependiente..
Los valores de t
0
y t
1
especican los extremos del intervalo en el cual deseamos calcular
la solucin.
El valor inicial especica el valor inicial de la funcin en el extremo izquierdo del
intervalo, es decir, inicial=y (t
0
).
En este caso podemos utilizar indistintamente ., . y ./ o , y /. para el producto,
divisin y elevacin a una potencia.
Por ejemplo, si queremos resolver el problema y

= y t, y (1) = 2, en t [1, 3],


pondremos
[t, y] = ode45(inline(

y t

), [1, 3], 2).


Finalmente, notemos que si escribimos
ode45(g, [t
0
, t
1
], inicial),
entonces Matlab dibuja la grca de la solucin en lugar de dar datos numricos.
Ejercicio 21 Resolvemos la la ecuacin y

= 2ty en el intervalo [2, 2]. Teclear:


1. [t, y] = ode45(inline(

2 y t

), [2, 2], 2)
2. [t, y] = ode45(inline(

2 y t

), [2, 2], 2);


Qu obtenemos en cada caso?
Ejercicio 22 Vamos a dibujar de dos maneras varias soluciones de la ecuacin y

= 2ty
en el intervalo [2, 2].
1. Primera opcin. Tecleamos:
12
a) axis([-2,2,-20,25])
b) hold on
c) ode45(inline(

2 y t

), [2, 2], 10)


d) ode45(inline(

2 y t

), [2, 2], 10)


e) ode45(inline(

2 y t

), [2, 2], 15)


2. Segunda opcin. Tecleamos:
a) [t1, y1] = ode45(inline(

2 y t

), [2, 2], 10);


b) [t2, y2] = ode45(inline(

2 y t

), [2, 2], 10);


c) [t3, y3] = ode45(inline(

2 y t

), [2, 2], 15);


d) gure(2)
e) hold on
f) axis([-2,2,-20,25])
g) plot(t1,y1), plot(t2,y2), plot(t3,y3).
Notemos que al usar el comando ode45 Matlab escoge el valor del paso h. Podemos
saber cul este paso imprimiendo el archivo de tiempos t y viendo la diferencia entre dos
valores consecutivos. Sin embargo, hemos de tener en cuenta que Matlab no siempre coge
un tamao de paso jo, sino que este valor puede variar segn el momento del tiempo.
Ejercicio 23 Ejecutar [t, y] = ode45(inline(

2 y t

), [2, 2], 10) y ver que el paso


h no es jo. Para comprobarlo, podemos hacer lo siguiente:
1. Calculamos el nmero de las de t: [m, n] = size(t), donde m es el nmero de las.
2. Calcular algunos valores de h tecleando, por ejemplo, t (2) t (1), t (3) t (2) ,
t(m) t(m1), y cualquier t (j) t (j 1) con j m.
En muchas ocasiones hemos de resolver una ecuacin diferencial que depende de uno
o varios parmetros.
Por ejemplo, si queremos resolver el problema
y

= at
2
y, y (0) = 2,
en el intervalo [0, T] = [0, 10] con a = 3, pondremos
a = 3
[t, y] = ode45(@(t, y) a t2 y, [0, 10], 2)
En este caso no podremos utilizar el comando inline, ya que no permite el uso de parmet-
ros.
13
Ejercicio 24 Dada la ecuacin y

= aty + b en el intervalo [0, 2] con la condicin inicial


y (0) = 1:
1. Resolver la ecuacin para (a, b) = (1, 2) .
2. Dibujar el grco de la solucin.
Ejercicios para casa:
1. Dibujar en un grco distintas soluciones de la ecuacin y

= y+e
t
en el intervalo
[0, 10]. Elegid un tamao adecuado de los ejes. A qu convergen las soluciones
cuando t +?
2. Ejecutar [t, y] = ode45(inline(

1/y

), [2, 2], 1) y ver que el tamao de h no


es jo.
3. Dada la ecuacin y

= aty
2
en el intervalo [0, 0.9] con la condicin inicial y (0) = 1,
hallar la solucin para a = 2 y a = 2, y dibujar las dos soluciones en el mismo
grco con distintos colores.
6.2. Resolucin analtica
Para resolver de forma exacta ecuaciones diferenciales utilizaremos el comando dsolve.
Si queremos resolver una ecuacin de primer orden la sintaxis es la siguiente:
dsolve(

ecuaci on

)
o
dsolve(

ecuaci on

condici on inicial

).
En el primer caso se obtiene la solucin general, mientras que en el segundo la solucin del
problema de Cauchy. Para escribir la derivada
du
dt
en la ecuacin utilizaremos la expresin
Du. Por defecto, la variable independiente es t, pero se puede usar cualquier otra variable
de la siguiente forma:
dsolve(

ecuaci on

var

)
o
dsolve(

ecuaci on

condici on inicial

var

).
Si la variable independiente no es t, es indispensable indicar la variable.
Por ejemplo, para resolver la ecuacin
du
dt
= u
ponemos
u = dsolve(

Du = u

)
y se obtiene
u = C1 exp(t).
14
O bien, para utilizar x como variable independiente
dsolve(

Du = u

).
El resultado es
C1 exp(x).
En este ltimo caso, al no poner u = el resultado no se ha asignado a ninguna variable.
Si resolvemos el problema de Cauchy
du
dt
= u, u(0) = 1,
pondremos
u = dsolve(

Du = u

u(0) = 1

),
obteniendo
u = exp(t).
El resultado u es una variable de caracteres que se puede asignar a una funcin:
f = inline(u).
A partir de la funcin f se pueden calcular los valores de la solucin o dibujarla con el
comando plot.
Ejercicio 25 Dada la ecuacin
dy
dt
=
t
y
:
1. Hallar la solucin general.
2. Hallar la nica solucin del problema de Cauchy con y (0) = 1 y asignrsela a la
variable y.
3. Crear una funcin a partir de la solucin y calcular y (0,75).
4. Dibujar la solucin en verde en el intervalo [1, 1].
Las ecuaciones de orden superior se resuelven de manera similar. Por ejemplo, la
sintaxis en una ecuacin de segundo orden sera:
dsolve(

ecuaci on

),
dsolve(

ecuaci on

var

),
dsolve(

ecuaci on

condici on inicial_1

condici on inicial_2

)
o
dsolve(

ecuaci on

condici on inicial_1

condici on inicial_2

var

)
La sintaxis de las derivadas es la siguiente:
du
dt
= Du,
d
2
u
dt
2
= D2u,
d
3
u
dt
3
= D3u, etc.
Si la ecuacin es de orden n la nica diferencia es que se ponen n condiciones iniciales.
Ejercicio 26 Hallar la nica solucin del problema
y

2y + y = e
t
, y (0) = 1, y

(0) = 0.
15

También podría gustarte