Sei sulla pagina 1di 12

Ecuaciones Diferenciales Aplicadas.

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
capacidades ms atractivas es la facilidad para la representacin de grficos, as como, la variedad tanto en dos como en tres
dimensiones. Adems MATLAB tiene un lenguaje propio de programacin.
2. ENTRAR EN MatLab
Si aparece el icono de MATLAB como acceso directo en la pantalla inicial, es suficiente, pulsar sobre l con el ratn. En otro caso,
ser necesario buscarlo a partir del men de inicio.
Una vez iniciado MATLAB, nos encontramos con la pantalla de la figura 1, donde se observan los diferentes mens.
Tenemos las siguientes ventanas:
a. La ventana de comandos (Command Window);
b. La ventana histrica de comandos (Command History);
c. El espacio de trabajo (Workspace);
d. El directorio actual (Current Directory).
3. BREVE RECORDATORIO DE MATRICES Y OPERACIONES BSICAS CON MatLab
Para definir una matriz en MATLAB, basta con introducir entre corchetes todos sus vectores 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.

Figura 1: Pantalla de Matlab


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]
Define un vector fila, cuyos elementos son los valores a, b, c, d, m.
vector= [a; b; c; d; ...; m]
vector= [a
b
c
d

m]
Define un vector columna, cuyos elementos son los valores a, b, c, d, m.
En resumen, las comas o espacios separan elementos de un vector fila, mientras que el punto y coma o el cambio de lnea separa las
filas. MATLAB indica un error cuando las filas tienen diferente nmero 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]
Define una matriz de m filas 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 (At = 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 = i n v ( A ) )
det(A): Calcula el determinante de una matriz cuadrada (determnate de A = det(A))
ank(A): Rango de la matriz A (Rango de A = r a n k ( 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 un vector fila, cuya primera componente es el nmero de filas de A y la
segunda el nmero de columnas
size(A, 1) : Nmero de filas 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 x n.
Los comandos se deben escribir en la ventana de comandos (Command Window).
Si una expresin termina en ; su resultado se 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 final.
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 (;).
Ejercicio 1

Introducir los siguientes matrices y vectores:

Ejercicio 2

Calcular, cuando sea posible, las siguientes operaciones:

1. AD, DA, x + yt ,x + y, AtD-1.


A*D

D*A

x+ yt

x+y

A ^ t * D ^ -1

2. Teclear clc. Cul es el resultado?

3. Ejecutar los siguientes comandos

Cul es la diferencia entre las dos primeras operaciones?


R= En la primera se multiplica la matriz A por 2 y se muestra el resultado en ans.
En la segunda A+2 es el valor de la variable C, y como termina en ; no se muestra la operacin, sino hasta el tercer rengln, en donde
aparece el valor de la variable C.

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 ?


t^2

t.^2

6. Calcular el vector d=1/t

7. Ejecutar los comandos [A D ] , [ A , D ] . Q u obtenemos?

8. Ejecutar el comando [x;yt]. Qu obtenemos?

9. Hallar el nmero de filas y columnas de la matriz A.

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 rn-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 (fila m y columna n
A([m, n],[p, q]): Devuelve la submatriz de A formada por la interseccin de las filas n-sima y m-sima y las columnas p-sima
y q-sima.
A(n,:): Devuelve la fila 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
Ejercicio 3

Realizar las siguientes operaciones:

1. Obtener un vector fila igual a la segunda fila de la matriz A;

2. Obtener un vector columna igual a la cuarta columna de la matriz A;

3. Seleccionar de la matriz D la submatriz de orden 2 x 2 contenida en las dos primeras filas y dos primeras columnas y
asignrsela a la matriz E.

4. Calcular A1,2*D2,2.

4. 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 representar 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 respuesta nf, es decir, infinito. Por otro lado, los resultados que nos son nmeros se representan
por N aN. Por ejemplo, ste sera el resultado si intentarnos calcular una expresin indeterminada como:
0/0
Ejercicio 4

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

Long

short

Ejercicio 5

long e

Calcular 1/3+1/5 en forma de fraccin.

5. LAS FUNCIONES EN MATLAB


Vamos a ver cmo se puede trabajar con funciones en MATLAB.
5.1. Funciones predefinidas
En primer lugar, MATLAB tiene una amplia librera de funciones predefinidas. 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 = raz cuadrada de -1
a + bi : Nmero complejo con parte real a y parte compleja b
Funciones especficas 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
fix(x): Elimina la parte decimal del real x
floor(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
Para representar un polinomio en Matlab es suficiente con introducir sus coeficientes en un vector fila. 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


Obtener el resultado con 16 cifras decimales.

Ejercicio 7
Asignar a z1,z2 los valores 3 + 2i y 5 + 2i y calcular
R e ( z 1 ) indica la parte real del nmero complejo.
Ejercicio 8

Hallar las races de p ( x ) = x5 + 4x4 + 2x2 + 1. Calcular p (4)

5.2. Creacin de funciones propias


Vamos a ver ahora cmo podemos crear en MATLAB nuestras propias funciones. Para crear la funcin de k variables
utilizamos el siguiente comando:

o simplemente
Por ejemplo, para crear la funcin

pondremos

Cuando hay ms de una variable es ms conveniente el primer mtodo, ya que as fijamos nosotros el orden de las variables en la
funcin.
Una vez definida la funcin podemos calcular el valor de la funcin en cualquier punto al igual que con las funciones
predefinidas en MATLAB.

Ejercicio 9

Definir la funcin

y calcular

Tambin podemos definir nuestra funcin de forma que se aplique a un vector o funcin punto a punto. Por ejemplo, la
funcin g ( t ) = e t2 se puede definir como
en cuyo caso sera vlida tanto si t es un escalar como si es un vector o matriz.
Ejercicio 10
Definir un vector t compuesto de todos los puntos desde 1 hasta 2 equies- paciados y separados por una
distancia de 0,1 unidades. Calcular el valor de g ( t ) .
En algunas situaciones es necesario definir funciones dependientes de un parmetro. En la funcin definida con el comando
inline esto es complicado de realizar. Por ello, vamos a ver otra forma de definir funciones en la que s es factible.
La sintaxis es la siguiente
f = @ ( x 1 , x 2 , . . . , x n ) funcin
Por ejemplo, para definir la funcin f ( x , y ) = x 2 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 funcin depende de un parmetro a. Por ejemplo, f( x , y ) = a x 2 y .
En primer lugar debernos asignar el valor de a , por ejemplo,
a = 2.
Despus definimos la funcin
f=@(x,y)a*x^2*y.
Si ponemos
f(2,3)
el resultado que nos da es
24.
Si cambiarnos el valor de a debemos definir de nuevo la funcin. Si no, la funcin seguir utilizando el valor antiguo de a.

Ejercicio 11

Calcular el valor de la funcin


para (a,b) = (1,2) y (a,b) = (0,3).

6. GRFICOS
Matlab produce grficos de dos y tres dimensiones, as como contornos y grficos de densidad. Se pueden representar los
grficos y listar los datos, permite el control de colores, sombreados y otras caractersticas de los grficos. Los grficos producidos
por Matlab son portables a otros programas.
Veamos los comandos de representacin ms usuales.
Para representar grficamente 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 contenga 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 = x2 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 12

Por ejemplo, si queremos representar la funcin 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 grfica variando el color y los caracteres que se utilizan al dibujar la grfica:

plot(X,Y,'S'): La misma grfica que plot(X,Y) con la opciones definidas en S. Usualmente, S se compone de dos caracteres
entre comillas simples, el primero de los cuales fija el color de la lnea del grfico, mientras que el segundo fija el carcter a usar en
el graficado.

Algunos de los valores posibles de colores y caracteres son, respectivamente, los siguientes:
Colores
y amarillo

m magenta

r rojo

c cyan

g verde

b azul

w blanco

k negro

. puntos

x x-marcas

+ signo ms

o crculos

- slidos

: lneas a puntos

Caracteres
* estrellas

_lneas
continuas

-.Guiones y puntos

Ejercicio 13

Teclear plot(x , y,' gx'). Qu obtenemos?

Ejercicio 14

Representar la funcin y = x2 en el intervalo [-2,2] en color rojo y con estrellas.

En la grfica se pueden aadir titulos, etiquetas, mallas y textos:


title('texto'): Aade el texto como ttulo del grfico en la parte superior del mismo en grficos 2-D y 3-D
xlabel('texto'): Sita el texto al lado del eje x en grfico 2-D y 3-D
ylabel('texto'): Sita el texto al lado del eje y en grficos 2-D y 3-D
zlabel('texto'): Sita el texto al lado de eje z en un grfico 3-D
text(x,y,'texto'): Sita el texto en el punto (x,y) dentro del grfico 2-D
gtext('texto'): Permite situar el texto en un punto seleccionado con el ratn dentro de un grfico 2-D
grid: Sita rejillas en los ejes de un grfico 2-D o 3-D. La opcin grid on coloca las rejillas y grid off las elimina. La opcin
grid permuta entre on y off
hold: Permite mantener el grfico existente con todas sus propiedades, de modo que el siguiente grfico que se realice se site
sobre los mismos ejes y se superponga al existente. La opcin hold on activa la opcin y hold off la elimina. La opcin hold permuta
entre on y off. Vlido para 2-D y 3-D.
figure(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 figura activa, mientras que close(n) cierra la ventana nmero n.
figure(gcf): hace que la ventana activa aparezca.
Ejercicio 15

Representar grficamente, con distintos colores y caracteres, las siguientes funciones en el mismo grfico en el
intervalo [-5,5]:
f ( x ) = e-x
g(x)= x3-x-1

Ejercicio 16

Sin cerrar el grfico anterior, teclear figure( 2). Crear la grfica de h ( x ) = x4 en el intervalo [-5,5].

Ejercicio 17

Teclear figure( 1 ) y aadir un ttulo a la primera grfica, los nombres de los ejes x, e y y el texto
f ( x ) ( r e s p . g ( x ) ) en un punto prximo a las grficas de la funciones.

Ejercicio 18

Teclear figure(2) y repetir las mismas operaciones en la grfica de h ( x ) .

Ejercicio 19

Volver a la primera figura y borrar el texto f ( x ) ( p a r a ello ir al grfico, pinchar con el ratn en el texto a
borrar y usar la tecla supr).

A continuacin se presentan comandos que permiten manipular los ejes de un grfico, 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 grfico 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 grfico sobre los mismo ejes (con
hold en on), la escala no cambie.
axis('equal'): Sita el mismo factor de escala para ambos ejes
axis('off'): Elimina las etiquetas y marcas de los ejes y las rejillas, manteniendo el ttulo del grfico y los textos situados en l
con text y gtext
axis('on'): Coloca de nuevo las etiquetas, marcas y rejillas de los ejes

Ejercicio 20

Hacer activa la figura 1 y cambiar el tamao de los ejes. Por ejemplo, [-10,10] x [-5,5].

Ejercicio 21

Teclear axis('off'), figure(gcf) y ver qu pasa. Restituir despus las etiquetas y marcas.

Ejercicio 22

Teclear axis('auto'), figure(gcf). Qu ocurre?

Finalmente, podemos dividir una ventana grfica en m particiones horizontales y n verticales para colocar mltiples grficas en
ella:
subplot(m,n,p): Divide la ventana grfica en m x n subventanas y coloca el grfico 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
Ejercicio 23

S e a n x , y los vectores creados en el Ejercicio 12. Teclear subplot( l , 3,1), plot(x,y) Qu ocurre?

Ejercicio 24

Dibujar en las dos particiones restantes las funciones f ( x ) , g ( x ) del ejercicio 15.

Ejercicio 25

Aadir en la primera particin la grfica de h(x).

A continuacin vamos a representar grficamente una funcin de dos variables. Obviamente necesitamos un grfico en tres
dimensiones. Utilizaremos el comando e z s u r f . La sintaxis es:
ezsur f(f(x,y),[x 1x2] ,[y1y2] )
Ejercicio 26

Dibujar la grfica del paraboloide z = 1 - x2 - y2 e n ( x , y ) [-2, 2] x [-3, 3]. Ponerle un ttulo a la grfica.
Aadirle las etiquetas de los ejes y escribir el texto f ( x , y ) cerca del dibujo.

Asimismo, el comando e z s u r f permite dibujar superficies parametrizadas. Por ejemplo, vamos a dibujar la esfera de radio 1.
La parametrizacin d esta esfera es

Tecleamos el comando
e z s u r f ( ' s i n ( u ) * c o s ( v ) ' , ' s i n ( u ) * sin(v)',' cos(u)',[0 pi 0 2 * pi]);

Ejercicio 27

Dibujar en Matlab el cilindro de radio 2 y altura 10:

Tambin podernos 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 28 Para representar (en color rojo) 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 = c o s ( t ) ; y = sin( t ) ; z = t;
3. plot3(x, y, z', r ' )
Ejercicio 29

Fijar los ejes x [-2,2], y [-2,2] ; z [0,30], y dibujar en el mismo grfico junto a la hlice la curva
r(t)=(t,t4,t).

En el ltimo ejercicio poner el comando hold on despus de dibujar el primer grfico, ya que si ponemos primero hold on,
entonces se generar un grfico bidimensional, y ya no podremos obtener la grfica en tres dimensiones.

7. ECUACIONES DIFERENCIALES DE PRIMER ORDEN


Consideremos una ecuacin de primer orden en forma normal:

con la condicin inicial


y(t0)=y0

7.1. Resolucin numrica


Las funcin
devuelve un conjunto de coordenadas t e y que representan la solucin de la ecuacin en el intervalo t [t0,t1], y que se calculan
usando mtodos de Runge-Kutta de cuarto y quinto orden.
Aqu
donde 'funcin' es la funcin f en (1), t es la variable independiente e y la variable dependiente.
Los valores de t0 y t1 especifican los extremos del intervalo en el cual deseamos calcular la solucin.
El valor inicial especifica el valor inicial de la funcin en el extremo izquierdo del intervalo, es decir, inicial=y (t0).
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
[ty] = ode45(inline('y*t' ,'t,y),[1,3] ,2).
Finalmente, notemos que si escribimos
ode45(g, [t0, t 1 ] , inicial),
entonces Matlab dibuja la grfica de la solucin en lugar de dar datos numricos.
Ejercicio 30
Resolvemos la la ecuacin y' = 2ty en el intervalo [-2, 2], Teclear:
1. [t,y] =ode45(inline('2*y*t ','t','y'),[-2,2] ,2)
2 . [ t , y ] = ode45(inline('2 *y *','','?/), [-2,2], 2);
Qu obtenemos en cada caso?
Ejercicio 31

Vamos a dibujar de dos maneras varias soluciones de la ecuacin y' = 2ty en el intervalo [-2,2],

1. Primera opcin. Tecleamos:


a)
b)
c)
d)
e)
f)

hold on
axis([-2,2,-20,25])
ode45(inline(' 2 * y * t' , ' t' , ' y' ),[-2,2],10)
ode45(inline(' 2 * y * t' , ' t' , ' y' ),[-2,2],-10)
ode45(inline(' 2 * y * t' , ' t' , ' y' ),[-2,2],15)
ode45(inline(' 2 * y * t' , ' t' , ' y' ),[-2,2],-15)

2. Segunda opcin. Tecleamos:


a)
b)
c)
d)
e)
f)

[t1,y1] = ode45(inline(' 2 * y * t ' , ' t ' , ' y ' ) , [ - 2 , 2 ] , 1 0 ) ;


[ t 2 , y 2 ] = ode45(inline(' 2 * y * t ' , ' t ' , ' y ' ) , [ - 2 , 2 ] , - 1 0 ) ;
Repetimos los mismos pasos para las condiciones iniciales 15, -15.
hold on
axis([-2,2,-20,24])
plot(tl,yl), plot(t2,y2), etc.

3. Dibujar en un grfico distintas soluciones de la ecuacin y' = - y + e - t en el intervalo [0,10]. Elegir un tamao adecuado
de los ejes. A qu convergen las soluciones cuando t -> + ?
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 fijo, sino que este valor puede variar segn el momento del tiempo.
Ejercicio 32

Ejecutar [t, y] = ode45(inline('2 * y * t ' , ' t ' , ' y ' ) , [-2,2], 10) y ver cul es el paso h utilizado.

Ejercicio 33

Ejecutar [t,y] = ode45(inline( l / y ' , ' t ' , ' y ' ) , [-2, 2], 1) y ver que el tamao de h no es fijo.

En muchas ocasiones hemos de resolver una ecuacin diferencial que depende de uno o varios parmetros.
Si queremos resolver la ecuacin diferencial
y'= at2y
usando el comando ode45 pondremos
ode45(@(t,y) a * t^2 * y, [0,T],yo).
En este caso no podremos utilizar el comando inline, ya que no permite el uso de parmetros.
Ejercicio 34
Dada la ecuacin y' = a t y + b en el intervalo [0, 2] con la condicin inicial y(0) = 1:
1. Resolver la ecuacin para (a, b) = (-1, 2), (a, b) = (2, - 1), (a, b) = ( 0 , 2 ) .
2. Dibujar en el mismo grfico y con distintos colores las tres soluciones.

10

7.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('ecuacin')
o
dsolve('ecuacin', ' condicin 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
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('ecuacin', ' var')
o
dsolve(' ecuacin',' condicin inicial',' v a r ' ) .
Por ejemplo, para resolver la ecuacin

Ponemos

u = dsolve(' Du = u')

y se obtiene
u = C1 * exp(t).
O bien, para utilizar x como variable independiente
dsolve(' Du = u','x')
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

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 35

1.
2.
3.
4.

Dada la ecuacin

Hallar la solucin general.


Hallar la nica solucin del problema de Cauchy con y ( 0 ) = 1 y asignrsela a la variable y.
Crear una funcin a partir de la solucin y calcular y(0,75).
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(' ecuacin' ),
dsolve(' ecuacin',' v a r ' ) ,
dsolve('ecuacin',' condicin inicial_1',' condicin inicial_2')
o
dsolve('ecuacin',' condicin inicial_1 ', ' condicin inicial_2',' var')
La sintaxis de las derivadas es la siguiente:

11

Si la ecuacin es de orden n la nica diferencia es que se ponen n condiciones iniciales.


Ejercicio 36

Hallar la nica solucin del problema

y " - 2 y + y = et, y ( 0 ) = 1 , y ( 0 ) = 0 .

12

Potrebbero piacerti anche