Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MainED PDF
MainED PDF
Departamento de
Matematica Aplicada I
Universidade de Vigo
SEGUNDA EDICION
Ano: 2009
Editores: Los autores
ISBN: 978-84-611-9916-7
INDICE GENERAL
i
ii Indice General
4 Transformada de Laplace 49
4.1 DEFINICION Y CALCULO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.1.1 Definicion de la transformada de Laplace . . . . . . . . . . . . . . . . . . . . . 49
4.1.2 Calculo mediante comandos MATLAB. Ejemplos . . . . . . . . . . . . . . . . 50
4.1.3 Propiedades de la Transformada de Laplace . . . . . . . . . . . . . . . . . . . 51
4.2 TRANSFORMADA INVERSA DE LAPLACE . . . . . . . . . . . . . . . . . . . . . . 52
4.3 APLICACIONES A LA RESOLUCION DE
PROBLEMAS DE CONDICION INICIAL . . . . . . . . . . . . . . . . . . . . . . . . 54
4.4 PROBLEMAS DE VALORES INICIALES CON
DATOS DISCONTINUOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.4.1 Funcion escalon unitario (Heaviside) . . . . . . . . . . . . . . . . . . . . . . . 56
4.4.2 Representacion de funciones con discontinuidades de salto finito . . . . . . . . 58
4.5 TRANSFORMADA DE LAPLACE DE UNA
FUNCION PERIODICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.6 LA FUNCION DE TRANSFERENCIA . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Indice general iii
5.1 Grafica de J1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.2 Grafica de J0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.3 Graficas superpuestas de J1 y J0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.4 Graficas de Bessel J3/2 y J1/2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.5 Metodo de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.6 Interpretacion del metodo de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.7 Soluciones exactas y aproximadas de los ejemplos 5.1 y 5.2 . . . . . . . . . . . . . . . 73
5.8 Soluciones exactas y aproximadas del ejemplo 5.2 para n = 100, 200 . . . . . . . . . . 73
v
vi Listado de figuras
Antes de comenzar la sesion de trabajo con MATLAB (ML) y Adobe-Reader (PDF) debemos per-
sonalizar el entorno de trabajo.
1. (ML) Seleccionar adecuadamente, para no danar la vista, el tipo, tamano, color de las fuentes
y el color de fondo de las ventanas MATLAB.
2. (ML y PDF) Ajustar el tamano de ambas ventanas, Command Window de MATLAB y el guion
de la clase, para trabajar simultaneamente con ambas.
El alumno debe entregar por escrito la solucion de algunos ejercicios seleccionados, segun se indica
en la plantilla correspondiente. Para ello debe basarse en el desarrollo de los ejemplos que aparecen
resueltos en el guion de la clase.
vii
CLASE PRACTICA 1
OBJETIVOS
Abordar la solucion de ecuaciones diferenciales (EEDD) y problemas de valor inicial desde
una perspectiva experimental, mediante la aplicacion de los recursos simbolicos del sistema
MATLABr .
Contribuir con el uso de herramientas graficas al estudio de las EEDD a traves de la visualiza-
cion del campo de direcciones asociado y las isoclinas.
>> syms x
>> diff(f,x)
>>diff(f,x,n)
1
2 Clase Practica 1
>>syms t y k m g A B
>>y = A + B*exp(k*t/m) + m*g/k*t;
>>a=m*diff(y,t,2)-k*diff(y,t)+m*g
a=1/m*B*k^2*exp(k*t/m)-k*(B*k/m*exp(k*t/m)+m*g/k)+m
>>simplify(a)
ans =0
>>syms c
>>u=exp(-pi^2*c^2*t/l^2)*sin(pi*x/l)
>>diff(u,t)-c^2*diff(u,x,2)
ans=0
Nota 1.1 No ha sido necesario declarar simbolicas a las variables u, t, x y l.
Ejemplo 1.3 Resolver la ED y 0 = 1 + y 2 , obtener la solucion local correspondiente a la C.I. (0, 1),
y representarla graficamente.
>>dsolve(Dy=-y-2*t)
ans = -2*t+2+exp(-t)*C1
>>dsolve(Dy=-y- 2*t,y(-2)=1)
ans = -2*t+2-5*exp(-t)/exp(2)
>>ezplot(-2*t+2-5*exp(-t)/exp(2),[-4,3]),
>>hold on
>>plot(-2,1,*g)
>>dsolve(Dy=y^2*(1-y))
Warning: Explicit solution could not be found; implicit solution returned.
> In C:\MATLABR11\toolbox\symbolic\dsolve.m at line 292
ans =
t+1/y-log(y)+log(-1+y)+C1=0
Ejemplo 1.7 Resolver la ED y 00 = y + cos(2x), con las condiciones iniciales y(0) = 1, y 0 (0) = 0.
w(z) exp(w(z)) = z
La definicion de cualquier funcion especial MATLAB puede ser consultada invocando en la lnea de
comandos
>>help+nombre
o bien, para aquellas especficas del nucleo MAPLE
>>mhelp+nombre
donde nombre es el nombre de la funcion.
Otras funciones especiales incorporadas al sistema MATLAB-MAPLE son BERNOULLI, BESSElJ,
DILOG, etc. Para ver el catalogo completo MAPLE ejecutamos la orden
>>mfunlist
b) y 0 = y cos(x)/(1 + y 2 ),
y(0) = 1
c) y 000 3y 00 + 3y 0 y = x
d) y 000 3y 00 + 3y 0 y = x,
y(0) = 0, y 0 (0) = 1, y 00 (0) = 0
Lo anterior significa que, para conocer la pendiente de la solucion que pasa por (x0 , y0 ) no hace
falta conocer dicha solucion; basta con calcular f (x0 , y0 ).
Si esto se hace con todos los puntos del plano, tendremos las pendientes de las soluciones que
pasan por cada punto del plano. Naturalmente, en la practica es imposible hacer esto con todos los
puntos del plano, pero nada nos impide hacerlo con tantos puntos como queramos, configurando un
grafico que llamaremos campo de direcciones de la ED.
>>f=inline(x,x,y);
>>paso=0.5;
Clase Practica 1 7
>>iz=-3;
>>der=3;
>>[x,y]=meshgrid(iz:paso:der,iz:paso:der);
>>[n,m]=size(x);
>>dx=ones(n,m);
>>z=f(x,y);
>>dy=z;
>>quiver(x,y,dx,dy)
Ejercicio 1.2 Asociar cada una de las representaciones (a) y (b), mostradas en los cuadros 1.4 y
1.5, con el campo de direcciones de alguna de las siguientes EEDD:
i) y 0 = y x, ii) y 0 = 2x.
Ejemplo 1.10
Fig. 1.6: Ejemplo 1.10 Fig. 1.7: Grafico del ejemplo 1.11
Ejemplo 1.12
Fig. 1.8: Grafico del ejemplo 1.12-a Fig. 1.9: Grafico del ejemplo 1.12-b
OBJETIVOS
1. Ejercitar el uso de herramientas simbolicas para la resolucion de ED.
2. Aplicar metodos de cuadraturas exactas estudiados en clase.
11
12 Clase Practica 2
>>g=1/(y-1)
>>F=int(f,x,0,X)
F =-cos(X)+1
>>G=int(g,y,2,Y)
G =log(Y-1)
>>sol=solve(G-F,Y)
sol =exp(-cos(X)+1)+1
>>y=dsolve(Dy=y*cos(x)/(1+y^2),x)
y=-i*(-lambertw(exp(2*sin(x)+2*C1)))^(1/2)
>> x=solve(int(cos(x),x)-int((1+y^2)/y,y))
x =
asin(1/2*y^2+log(y))
>>c=simple(sym(solve(subs(x=0,y=1,sin(x)=log(y)+1/2*y^2+c),c)))
c=-1/2
14 Clase Practica 2
donde f (y) es una constante que depende de la variable y que ha permanecido constante durante la
integracion. Notar que para determinar a F (x, y) solo resta hallar a f (y)
Si derivamos con respecto a y
R
( P (x, y)dx)
Q= + f 0 (y).
y
Luego R
0 ( P (x, y)dx)
f (y) = Q .
y
Integrando respecto a y la anterior expresion obtenemos f (y). La solucion general es
F (x, y) = C, C R.
Ejemplo 2.6 Comprobar que la ED (2x + y)dx + (x 3y)dy = 0, es exacta. Resolver dicha ecuacion
y representar las soluciones.
x2
Ejemplo 2.7 Comprobar que la ED y 0 = , es exacta. Resolver dicha ED y representar las solu-
y2
ciones.
>>[x,y]=meshgrid(-3:0.05:3);
>>z=z=1/3*x.^3-1/3*y.^3;
>>contour(x,y,z,15)
Ejemplo 2.8 Comprobar que la ED cosh(x) sen(y) + senh(x) cos(y)y 0 = 0, es exacta. Resolver
dicha ecuacion y representar las soluciones.
>>P=cosh(x)*sin(y);
>>Q=sinh(x)*cos(y);
>>test=diff(P,y)-diff(Q,x)
test =0
>>F1=int(P,x)
F1 =sin(y)*sinh(x)
>>derf=Q-diff(F1,y)
derf =0
>>f=int(derf,y)
f =0
>>F=F1+f
F =sin(y)*sinh(x) Por lo tanto, la solucion del ejemplo 2.8 es sen(y) senh(x) = C. Para
representar las soluciones escribimos (ver figura 2.4)
>>[x,y]=meshgrid(0:0.05:2);
>>z=sin(y).*sinh(x);
>>contour(x,y,z,15)
18 Clase Practica 2
y = xy 0 + f (y 0 ). (2.1)
dp
(x + f 0 (p)) = 0.
dx
dp
Si = 0 entonces y 0 = C y por tanto teniendo en cuenta (2.1) se obtiene que
dx
y = Cx + f (C), C R, (2.2)
siendo (2.2) un haz de rectas, todas ellas solucion de la ecuacion original (2.1).
Si x + f 0 (p) = 0, usando (2.1) se obtiene la solucion singular en forma parametrica:
x = f 0 (p),
y = f 0 (p)p + f (p).
En general no es necesario eliminar p para obtener una ecuacion de la forma G(x, y) = 0, y de hecho,
podra resultar muy difcil o imposible.
y 0 + p(x)y = q(x)y n .
x3
1. Resolver la ED 3xy 0 2y = y2
.
x3
2. Resolver el PVI 3xy 0 2y = y2
, y(1) = 1.
1 1
= 2 2
xP + yQ xy
Nota 2.1 El anterior procedimiento puede aplicarse a cualquier ecuacion homogenea. El alumno
puede comprobar que en el caso P = x2 y 2 , Q = xy, el f.i. que se obtiene depende de una sola
variable.
w(x)ew(x) = x,
la siguiente expresion:
(1 x + y) exp(1 x + y) = exp(x/2 + C)
y = (y 0 )2 x,
y = (1)x + (y 0 )2 .
(p + 1)x0 = 2p,
Lo mas interesante ahora es que resulta infructuoso el intento de hallar un f.i. que solo dependa de
x o que solo dependa de y. Comprobarlo!
En este caso la sugerencia es descubrir que la ED admite un f.i. de la forma (x, y) = (x + y).
Para obtenerlo procedemos de la forma siguiente.
Tenemos P = x + y y Q = 1. Si es de la forma anterior es f.i. entonces debe ser
(P ) (Q)
= ,
y x
es decir,
1
y x + y + = x ,
2 x+y
24 Clase Practica 2
o equivalentemente
1
0 (x + y) x + y + (x + y) = 0 (x + y).
2 x+y
Debido a la forma de , y a la expresion anteriormente calculada, si hacemos t = x + y, obtenemos,
separando las variables.
d dt
= (2.7)
2 t(1 + t)
En todo lo anterior, tener en cuenta que hemos usado la regla de la cadena para calcular las derivadas
de respecto a x e y, esto es,
(x, y) = 0 (x + y), (x, y) = 0 (x + y),
x y
OBJETIVOS
Ejercitar el uso combinado de tecnicas matematicas y herramientas simbolicas del MATLAB para el
estudio y resolucion de sistemas diferenciales lineales y ecuaciones lineales de orden superior.
>>S=dsolve(Dx=-5*x+3*y,Dy=-2*x-10*y)
S=
x: [1x1 sym]
y: [1x1 sym]
25
26 Clase Practica 3
Para obtener explcitamente la solucion S se pide cada una de sus componentes [S.x,S.y] o
pretty([S.x,S.y])
>>pretty([S.x,S.y])
[-2C1 exp(-8t)+3C1 exp(-7t)+3C2 exp(-7t)-3C2 exp(-8t),
-2C1 exp(-7t)+2C1 exp(-8t)+3C2 exp(-8t)-2C2 exp(-7t)]
es decir, la respuesta es
x = C1 (2e8t + 3e7t ) + 3C2 (e7t e8t )
y = 2C1 (e7t + e8t ) + C2 (3e8t 2e7t )
Alternativamente se puede obtener directamente la respuesta indicando las componentes del vector
solucion.
>>[x,y]=dsolve(Dx=-5*x+3*y,Dy=-2*x-10*y)
x=-2*C1*exp(-8*t)+3*C1*exp(-7*t)+
3*C2*exp(- 7*t)-3*C2*exp(-8*t)
y=-2*C1*exp(-7*t)+2*C1*exp(-8*t)+
3*C2*exp(- 8*t)-2*C2*exp(-7*t)
Otra va para resolver el anterior sistema lineal homogeneo, de coeficientes constantes, es seguir
la via matricial directa. Para ello comenzamos escribiendo el sistema en forma matricial:
0
x 5 3 x x
= =A
y 2 10 y y
Conocer la solucion general de este sistema significa conocer una matriz fundamental R(t) del mismo.
Eso es lo que calcularemos mediante comandos MATLAB.
II- Sabemos que R(t) = etA . Para calcular etA usaremos el comando EXPM de MATLAB.
>>A=[-5 3;-2 -10];%Crear la matriz A
>>syms t %declarar simbolica t
>>Rt=expm(t*A); %calcular matriz fundamental
>>X1=Rt(:,1); %opcional calculo de un SFS,
>>X2=Rt(:,2); %es decir, de las columnas de R(t)
>>diff(X1)-A*X1 %Pueden hacerse comprobaciones
ans = [ 0]
[ 0]
>>diff(X2)-A*X2
ans = [ 0]
[ 0]
Clase Practica 3 27
>>Rt
Rt =
[-2*exp(-8*t)+3*exp(-7*t),3*exp(-7*t)-3*exp(-8*t)]
[-2*exp(-7*t)+2*exp(-8*t),3*exp(-8*t)-2*exp(-7*t)]
>>X1
X1 =
[-2*exp(-8*t)+3*exp(-7*t)]
[-2*exp(-7*t)+2*exp(-8*t)]
>>X2
X2 =
[-3*exp(-8*t)+3*exp(-7*t)]
[-2*exp(-7*t)+3*exp(-8*t)]
x0 y = e t
y 0 + 5x + 2y = sen(3 + t),
2. Utilizando el MVP (1 .
-5/2*exp(-t)*sin(2*t)*(5/8-1/5*sin(3)+1/10*cos(3))-1/2*...
exp(-t)*sin(2*t)*(-3/8-1/5*cos(3)-1/10*sin(3))+1/5*cos(3+t)...
+(-3/8-1/5*cos(3)-1/10*sin(3))*exp(-t)*cos(2*t)-5/8*exp(t)...
+1/10*sin(3+t)
2. Para la resolucion mediante el MVP usaremos la formula correspondiente para obtener una
solucion particular del sistema diferencial lineal X 0 = A(t)X + B(t). La solucion general del
mismo es Z t
X(t) = R(t)V + R(t) R(s)1 B(s)ds, (3.1)
0
x0 y = et
y 0 + 5x + 2y = sen(3 + t),
con x(0) = 1, y(0) = 1, usaremos la formula general de variacion de parametros para hallar
una solucion particular Xp del sistema no homogeneo.
>>syms s t
>>A=[0 1;-5 -2];
>>Bt=[exp(t);sin(3+t)];
>>Bs=subs(Bt,s,t);
>>Rt=expm(t*A)
Rt=[exp(-t)*cos(2*t)+1/2*exp(-t)*sin(2*t),1/2*exp(-t)*sin(2*t)]
[-5/2*exp(-t)*sin(2*t), exp(-t)*cos(2*t)-1/2*exp(-t)*sin(2*t)]
>>Rs=subs(Rt,s,t)
Rs=[exp(-s)*cos(2*s)+1/2*exp(-s)*sin(2*s),1/2*exp(-s)*sin(2*s)]
Clase Practica 3 29
[-5/2*exp(-s)*sin(2*s),exp(-s)*cos(2*s)-1/2*exp(-s)*sin(2*s)]
>>Xp=Rt*int(Rs\Bs,s,0,t);
>>Prueba=diff(Xp)-A*Xp-Bt;% Comprobacion
Si
>>simplify(Prueba)
>>ezplot(Prueba(1),[-1,1]),
>>ezplot(Prueba(2),[-1,1])
>>size(char(Xp))
ans =
1 1669
es decir, Xp esta compuesto de 1669 caracteres!
La figura 3.1 muestra graficamente el resultado de ejecutar ezplot(Prueba(2),[-1,1]). El rango
de variacion en el intervalo [1, 1] sugiere la nulidad con una significacion del orden de 1015 .
Ejemplo 3.3 Resolver el siguiente sistema lineal completo de coeficientes constantes
x0 + x + 2y = cos(t) + sen(t) + et
y 0 2x + y = sen(t) cos(t),
x(0) = 1, y(0) = 1.
Fig. 3.1: Evidencia grafica de que Prueba(2) debe ser nula en [1, 1]
>>[V,D] = eig(A)
>>valores_propios=eig(A)
Teorema 3.1 Si la matriz A tiene n valores propios diferentes 1 ,...,n , y uk es un vector propio
asociado a k , k = 1, ..., n, entonces
{e1 t u1 , , en t un },
Ejemplo 3.4 Resolver por la via espectral, y aplicando herramientas MATLAB, el siguiente pro-
blema con valores iniciales
1 2 1 1
X0 = 1 0 1 X(t) X(0) = 0
4 4 5 0
Notar que se ha obtenido C1 = 1 y C2 = 6. En todos los casos las respuestas son exactas, con
formulas cerradas.
>>y=dsolve(D4y-6*D3y+9*D2y-24*Dy-20*y=0);
>> size(char(y))
ans = 1 2765
Calculemos aproximadamente las races de P con alguno de los comandos SOLVE y ROOTS.
El comando SOLVE resuelve exactamente, en terminos de radicales, ecuaciones polinomicas
hasta el grado 4. ROOTS calcula aproximadamente las races de cualquier polinomio mediante un
3
Ecuacion Diferencial Lineal y Homogenea
4
La respuesta puede cambiar segun la version MATLAB o el software que se utilice
34 Clase Practica 3
procedimiento muy eficiente y preciso. No obstante, los resultados numericos obtenidos mediante
SOLVE deberan ser superiores, en algunos casos, a los producidos por ROOTS. El nivel de coin-
cidencia entre ambos es del orden 1015 en el caso que nos ocupa, segun se aprecia en las pruebas
numericas que se muestran a continuacion.
>>format long e
>>S=numeric(solve(x^4-6*x^3+9*x^2-24*x-20))
S =
5.291305619991860e+00
6.653067648628088e-01+2.373811784418384e+00i
6.653067648628088e-01-2.373811784418384e+00i
-6.219191497174775e-01
>>R=roots([1 -6 9 -24 -20])
R =
5.291305619991865e+00
6.653067648628106e-01+2.373811784418383e+00i
6.653067648628106e-01-2.373811784418383e+00i
-6.219191497174774e-01
>>max(abs(R-S))
ans= 5.329070518200751e-015
El correspondiente SFS es
obtener una solucion particular para la ED del apartado c) mediante el metodo de coeficientes inde-
terminados (MCI) sin ayuda del MATLAB, y un SFS para a), b) y c).
Clase Practica 3 35
>>y=dsolve((2*x+1)^2*D2y-(4*x+2)*Dy-12*y=8*x,x)
y=2/3*x^3*(2+x)/(2*x+1)+ C1*(2*x+1)^3+C2/(2*x+1)
Ejercicio 3.2 A cuales de las siguientes EEDD, despues de ser transformadas en EDL de coe-
ficientes constantes, puede aplicarse el MCI? Cual es la alternativa al MCI? Intentar resolverlas
mediante DSOLVE y mediante metodos artesanales. Contrastar los resultados.
1. (2x + 1)2 y 00 (4x + 2)y 0 12y = 8x
2. x2 y 00 + 5xy 0 2y = 5 log(x)
3. (10x + 50)2 y 00 3(x + 5)y 0 + 7y = x2
4. x3 y 00 6x2 y 0 + 2xy = x + 1
5. 5x2 y 00 6xy 0 + y = ex
Para abreviar puede utilizarse el programa WRONSKY.M, que puede descargarse desde la Web
de la asignatura [15].
d=[exp(x),exp(2*x),exp(3*x)]
[exp(x),2*exp(2*x),3*exp(3*x)]
[exp(x),4*exp(2*x),9*exp(3*x)]
>>W=det(d)%%%%(es el Wronskiano)
W=2*exp(x)*exp(2*x)*exp(3*x)
a) y1 = ex , y2 = e2x , y3 = e3x
b) y1 = 1, y2 = x, y3 = 1/(1 + x2 )
c) y1 = sen(x), y2 = x
d) y1 = ex , y2 = cos(3x)
e) y1 = x, y2 = x2 + 1, y3 = x2 + 2x + 1
hallar para cada una la EDL homogenea con el menor orden posible para la cual las funciones {yi }
forman parte de un conjunto fundamental de soluciones, considerando por separado los casos
1. coeficientes constantes (cuando sea posible),
2. coeficientes variables.
Construccion de una EDLH de coeficientes variables teniendo a las funciones del ejemplo
3.15, apartado b) como SFS
Pueden ejecutarse comandos MATLAB en lnea tal como se muestra a continuacion, o utilizar el
programa WRONSKY.
>>syms x y dy d2y d3y
>>A=[1 x 1/(1+x^2)];
>>A1=[y,A];
>>A2=[dy,diff(A)];
>>A3=[d2y,diff(A,2)];
>>A4=[d3y,diff(A,3)];
>>W=det([A1;A2;A3;A4])
W=-2*(12*d2y*x^3-12*d2y*x+2*d3y*x^2+3*d3y*x^4-d3y)/(1+x^2)^4
>>syms t A B C D
>>xp=A*sin(t)+B*cos(t)+C*t*exp(-4*t)+D*exp(2*t);
que es la solucion particular buscada.
>>l=diff(xp,2,t)+3*diff(xp,t)-4*xp
l=
-5*A*sin(t)-5*B*cos(t)-5*C*exp(-4*t)+6*D*exp(2*t)+3*A*cos(t)-3*B*sin(t)
>>eqn=l-3*sin(t)-7*exp(-4*t)+exp(2*t)
eqn=
-5*A*sin(t)-5*B*cos(t)-5*C*exp(-4*t)+6*D*exp(2*t)+3*A*cos(t)-3*B*sin(t)-...
3*sin(t)-7*exp(-4*t)+exp(2*t)
Para resolver eqn=0 y as obtener A, B, C, y D, se evalua eqn y sus derivadas 1ra, 2da y 3ra en
un punto (en este caso tomamos el punto 0), obteniendose un sistema cuya resolucion nos da A, B,
C, y D.
>>eqn1=subs(eqn,0,t)
eqn1=
-6-5*B-5*C+6*D+3*A
>>eqn2=subs(diff(eqn,t),0,t)
eqn2=
-5*A+27+20*C+12*D-3*B
>>eqn3=subs(diff(eqn,t,2),0,t)
eqn3=
-108+5*B-80*C+24*D-3*A
>>eqn4=subs(diff(eqn,t,3),0,t)
eqn4=
5*A+459+320*C+48*D+3*B
40 Clase Practica 3
A continuacion se resuelve el sistema lineal formado por las 4 ecuaciones eqn1, eqn2, eqn3 y
eqn4, con las incognitas A, B, C, y D.
>>[A B C D]=solve(eqn1,eqn2,eqn3,eqn4)
A =-15/34
B =-9/34
C =-7/5
D =-1/6
El procedimiento anterior usado para el calculo de los coeficientes no es aconsejable sin la ayuda
de instrumentos de calculo, pero s parece ser mas adecuado para simular el proceso en el ordenador.
En su defecto puede usarse el programa MCI descargable desde la Web de la asignatura [15].
Se utilizara que x1 = t y x2 = 1/t son soluciones l.i. de la ED homogenea. (Se pueden obtener con
DSOLVE)
xh = At + B/t, A, B R
xp = A(t)t + B(t)/t.
>>syms t
>>a=[t,1/t]
>>b=diff(a);
>>c=[a;b]
c = [t,1/t ]
[1,-1/t^2]
>>W=det(c)
W =-2/t
>>A=int(sin(t)/(2*t^2))
>>B=int(-sin(t)/2)
>>xp=A*t+B*1/t
xp=(-1/2*sin(t)/t+1/2*cosint(t))*t+1/2*cos(t)/t
>>pretty(sym(xp))
/ sin(t) \ cos(t)
|- 1/2 ------ + 1/2 cosint(t)| t + 1/2 ------
\ t / t
e3t
Ejemplo 3.18 Obtener una solucion particular de la ED x00 6x0 + 9x = .
t2
Para obtener
xp=A(t)*exp(3*t)+B(t)*exp(3*t)*t,
nos basamos en que A0 (t) y B 0 (t) son soluciones del sistema
3t 0
e te3t A (t) 0
=
(e3t )0 (te3t )0 B 0 (t) e3t /t2
Por lo tanto, se procede a resolver dicho sistema
>>syms t
>>a=[exp(3*t),t*exp(3*t)]
>>b=diff(a,t);
>>c=[a;b]
c=[exp(3*t), t*exp(3*t)]
[3*exp(3*t),3*exp(3*t)*t+exp(3*t)]
>>W=det(c)
W =exp(3*t)^2
42 Clase Practica 3
>>A=int(-1/t)
A =-log(t)
>>B=int(1/t^2)
B =-1/t
>>xp=A*exp(3*t)+B*t*exp(3*t)
xp=-log(t)*exp(3*t)-exp(3*t)
Se buscan A(t) y B(t) para tener una solucion particular xp cuya expresion pretendemos que sea
xp = A(t)e2t + B(t)et .
>>syms t
>>a=[exp(-2*t),exp(-t)];b=diff(a,t);c=[a;b]
c =[exp(-2*t),exp(-t)]
[-2*exp(-2*t),-exp(-t)]
>>H=[0;exp(3*t)*cos(5*t)+2*t^4];
>>S=inv(c)*H;A=int(S(1));B=int(S(2));
>>xp=simplify(A*exp(-2*t) +B*exp(-t))
xp=-8/205*cos(t)^5*exp(3*t)+72/205*cos(t)^4*sin(t)...
*exp(3*t)+2/41*cos(t)^3*exp(3*t)-54/205*cos(t)^2...
*sin(t)*exp(3*t)-1/82*cos(t)*exp(3*t)+9/410*...
sin(t)*exp(3*t)+t^4-6*t^3+21*t^2-45*t+93/2
Como alternativa podemos usar el MCI y el principio de superposicion, pero en cualquier caso es
mucho mas comodo usar directamente DSOLVE que aplica automaticamente el principio de super-
posicion.
Clase Practica 3 43
y = F (t, C1 ).
>>y=dsolve(Dy+2*(1/t+((cos(t)/t-sin(t)/...
t^2)/sin(t)*t))*y=0)
y =-2*C1/(-1+cos(2*t))
Como y = v 0 , se integra
>>v=int(y,t)+C2
44 Clase Practica 3
v =-C1/tan(t)+C2
Se usa que x = f v
>> x=sin(t)/t*v
x=sin(t)/t*(-C1/tan(t)+C2)
>>simplify(x)
ans=
-(C1*cos(t)-C2*sin(t))/t %(sol. gral.)
1. Investigar si las funciones y1 (t) = et , y2 (t) = tet , e y3 (t) = t2 et , son linealmente independientes
en [a, b].
y 0 + z 0 = exp(x)
y + z 00 = x
(a) y 00 4ty 0 + y = 1
(b) y 00 4t2 y 0 + y = 0
(c) y 00 4ty 0 + ty = 0
Clase Practica 3 45
(d) ty 00 4y 0 + y = 0
(e) x00 + 5x0 50x = 1/t
Ver en el APENDICE una notas relativas a las funciones especiales que pueden aparecer en la
solucion de algunos de los problemas anteriores.
3.10 APENDICE
3.10.1 Notas sobre funciones especiales
Para complementar lo dicho en la clase No. 1 -pag. 4 de este material- sobre la funcion Lambertw,
mencionaremos otras funciones basicas tambien incorporadas a MATLAB. Estas son: WhittakerW,
WhittakerM, besselj, bessely, Ei, dilog, la funcion de error erf, Heaviside, Dirac, etc, que
tambien pueden ser conocidas mediante MHELP. Se trata de funciones especiales para el matematico
y el fsico debido a que son la solucion de problemas especficos, frecuentes y de gran importancia en
determinados ambitos de la matematica, la ingeniera o la fsica.
La filosofa que sigue el MATLAB respecto a estas funciones es la usual. Expresar las soluciones
de una ED en terminos de ciertas funciones especiales que hemos adoptado, y que son bien conocidas
en el sentido de que tenemos suficiente informacion acerca de ellas: intervalos de convexidad y de
crecimiento, maximos y mnimos locales, comportamiento asintotico en el infinito, derivabilidad,
singularidades, desarrollo en serie de potencias, etc.
Las EEDD de coeficientes variables del ultimo listado de ejercicios seran estudiadas en el 2do
cuatrimestre utilizando un metodo relativamente simple, basado en asumir a priori que la solucion
admite un desarrollo en serie de potencias.(5
Con estos apuntes no se pretende que el alumno estudie detalladamente todas estas funciones
sino que aumente su cultura profesional, conociendo aun mejor cual es la tarea que desempenan las
funciones especiales y que estas no se reducen a las conocidas exponencial, seno, coseno, etc.
aplicamos el comando DSOLVE. Si la respuesta que se obtiene con DSOLVE no es satisfactoria, una
variante poco ortodoxa, que no recomendamos, consiste en tomar el polinomio caracterstico
y calcular aproximadamente sus races mediante el comando SOLVE tal como se muestra a contin-
uacion
>>format long e % se sugiere formato largo
>>S=numeric(solve(a*x^4+b*x^3+c*x^2+d*x+e))
Finalmente damos como solucion el correspondiente SFS.
Es exacta la respuesta? Obviamente no lo es. En las siguientes lneas se reconsidera el ejemplo
3.9 de la pagina 33, para ilustrar el nivel de ajuste que se obtiene al calcular una solucion aproximada
y por este metodo.
Lo primero a tener en cuenta es que el criterio que aqu se sigue es el de medir el error en la
ecuacion: |L[y]|, en lugar del error en la solucion: ky yk.
Tomemos por caso a |L[y]| en los intervalos [2, 2] y [20, 60].
>>syms t;
>>y1=exp(t*0.6653067648628088)*sin(2.373811784418384*t);
y calculemos Z = L[y1 ].
>>Z=diff(y1,4)-6*diff(y1,3)+9*diff(y1,2)-24*diff(y1,1)-20*y1;
Hagamos (6
>>subplot(1,2,1);ezplot(Z,[-2,2]),title()
>>subplot(1,2,2);ezplot(Z,[20,60]),title()
para obtener los graficos que se muestran en la figura 3.2.
ky yk,
de modo que las constantes C1 , ..., C4 pueden modificar sustancialmente la escala y por ello podra
ser aun mas difcil aceptar que el residuo relativo a yG sea cero.
A pesar de lo anterior, el criterio basado en medir directamente las discrepancias en la ecuacion
es una estrategia universalmente aceptada. El llamado metodo de los residuos (ponderados)(10
consiste en aceptar como solucion aquella que anula al residuo en un sentido mas debil que el aqu
utilizado.
9
Un serio inconveniente es que la funcion yG depende no linealmente de los parametros 1 ,..., 3 , y .
10
Estan disenados para resolver problemas de contorno (Tema 7). Ver 20.3 de [5]
48 Clase Practica 3
Para terminar de momento esta discusion, reiteremos que es posible para EEDD lineales y ho-
mogeneas de orden cuatro o menor, calcular exactamente las races del polinomio caracterstico
utilizando SOLVE sin aplicar NUMERIC, solo que la expresion literal de dichas races puede ser
un STRING con demasiados caracteres. En cualquier caso, las ventajas que se derivan del trabajo
con objetos simbolicos no parecen ser concluyentes, al menos con este enfoque. Para resolver este y
muchos otros problemas nos apuntamos al uso de los metodos numericos tradicionales cuyo estudio
sera abordado en las clases practicas 5, 6 y 7.
CLASE PRACTICA 4
Transformada de Laplace
OBJETIVOS
Ejercitar el uso combinado de tecnicas matematicas y herramientas simbolicas del MATLAB para
la resolucion, mediante la transformada de Laplace, de problemas de valores iniciales asociados a
sistemas diferenciales lineales y ecuaciones lineales de orden superior.
El dominio de f(s) esta formado por los valores de s para los cuales la integral (4.1) existe.
Recordar que si g es integrable en cada intervalo [0, b], entonces
Z + Z b
g(t)dt = lim g(t)dt. (4.2)
0 b+ 0
Decimos que g es integrable Riemann en [0, +] si el lmite de la derecha en (4.2) existe y es finito.
El smbolo de la izquierda recibe el nombre de integral impropia de primera especie.
Si |g| es integrable Riemann en [0, +] decimos que g es absolutamente integrable. En el resto
de esta clase solo trabajaremos con funciones f (t) tales que est f (t) es absolutamente integrable.
Atendiendo a los objetivos de la clase, en la siguiente subseccion abordaremos el calculo de f(s)
(y de la transformada inversa) utilizando comandos MATLAB-MAPLE.
49
50 Clase Practica 4
>>F=laplace(f)
donde f es una funcion escalar de la variable simbolica t, previamente declarada y F es una funcion
cuya variable es por defecto s.
Tambien podemos formular
>> syms u v
>>F=laplace(u^2,v)
F = 2/v^3
Ejemplo 4.2 Calcular la transformada de Laplace de la funcion f (t) = eat y f (t) = eat sen(bt) .
>>syms t s
>>f=exp(-a*t)
>>laplace(f,t,s)
ans =1/(s+a)
De esta forma no tenemos que declarar previamente a ningun parametro como simbolico. Invocando
al nucleo MAPLE podemos trabajar exclusivamente con STRINGS.
>>maple(f:=t->exp(-a*t)*sin(b*t))
>>F=maple(laplace(f(x),x,s))
F=b/((s+a)^2+b^2)
Clase Practica 4 51
Ejercicio 4.1 Calcular, utilizando MATLAB, la transformada de Laplace de las funciones f (t) = t,
f (t) = t2 y f (t) = t3 .
Nota para el ejercicio 4.1 Recordar que para n N la formula general viene dada por la expresion:
n!
ten (s) = n+1 ,
s
y para r > 1, r R, se tiene, aun mas general, que
(r + 1)
ter (s) = ,
sr+1
donde (r) se define a continuacion. La funcion Gamma se define como
Z +
(t) = ut1 eu du, t > 0.
0
Ejemplo 4.3 (a) Comprobar experimentalmente la igualdad (n) = (n 1)!, utilizando el comando
factorial.
(b) Calcular (1/2) y (17/3) por las diferentes vas que se sugieren a continuacion.
Ejercicio 4.2 Calcular la transformada de Laplace de las funciones f (t) = eat cos(bt) y f (t) = eat t4
utilizando recursos MATLAB-MAPLE de modo que no intervengan variables SYM.
52 Clase Practica 4
Ejercicio 4.3 Calcular f en los siguientes casos y reconocer las propiedades que se han aplicado en
cada caso.
(a) f (t) = t1/3 (b) f (t) = e2t t5/6
(c) f (t) = g 0 (t) (d) f (t) = sen(t + a)
(e) f (t) = sen(t 1)u(t 1) (f ) f (t) = t2 senh(t)
En (c) hacer >>laplace(diff(sym(g(t)))). Notar que esta sintaxis no exige declaracion previa
SYMS.
Aplicar la misma tecnica al apartado (e), es decir,
laplace(sym(Heaviside(t-1)*sin(t-1))),
donde Heaviside(t-a) es el nombre codificado de la funcion de salto unitario u(t a).
>>ilaplace(expresion_simbolica,s,t)
o simplemente
>>ilaplace(expresion_simbolica)
Notar que ILAPLACE calcula la transformada inversa de Laplace de una expresion F(s), produciendo
otra expresion f(t).
La version MAPLE es la que sigue
>>maple(invlaplace(F(s),s,t))
Clase Practica 4 53
s+3
F (s) =
s2
>>syms s
>>F=(s+3)/s^2;
>>ilaplace(F)
ans =3*t+1
Alternativamente con MAPLE
>>maple(invlaplace((s+3)/s^2,s,t))
Ejemplo 4.5 Calcular las transformadas inversas de Laplace de las siguientes funciones:
1 1 1
F (s) = , F (s) = 4 , F (s) = 5 .
s3 +1 s +1 s +1
>>F=1/(s^3+1)
>>ilaplace(F)
ans =
1/3*exp(-t)- 1/3*exp(1/2*t)*cos(1/2*3^(1/2)*t)+1/3*3^(1/2)*exp(1/2*t)*...
sin(1/2*3^(1/2)*t)
Tambien puede utilizarse
>>F=1/(s^4+1)
>>pretty(ilaplace(F))
ans=
1/2*2^(1/2)*(sin(1/2*2^(1/2)*t)*cosh(1/2*2^(1/2)*t)-cos(1/2*2^(1/2)*t)*...
sinh(1/2*2^(1/2)*t))
El caso 1/(s5 + 1) MATLAB lo resuelve en el campo complejo, pues factoriza a s5 + 1 segun sus 5
ceros simples y complejos, de modo que todo sale por la va de exponenciales.
>>F=1/(s^5+1)
>>ilaplace(F)
ans=1/5*Sum(exp(1/5*i*pi*(2*k-1))*exp(-exp(1/5*i*pi*(2*k-1))*t),k=1..5)
xe0 = se
x x(0)
>>syms t s lapx
>>diffeqn=diff(x(t),t)+3*x(t) % se introduce la ED
diffeqn=diff(x(t),t)+3*x(t)
>>a=laplace(diffeqn,t,s) % se transforma la ED
a =s*laplace(x(t),t,s)-x(0)+3*laplace(x(t),t,s)
>>a=subs(a,laplace(x(t),t,s),lapx) % por comodidad
a =s*lapx-x(0)+3*lapx
en la expresion transformada se sustituye laplace(x(t),t,s) por lapx
>>lapx=solve(a,lapx) % en a=0 se despeja lapx
lapx =x(0)/(s+3)
>>x=ilaplace(lapx,s,t) %se calcula x mediante
x =x(0)*exp(-3*t)
La transformada inversa
>>sol=subs(x,x(0),1)
en x(t) se sustituye x(0) por 1
sol =exp(-3*t)
>>a=subs(a,laplace(x(t),t,s),lapx)
a=s*(s*lapx-x(0))-D(x)(0)+3*s*lapx-
3*x(0)+2*lapx-1/(s^2+1)
>>lapx=solve(a,lapx)
lapx=(x(0)*s^3+s*x(0)+D(x)(0)*s^2+D(x)(0)+...
3*x(0)*s^2+3*x(0)+1)/(s^4+3*s^2+3*s^3+3*s+2)
>>x=ilaplace(lapx,s,t)
>>x =-exp(-2*t)*x(0)-1/5*exp(-2*t)-
exp(-2*t)*D(x)(0)+2*exp(-t)*x(0)+...
1/2*exp(-t)+exp(-t)*D(x)(0)-
3/10*cos(t)+1/10*sin(t)
>>sol=subs(x,x(0),0);
>>sol=subs(sol,D(x)(0),0)
sol=-1/5*exp(-2*t)+1/2*exp(-t)-3/10*cos(t)+1/10*sin(t)
Ejercicio 4.4 Resolver el siguiente problema de valor inicial
x00 (t) 3x0 (t) + 2x(t) = 2e2t ,
x(0) = 1/6, x0 (0) = 5/3.
>>b=subs(b,laplace(y(t),t,s),lapy)
b=s*lapy-y(0)+lapy-lapx
% En las expresiones a=0 y b=0 se despejan
% las transformadas de x e y: lapx, lapy
>>[lapx,lapy]=solve(a,b,lapx,lapy)
lapx = (s*x(0)-y(0)+x(0))/(s^2+2*s+2)
lapy =(s*y(0)+x(0)+y(0))/(s^2+2*s+2)
% Se obtienen x e y mediante la transformada inversa
>>x=ilaplace(lapx,s,t)
x = exp(-t)*x(0)*cos(t)-exp(-t)*y(0)*sin(t)
>>y=ilaplace(lapy,s,t)
y =exp(-t)*x(0)*sin(t)+exp(-t)*y(0)*cos(t)
% En las expresiones de x e y se sustituyen
las condiciones iniciales
>>x=subs(x,x(0),1);
>>x=subs(x,y(0),-2)
x =exp(-t)*cos(t)+2*exp(-t)*sin(t)
>>y=subs(y,x(0),1);
y =exp(-t)*sin(t)-2*exp(-t)*cos(t)
se representa en notacion MATLAB como Heaviside(t) y es de gran utilidad para representar otras
funciones definidas a tramos.
Veamos como se calcula su transformada:
>>syms t s
>>f=Heaviside(t)
Clase Practica 4 57
>>laplace(f,t,s)
ans=1/s
Ejemplo 4.9 Calcular la transformada de la funcion u(t a). Teniendo en cuenta la notacion
a (f )(t) = f (t a)u(t a), y la terminologa al uso, podemos decir que u(t a) = a (1), es decir,
u(t a) es la trasladada paralelamente al eje OX de la funcion f = 1 al punto a.
Propiedad de la traslacion en t.
Sea F (s) = f(s) y a > 0. Entonces
eas
^ F (s) = f (t a)u(t a).
x(0) = 0.
utilizando las herramientas MATLAB que simulan la transformada de Laplace.
Es posible resolverlo siguiendo los metodos anteriormente vistos?
>>a=subs(a,laplace(x(t),t,s),lapx)
a=s*lapx-x(0)+lapx-1/s+exp(-2*s)/s
>>lapx=solve(a,lapx)
lapx=(x(0)*s+1-exp(-2*s))/s/(1+s)
>>x=ilaplace(lapx,s,t)
x=x(0)*exp(-t)+1-exp(-t)-Heaviside(t-2)+
Heaviside(t-2)*exp(-t+2)
>>sol=subs(x,x(0),0)
sol=1-exp(-t)-Heaviside(t-2)+Heaviside(t-2)*exp(-t+2)
I(0) = I 0 (0) = 0,
siendo
1 0<t1
g(t) = 1 1<t2
0 t>2
Determinar I(t).
Nota 4.2 Observese que la funcion g(t) puede escribirse como g(t) = u(t) 2u(t 1) + u(t 2).
sol=1/4-1/4*cos(2*t)-1/2*Heaviside(t-1)+1/2*Heaviside(t-1)*cos(2*t-2)+...
1/4*Heaviside(t-2)-1/4*Heaviside(t-2)*cos(2*t-4)
% fin de la resolucion del ejemplo 4.11
La representacion grafica conjunta de la entrada g(t) y la salida I(t), que pueden verse en la
figura 4.2, se obtiene como sigue:(1
>>maple(g:=t->1-2*Heaviside(t-1)+Heaviside(t-2));
>>maple(I:=t->1/4-1/4*cos(2*t)-1/2*Heaviside(t-1)+...
1/2*Heaviside(t-1)*cos(2*t-2)+1/4*Heaviside(t-2)-...
1/4*Heaviside(t-2)*cos(2*t-4));
>>x=linspace(0,6,500);
>>for k=1:500,a=num2str(x(k));...
h(k)=str2num(maple(strcat(evalf(g(,a,),12))));
j(k)=str2num(maple(strcat(evalf(I(,a,),12))));end
>>plot(x,h,r.);hold on;plot(x,j,r.)
>>axis([0 6 -2 2]);title(funciones g(t) e I(t))
La delta de Dirac
Sea a R. La delta de Dirac (t a), se caracteriza por las dos propiedades siguientes:
0 t 6= a
(t a) = (4.4)
t=a
1
Lo mas sencillo es copiar lo anterior en el Editor-Debugger, borrar los smbolos >> y ejecutar.
60 Clase Practica 4
y Z
f (t)(t a)dt = f (a), (4.5)
para cualquier funcion f (t) que sea continua en un intervalo abierto que contiene a t = a.
Observemos que (t a) no es una funcion en el sentido usual ya que toma el valor en un
punto.
De la propiedad (4.5) se obtiene que
^
(t a)(s) = eas (4.6)
Ejemplo 4.12 Una masa sujeta a un resorte se suelta a partir del reposo 1 m por debajo de la
posicion de equilibrio del sistema resorte-masa, y empieza a vibrar. Despues de segundos la masa
es golpeada por un martillo que ejerce un impulso sobre la masa. El sistema esta regido por el
problema de valor inicial siguiente
donde x(t) representa el desplazamiento a partir del equilibrio en el instante t. Hallar x(t).
>>a=laplace(diffeq,t,s)
a=s*(s*laplace(x(t),t,s)-x(0))-D(x)(0)+9*laplace(x(t),t,s)-3*exp(-pi*s)
>>a=subs(a,laplace(x(t),t,s),lapx)
a=s*(s*lapx-x(0))-D(x)(0)+9*lapx-3*exp(-pi*s)
>>lapx=solve(a,lapx)
lapx=(s*x(0)+D(x)(0)+3*exp(-pi*s))/(s^2+9)
>>lapx=subs(lapx,x(0),1) % cond. inicial x(0)=1
lapx=(s+D(x)(0)+3*exp(-pi*s))/(s^2+9)
>>lapx=subs(lapx,D(x)(0),0) %cond. inicial x(0)=0
lapx=(s+3*exp(-pi*s))/(s^2+9)
>>x=ilaplace(lapx,s,t)
x=cos(3*t)-Heaviside(t-pi)*sin(3*t)
% fin de la resolucion del ejemplo 4.12
Ejemplo 4.13 Resolver la siguiente ED de coeficientes variables, sujeta a ciertas condiciones.
tx00 (t) + (t 1)x0 (t) x(t) = 0,
x(0) = 5,
lim x(t) = 0.
t+
Nota 4.3 Esta ED es de 2do orden...pero no se establece condicion alguna sobre x0 (0)! En su lugar
se impone una condicion en el infinito... Notar que t = 0 es una singularidad (por que?). Quizas
esto ultimo este asociado a esas extranas condiciones que se imponen a la solucion. Una idea: si
t [, ] con > 0 muy pequeno, la ED es casi de orden uno...y para t grande es indudablemente
una ecuacion de orden dos.
Finalmente, teniendo en cuenta el comportamiento de x en el punto del infinito se sigue que C1 debe
ser cero.
Por lo tanto la solucion del ejemplo 4.13 es x(t) = 5et .
Ejemplo 4.14 Obtener la transformada de la funcion f (t), periodica de perodo 2, definida por
20 0t
f (t) =
20 < t < 2
Luego, obtenemos la siguiente formula para H(s) en terminos del polinomio caracterstico de la ED
Y (s) 1
H(s) = = 2
G(s) as + bs + c
G(s)
Y (s) = = G(s)H(s) = g h. (4.9)
as2 + bs + c
Notar que H(s) no depende de la entrada g(t).
Definamos ahora la llamada funcion de respuesta al impulso como
h(t) = L1 H(t)
Notar que h(t), al igual que H(s), tampoco depende de la entrada g(t). El alumno esta en capacidad
de deducir de (4.9) que la solucion y(t) de la ecuacion (4.8) esta dada por (aplicar teorema de
convolucion)
y(t) = g h (t) (4.10)
Lo anterior significa que h(t) juega el papel de nucleo resolvente de la ecuacion (4.8). Se halla de una
vez, y luego, convolucionado con cualquier g(t) de entrada nos produce la respuesta o salida y(t).
Ejercicio 4.6 Mediante calculo directo halle la funcion de transferencia H(s) del sistema. Con la
ayuda del MATLAB encuentre la funcion de respuesta al impulso h(t) de los siguientes PVI, con
condiciones nulas.
(i) y 00 + 9y = g(t) (ii) y 00 9y = g(t)
(iii) y 00 y 0 6y = g(t) (iv) y 00 + 2y 0 15y = g(t)
(v) y 00 + 2y 0 + 5y = g(t) (vi) y 00 4y 0 + 5y = g(t)
Los resultados que se piden ya sabemos que no dependen de g(t). Usar la formula (4.10) para calcular
la solucion y(t) de (i) cuando g(t) = 4t2 y de (vi) cuando g(t) = exp(3t). (Para calcular el producto
de convolucion ver las instrucciones que se dan a continuacion.)
>>syms s t u
>>h=ilaplace(H,s,t);
>>f=subs(h,t,t-u);
>>g=subs(g,t,u);
>>P=f*g;
>>y=int(P,u,0,t)
64 Clase Practica 4
OBJETIVOS
Presentar los metodos numericos de Euler y Euler mejorado para aproximar la solucion de problemas
de valores iniciales. Resolver problemas concretos, obteniendo soluciones numericas y estimados del
error, mediante el manejo de programas domesticos MATLAB basados en los algoritmos correspon-
dientes.
65
66 Clase Practica 5
Si q Z, entonces Jq (x) y Jq (x) son linealmente dependientes. Ademas Jq (x) = (1)q Jq (x).
Si q = 1/2, 3/2, 5/2, , las funciones de Bessel Jq se pueden expresar como una combinacion
finita de senos, cosenos y potencias de x; es decir que son funciones elementales. En concreto se
cumple que:
1/2
2
J1/2 (x) = sen(x)
x
y
1/2
2
J1/2 (x) = cos(x).
x
Las Funciones de Bessel Jq para q N son analticas en 0. Ademas son funciones pares si q es par e
impares si q es impar. A continuacion se representan las funciones de Bessel J0 , J1 , J1/2 y J3/2 .
Funciones de Bessel J0 y J1
Se representan conjuntamente en [20, 20] las dos funciones de Bessel J0 y J1 . Observese como se
alternan los ceros de J0 y J1 .
Clase Practica 5 67
>>x=linspace(-20, 20,300);
>>y=besselj(0,x);
>>z=besselj(1,x);
>>plot(x, y,b.,x,z, r-,x,zeros(1,max(size(x))),k)
Fig. 5.3: Graficas superpuestas de J1 y J0 Fig. 5.4: Graficas de Bessel J3/2 y J1/2
Los metodos exactos hasta ahora estudiados tienen grandes limitaciones, pues la mayora de las ED
que se encuentran en las aplicaciones no se pueden resolver de forma exacta, mediante formulas
68 Clase Practica 5
implcitas o explcitas.(1 Para compensar estas limitaciones se introducen los metodos numericos que
son el objeto de esta practica.
xk+1 xk = h, k = 0, 1, ..., N 1.
Los metodos numericos que estudiaremos permiten determinar los valores yk que constituyen una
aproximacion del valor de la solucion de (5.2) en los puntos xk .
Definicion 5.1 El conjunto
{yk }k=0,...N
se llama Solucion Numerica de (5.2) relativa al paso h.
Si se denotan por y1 , , yN los valores aproximados correspondientes a los valores exactos y(x1 ), , y(xN ),
entonces, aplicando (5.3) se sigue que dado y0 se calcula y1 mediante
y1 = y0 + f (x0 , y0 )h,
e y2 mediante
y2 = y1 + f (x1 , y1 )h,
y asi sucesivamente hasta yN
yN = yN 1 + f (xN 1 , yN 1 )h,
En forma compacta se obtiene el siguiente esquema
Si ponemos el paso h = xk+1 xk y sustituimos y(xk ) por yk obtenemos de nuevo el esquema (5.4)
del metodo de Euler.
yk+1 = yk + f (xk , yk )h, k = 0, , N 1. (5.5)
La formula (5.5), llamada ecuacion en diferencias finitas, permite predecir yk+1 en terminos del
valor de yk . El dato o condicion inicial (CI) es y0 y desde el marchamos en una direccion haciendo cada
vez una nueva estimacion sobre la base de predicciones anteriores. Esto ultimo introduce desviaciones
en nuestros sucesivos calculos, provocando que estos sean mas imprecisos a medida que nos alejamos
del punto inicial x0 .
La formulacion (5.5) anterior corresponde al llamado metodo de Euler. Este resulta ser el mas
sencillo entre los metodos que se establecen mediante diferencias finitas para resolver problemas de
valores iniciales. La simplicidad del metodo de Euler lo hace especialmente adecuado para intro-
ducirnos en el tema numerico-experimental, si bien su utilizacion profesional es nula.
Sea y(x; h) la solucion aproximada obtenida con paso h, mediante un metodo numerico, por
ejemplo Euler, de un PVI cuya solucion exacta es y(x).
70 Clase Practica 5
Principio 5.1 Si agregamos mas puntos en la malla (xk ), para que h sea mas pequeno, entonces la
expectativa es que los errores |y(x) y(x; h)| sean mas pequenos.(2
Que significa decir que el metodo utilizado converge? (ver el 7.6 de [3])
Definicion 5.2 Si
lim y(x; h) = y(x),
h0
Lo anterior significa que las soluciones y(x; h) de las ecuaciones en diferencias finitas que caracterizan
al metodo considerado, aproximan a la solucion exacta y(x) de la ED cuando h 0.
Luego, teoricamente, deberamos obtener mejores respuestas considerando valores cada vez mas
pequenos de h. Desafortunadamente, la aritmetica de precision finita del ordenador no lo permite.
Para h muy pequeno los valores yk obtenidos podran estar muy lejos del valor exacto y(xk ).(3
En general, la velocidad con la que y(x; h) se acerca a la solucion exacta y(x) se expresa de la
siguiente forma:
y(x) y(x; h) = O(hp ),
lo que significa que
|y(x) y(x; h)| M |h|p
para h pequeno y M > 0 dependiendo de x.
y 0 = y 2 + 2x x4 , 0 x 1, con y(0) = 0
En el programa EULER1.m que indicamos a continuacion, se calcula la solucion aproximada del PVI
y 0 = y 2 + 2x x4 , a x b,
con y(a) = y0 .
Se calcula tambien el error cometido comparando con la solucion exacta del PVI que es y = x2 .
2
Un principio es un enunciado metalingustico, mediante el cual se establecen expectativas, se resumen resultados,
se sugieren acciones,... Los principios surgen de la experiencia y conforman el criterio experto.
3
Es decir, la mantisa correspondiente a yk , podra no tener dgitos significativos coincidentes con la representacion
de punto flotante de y(xk ).
Clase Practica 5 71
Fig. 5.5: Metodo de Euler Fig. 5.6: Interpretacion del metodo de Euler
Programa EULER1.m
Datos:
n es el numero de puntos de la malla,
a, b: extremos del intervalo dominio.
Resultados (salida):
arreglo y = [y(1) y(n)] con los valores aproximados de la solucion en los puntos
x(k) = a + (k 1) h con k = 1, , n y donde
h = (b a)/(n 1) es el paso.
Error maximo maxk {y(k) y(x(k))}
>>clear x y
>>n=20
>>a=0, b=1, y0=0
>>tic % Se comienza a calcular el tiempo de ejecucion
>>x=linspace(a,b,n), y(1)=y0; h=(b-a)/(n-1)
>>fork=1:n-1
>>y(k+1)=y(k)=+h*(y(k)^2+2*x(k)-x(k)^4);
>>end
>>error=max(abs(x.^2-y));
>>toc % Se termina el computo del tiempo de ejecucion
>>y
>>disp(El error maximo es: ), disp(error)
>>xx=linspace(a,b,50);
>>plot(x,y,k*,xx,xx.^2,b-)
72 Clase Practica 5
Solucion:
n = 20, a = 0, b = 1, y0 = 0, h = 5.263157894737e 02
El error maximo es: 8.093460004977e 02
Los valores aproximados se obtienen en la lnea de comandos segun se indica a continuacion.
>>[y(1:10) y(11:20)]
ans = 0 2.4775e-001
0 3.0234e-001
5.5398e-003 3.6218e-001
1.6615e-002 4.2720e-001
3.3218e-002 4.9729e-001
5.5333e-002 5.7235e-001
8.2942e-002 6.5225e-001
1.1602e-001 7.3682e-001
1.5454e-001 8.2584e-001
1.9847e-001 9.1907e-001
Ejemplo 5.2 Obtener en el ejemplo 5.1 las diferentes aproximaciones correspondientes a n = 10,
100, 200 y 400.
Calcular en cada caso el error comparando con la solucion exacta, y relacionar este con el paso h.
Apreciar graficamente los resultados obtenidos.
Ejercicio 5.1 Modificar el programa EULER1 para calcular una solucion aproximada del PVI
y 0 = 2xy 2 , 0 x 1, con y(0) = 1.
Obtener los errores cometidos, comparando con la solucion exacta, considerendo los pasos h1 = 23
y h2 = 25 .
Clase Practica 5 73
Fig. 5.8: Soluciones exactas y aproximadas del ejemplo 5.2 para n = 100, 200
A continuacion se presenta el siguiente codigo modificado para el metodo de Euler que llamaremos
EULER2.m. para resolver la ecuacion y 0 = F (x, y) con la CI y(a) = y0 , en el intervalo [a, b], en n
puntos
x(k) = a + (k 1)h,
con k = 1, , n y donde el paso es h = (b a)/(n 1).
La funcion F se define previamente mediante el comando inline. Se obtiene el grafico y el vector y
de la solucion.
El programa EULER2.m es un procedimiento de tipo FUNCTION y uno de sus argumentos es una
funcion que se debe crear previamente.
Una de las aplicaciones mas utiles de los ficheros .M se presenta en la definicion de funciones mediante
la directiva FUNCTION cuya sintaxis es
FUNCION PARAMETROS SALIDA=NOMBRE FUNCION(parametros entrada)
El codigo de EULER2.m es el siguiente
74 Clase Practica 5
function y=euler2(F,a,b,y0,n)
h=(b-a)/(n-1)
x=linspace(a,b,n);y(1)=y0;
for k=1:n-1
y(k+1)=y(k)+h*F(x(k),y(k));
end
disp(Solucion de dy/dx=F(x,y), donde),
disp(F es la funcion inline), disp(F)
disp(El numero de puntos es n=), disp(n)
disp(Paso h=), disp(h)
plot(x,y,k)
title(Solucion de la ED dy/dx=F(x,y))
y 0 = y + sen(x)
con y(0) = 1, 0 x 1.
El numero de puntos es n = 10
Paso h = 0.11111111111111
>>y=
1.00000000000000
1.11111111111111
1.24688819329123
1.40991996404094
1.60293270413395
1.82880926720753
2.09061200642747
2.39160998526049
2.73531085875018
3.12549783431139
Nota 5.2 Observese que el programa EULER2 no permite juzgar la calidad de los resultados obtenidos.
tomando el paso h = 22 .
Resuelve la ecuacion y 0 = F (x, y) con la condicion inicial y(a) = y0 , en el intervalo [a, b], en N puntos
x(k), (k = 1, , N ), donde
h = (b a)/(N 1) y N = n, 2n 1.
function [error,x1,y1]=euler3(F,a,b,y0,n)
N=n;
h=(b-a)/(N-1);
x=linspace(a,b,N);
y(1)=y0;
donde y es la solucion con N = n puntos.
for k=1:N-1
y(k+1)=y(k)+h*F(x(k),y(k));
end
N=2*n-1; h=(b-a)/(N-1)
x1=linspace(a,b,N)
y1(1)=y0
donde y1 es la solucion con N = 2n 1 puntos.
for k=1:N-1
y1(k+1)=y1(k)+h*F(x1(k),y1(k));
end
for k=1:n
e(k)=abs(y(k)-y1(2*(k-1)+1);
end
error=max(e)
plot(x,y,b,x1,y1,r)
legend(Aprox. con n puntos, Aprox. con 2n-1 puntos)
title(Solucion de la ecuacion dy/dx =F(x,y))
Clase Practica 5 77
por el numero
(f (a) + f (b))
(b a) ,
2
es decir, el area del trapecio cuyos vertices son (a, 0), (a, f (a)), (b, f (b)) y (b, 0).
Con ello se trata de efectuar calculos mas precisos en la aproximacion de la integral sobre cada
uno de los subintervalos [xk , xk+1 ]
Z xk+1
f (x, y(x))dx.
xk
Notar otra vez que el integrando de la expresion anterior tiene dentro de s a la incognita y(x) de
nuestro problema.
donde h = xk+1 xk .
Surge as un metodo de calculo aproximado cuya formulacion es la siguiente.
h
yk+1 = yk + f (xk , y(xk )) + f (xk+1 , yk+1 ) .
2
Se trata de un metodo implcito ya que la incognita yk+1 , no aparece despejada en la formula. Ademas
se prueba que el error global de discretizacion E(h) cumple
E(h) = O(h2 ),
Codigo EULER M
function [es,em]=euler_m(F,f,a,b,y0,n)
h=(b-a)/(n-1);
x=linspace(a,b,n);
phi=f(x);
ys(1)=y0;
for k=1:n-1
ys(k+1)=ys(k)+h*F(x(k),ys(k));
end
ym(1)=y0;
for k=1:n-1
ym(k+1)=ym(k)+(h/2)*(F(x(k),ym(k))+F(x(k)+h,ym(k)+h*F(x(k),ym(k))));
end
% Errores absolutos
em=max(abs(ym-phi));
es=max(abs(ys-phi));
plot(x,phi,g*,x,ys,k,x,ym,b)
legend(Solucion exacta,Euler,Euler mejorado)
Ejemplo 5.5 Obtener una solucion aproximada de la ED
y 0 + y/x y 2 log(x) = 0,
en [1, 3] con la C.I. y(1) = 1, usando los metodos de Euler y de Euler mejorado.
Para el calculo del error, usar que la solucion exacta es
f (x) = 2/x/(log(x)2 2),
la cual se puede obtener usando el comando DSOLVE.
>>dsolve(Dy+y/x-y^2*log(x)=0,y(1)=1,x)
ans =-2/x/(log(x)^2-2)
Clase Practica 5 81
Fig. 5.12: Soluciones exactas y aproximadas del ejemplo 5.5 (n = 21, 41)
(2) n = 24 , d = 100,
(3) n = 27 , d = 100.
Valorar los resultados numericos con el error absoluto, para lo cual el alumno debera utilizar la
plantilla donde aparece una tabla de resultados con las entradas ya organizadas.
Indicaciones para el Ejercicio 5.4. Separar los problemas segun el apartado al que pertenecen, por
ejemplo
>>Fa=inline(2*y+0*x);
>>fa=inline(exp(2*x));
>>[es,em]=euler_m(Fa,fa,0,1,1,2^4)
% no poner ; al final para producir eco en pantalla,
con lo cual obtenemos directamente y sin pausas los errores generados por el metodo de Euler y
Euler mejorado, es y em respectivamente, para el problema (a) con d = 1 y 24 nodos.
Definir F b y f b y proceder aplicando EULER M.
Las plantillas que el profesor ha entregado en clases deben rellenarse con los resultados para ser
entregadas al final.
La realizacion de este tipo de problemas debe permitirnos llegar a conclusiones experimentales y
teoricas, y ademas, ganar experiencia en la aplicacion de estos metodos.
mediante nuevos procedimientos numericos. Segun sea el orden del error producido por la formula
de integracion que utilicemos, as sera el orden del metodo numerico que permitira calcular aproxi-
madamente la solucion del PVI.
Notar que (5.8) es un metodo explcito porque yk+1 aparece despejado, y que la estimacion yk+1
depende de las estimaciones yk e yk1 (dos pasos). Esto ultimo indica que para iniciar el proceso,
tambien debemos conocer de antemano el valor de y1 . Recordar que y0 es un dato del propio problema.
No continuaremos tratando este metodo que el alumno interesado puede encontrar en [1].
5.5 CONCLUSIONES
En general podemos postular que
4. El metodo de Euler es un metodo muy simple, que no se utiliza en la practica, pero resulta
muy adecuado para introducirnos en el estudio general de los metodos numericos que resuelven
aproximadamente problemas de valor inicial. El metodo de Euler pertenece a una clase de
metodos llamados de un paso, y que en general se caracterizan por la siguiente relacion
recurrente:
yk+1 = yk + (h, xk , yk ).
84 Clase Practica 5
(I) 1 x 2,
(II) 1 x 2 102 ,
(III) 1 x 2 1012 ,
1. b(x) = 0.2,
2. b(x) = sen(x) 1.
Ejercicio 5.7 Resuelva la ecuacion (5.10) mediante variables separables y responda con argumentos
a las siguientes preguntas.
OBJETIVOS
1. Aplicar los metodos numericos estudiados en la clase practica No. 5 a problemas de valores o
condiciones iniciales asociados a ecuaciones y sistemas diferenciales.
En esta clase el alumno comprobara la importancia que tiene transformar ecuaciones y sistemas
diferenciales de orden superior en sistemas de primer orden. Al igual que la clase anterior, solo
utilizaremos herramientas graficas y numericas del sistema MATLAB.
Notemos que el anterior sistema S puede ser no-lineal. Si los terminos de la derecha no dependiesen
de t diramos que S es un sistema autonomo.
87
88 Clase Practica 6
1. En cada etapa debe ser aplicado el metodo a todas las ecuaciones antes de pasar a la siguiente
etapa. Ademas, el paso h debe ser el mismo para todas las ecuaciones.
2. Otra cuestion que no podemos pasar por alto es que la solucion numerica de una ecuacion o
sistema diferencial de orden mayor que uno debe ser primero transformado en un sistema de
orden uno. A este ultimo se le aplica directamente el metodo numerico.
3. Cualquiera de los metodos de diferencias finitas que estudiemos para resolver el PVI escalar
y 0 = F (x, y), y(x0 ) = y0 , puede tambien ser aplicado a un sistema diferencial.
y 00 = f (t, y 0 , y) (6.1)
x0 = f (t, x, y)
y0 = x
De su solucion (x(t), y(t)) solo necesitamos la componente y = y(t) que es la solucion del problema
original. El algoritmo de Euler mejorado aplicado a un sistema diferencial generico S queda formulado
tal como se muestra a continuacion
tk+1 = tk + h
yk+1 = yk + hg(tk , xk , yk )
Los datos relativos al campo de direcciones o a la entrada opcional de la solucion exacta se entregan
cuando lo solicita el programa, con la sintaxis o notacion usual, sin encerrar entre apostrofes ni poner
puntos delante de operadores. Esto ultimo es necesario para la ejecucion pero el propio programa se
encarga de hacerlo automaticamente.
Como sintaxis se admite una cualquiera de las siguientes:(2
s2_euler y=s2_euler [t,y]=s2_euler [t,x,y]=s2_euler
El segundo modulo esta constituido por dos sub-programas situados al final del codigo. Uno de
ellos, tal como se senalo anteriormente, se encarga de escribir el punto delante del operador division
\, la multiplicacion *, y la exponenciacion ^. La otra sub-funcion, de mayor interes para el alumno,
permite simular el metodo de Euler mejorado aplicado a un sistema diferencial de dos ecuaciones, y
se corresponde con la formulacion (6.2-6.3).
Los calculos se realizan atendiendo al paso h dado por el usuario, y para h/2, con la finalidad de
comparar los correspondientes resultados y obtener un estimado del error a posteriori.
Pueden entrarse varios pasos h, de modo que al final se dispone de una sola vez de los errores
correspondientes.
Los graficos de las soluciones aproximadas aparecen en pantalla superpuestos y solo corresponden
al ultimo paso.
El programa RK CELL, que tambien podemos obtener en la Web de la asignatura [15], es una
interfaz de usuario para facilitar el uso de la herramienta ODE45 de MATLAB aplicada a sistemas de
ecuaciones. El diseno de RK CELL se basa en usar objetos CELL para simular funciones vectoriales
de cualquier numero de dimensiones. El propio programa crea automaticamente el fichero FUNC-
TION correspondiente al campo vectorial, con las caractersticas exigidas por ODE45. Este comando
Matlab ejecuta algoritmos correspondientes a los metodos de Runge-Kutta que estudiaremos en la
clase practica 7.
x0 = x + y,
y 0 = x y,
x(0) = 1 + 2, (6.4)
y(0) = 1,
>>s2_euler
y oprimir INTRO.
La solucion exacta del sistema (6.4), que es una entrada opcional, es la siguiente
t2
x(t) = (1 + 2)e , y(t) = et 2
x0 = x2 + x + 5y
y 0 = y 2 + sen(x) + 3x y
x(0) = 0.001, 0 t 1.
y(0) = 0.001,
Escribimos de nuevo
>>s2_euler
oprimimos INTRO e introducimos lo datos del problema para despues obtener los resultados. No
cerramos el grafico de salida, cuyo aspecto podemos apreciar anticipadamente en la figura 6.2, para
poder comparar con el que produciremos en el ejercicio 6.3.
Clase Practica 6 91
x2 + x + 5y x + 5y
y 2 + sen(x) + 3x y 4x y
Es oportuno senalar que los valores iniciales x(0) = 0.001, y(0) = 0.001 se han seleccionado inten-
cionadamente pequenos en correspondencia con el proceso anterior.
Ejemplo 6.1 El siguiente PVI, extrado del Boletn 7, consiste de una ED lineal y homogenea de
orden dos con coeficientes variables.
y 00 ty 0 + y = 0,
(6.5)
y(0) = 2, y 0 (0) = 1, t [0, 1],
Como comprobacion de los resultados apreciaremos que la grafica de la solucion numerica, obtenida
segun Euler, es muy similar a la del polinomio
t4 t6
y(t) = 2 + t t2 , (6.6)
12 120
an (n 1)
an+2 = , n = 0, 1, 2, ...
(n + 2)(n + 1)
Sea P=[a_6,...,a_0], el vector formado por los coeficientes an , n = 0, ..., 6, de la suma parcial
que estamos considerando como una aproximacion de la solucion del problema (6.5)
6
X
an tn = a6 t6 + + a1 t + a0 .
n=0
RESUMEN
Para resolver una ED o un sistema de EEDD de orden mayor que uno, estos deben ser convertidos
previamente en un sistema de orden uno, y aplicarle a este ultimo uno de los metodos estudiados
para el caso escalar.
La serie de potencias que representa a la solucion de un problema con datos analticos, puede
ser simulada numericamente utilizando una suma parcial seleccionada convenientemente, lo que, en
principio, constituye otro metodo para aproximar la solucion.
Ejercicio 6.6
x0 = tx 10y 4t 2t2 ,
y 0 = x + 6y,
x(0) = 1, y(0) = 1, t [0, 1].
Ejercicio 6.7
y 0 = x + 6y + 3,
x0 = 2x + y,
x(0) = 2, y(0) = 4, t [0, 2].
>>hold on
Podemos comprobar experimentalmente la coincidencia de dos metodos vistos en clases. Si trans-
formamos el sistema del problema 6.6 en una EDL de 2do orden obtenemos
puede ser resuelta mediante series de potencias aunque su proceso de resolucion es algo mas com-
plicado que los problemas vistos en clases. Sin embargo, lo aprendido nos sobra para abordar su
solucion en torno a t = 0. Despues de asumir que y(t) es analtica en x0 = 0, llegamos a que
X
y(t) = an tn
n=0
donde
6
Usar mhelp en lugar de help para ver mas detalles sobre esta funcion especial.
98 Clase Practica 6
a0 = 1,
a1 = 5,
a2 = 3a1 5a0 = 10,
a3 = (12a2 9a1 6a0 4)/6,
a4 = (18a3 8a2 6a1 2)/12,
6(n + 1)an+1 + (n 10)an 6an1
an+2 = , n = 3, 4, 5, ...
(n + 2)(n + 1)
Ahora ejecutamos el programa TRUNCADA.M- que descargamos desde [15]- para calcular las
sumas parciales de la anterior serie de potencias.
Para obtener la suma parcial correspondiente al termino N = 12, procedemos como sigue.
>>t=linspace(0,1,100);
>>yy=truncada(t)
>>hold on
>>plot(t,yy,+)
En la figura 6.7 se comprueba graficamente el nivel de coincidencia entre las dos soluciones aproxi-
madas.
>>S=dsolve(Dy=x+6*y+3,Dx=2*x+y,x(0)=2,y(0)=4);
% En S.x y S.y estan las soluciones x(t) e y(t).
>>ezplot(S.x,[0,2])%cambiar el color de la grafica
>>hold on
>>ezplot(S.y,[0,2])
>>title( )% titulo vacio
>>legend(S.x,S.y)
6.3.2 Ejercicios
Ejercicio 6.8 Dada la funcion
1 si x < 0,
f (x) = (6.7)
1 si 0 x <
representar graficamente la funcion f y las aproximaciones de su serie de Fourier trigonometrica
mediante las primeras sumas parciales.
X sen(nx)
2 (1)n+1 .
n=1
n
Usar el programa SERIE2 para realizar esta tarea (ver figura 6.10).
Clase Practica 6 101
6.4 APENDICE
6.4.1 Programa SN EULER
A modo de complemento, el alumno puede utilizar el programa SN EULER para resolver sistemas de
ecuaciones diferenciales con un numero arbitrario de ecuaciones, utilizando el metodo Euler mejorado.
Este codigo consta de tres partes: la primera es una interfaz de usuario, y las dos restantes son sub-
funciones situadas al final del script. Una de las sub-funciones es de especial interes para el alumno
pues se corresponde con el procedimiento de Euler mejorado expresado en terminos vectoriales. La
otra subrutina FUNCTION, llamada CEVAL, permite la evaluacion numerica de campos vectoriales
almacenados como objetos CELL.
Este programa puede ser descargado de la Web de la asignatura [15], y se activa directamente en
la lnea de comandos haciendo
>>sn_euler
En caso de que deseemos almacenar en memoria los valores aproximados de las incognitas escribi-
mos
>>x=sn_euler;
Si ademas queremos almacenar en la variable t los valores de la red t0 ,...,tm , hacemos
>>[x,t]=sn_euler;
La variable x es una matriz con tantas columnas como ecuaciones tiene el sistema. El numero de
filas de x se corresponde con el numero de puntos t0 ,...,tm .
Para visualizar una breve descripcion del programa, en particular lo concerniente a la entrada-
salida, ejecutamos en lnea lo siguiente
>>help sn_euler
Para obtener la respuesta
...................
...................
ENTRADA
Numero de ecuaciones
Componentes del campo vectorial
Intervalo dominio
Condicion inicial
paso de integracion
SALIDA
Error a posteriori
Graficos de las soluciones aproximadas
SALIDAS OPCIONALES
-Para almacenar en memoria la solucion
[x1(1),...x1(m); x2(1),...,x2(m);... ;xn(1)...xn(m)]
escribir
>>x=sn_euler;
102 Clase Practica 6
6.4.2 Interpolacion
Sea el PVI:
y 0 = F (x, y),
y(x0 ) = y0 .
Una vez calculados los valores aproximados de la solucion y(x) de un PVI, sean estos
yk y(xk ), k = 1, ..., n
mt + b = y (t) y(t).
Se trata pues, de construir un aproximante poligonal- lineal a tramos- continuo, de una funcion y(x)
que admite derivadas hasta el segundo orden (ver figura 6.11).
Existen otros metodos de interpolacion que aseguran la suavidad del aproximante, pero no los
trataremos en este curso. La figura 6.11 ilustra el proceso de interpolacion mediante poligonales.
Para realizar eficientemente los calculos usaremos el programa INTERPOLA.M -descargable
desde [15]- basado en el comando INTERP1 de MATLAB.
>>Y1=interp1(T,Y,T1);
donde
T = [x(1) x(n)],
Y = [y(1) y(n)],
T 1 = [t(1) t(n)],
Y 1 = [m(1) t(1) + b(1) m(n) t(n) + b(n)]
Notar que hasta ahora los metodos de diferencias finitas nos han ofrecido la solucion como un vector
de Rn , y que segun el procedimiento basado en interpolacion estamos hallando una solucion en la
forma de una funcion que, aunque continua, desafortunadamente no es derivable en todos los puntos.
A continuacion se muestra el codigo de INTERPOLA.
Clase Practica 6 103
function interpola
disp(Se exige que x1<x2<...<xn)
disp( )
T=input(Entrar el vector T=[x1,...,xn]=);
disp( )
Y=input(Entrar el vector Y=[y1,...,yn]=);
disp( )
disp(Se exige que x1<=tk<=xn, k=1,...,m)
disp( )
T1=input(Entrar el vector T1=[t1,...,tm]=);
Y1=interp1(T,Y,T1);N=max(size(T1));
for k=1:N
disp( )
disp(sprintf(Y1(t%2.0g,%s%3.3g%s,k,)=,Y1(k),Oprime INTRO)),
pause
end
CLASE PRACTICA 7
OBJETIVOS
Adquisicion de conocimientos teorico-experimentales sobre los metodos numericos de resolucion de
problemas de condicion inicial.
Visualizar las soluciones obtenidas mediante separacion de variables para las ecuaciones del calor y
de ondas.
y 0 (x0 ) = f (x0 , y0 )
y 00 (x0 ) = fx (x0 , y0 ) + fy (x0 , y0 )f (x0 , y0 )
=
105
106 Clase Practica 7
donde
k1 = hf (xk , yk )
k2 = hf (xk + h/2, yk + k1 /2)
k3 = hf (xk + h/2, yk + k2 /2)
k4 = hf (xk + h, yk + k3 )
y 0 = f (x, y)
Tal como indica su nombre, este codigo permite simular un metodo de Runge-Kutta, particular-
mente el clasico de orden 4.
El programa cuenta con una interfaz de usuario desarrollada para facilitar el trabajo, que permite
opcionalmente introducir la solucion exacta si fuese conocida. En una sola ejecucion es capaz de
calcular los errores a posteriori para un vector de pasos [h1 , ..., hm ].
Tambien muestra los graficos de las aproximaciones para hm y hm /2. El error a posteriori lo
calcula como la mayor de las discrepancias entre las soluciones para h y h/2.
Para invocar a RUNGEKUTTA se oprime INTRO despues de escribir en la lnea de comandos
alguna de las siguientes sentencias
7.1.4 Ejercicios
Ejercicio 7.1 Aproximar la solucion del PVI
y0 = 1 + y2,
y(0) = 0
Ejercicio 7.4 Estudiar numericamente la solucion del siguiente problema de valor inicial (Hoffman
[3], 7.14) aplicando el programa EJE7.4 (Web de la asignatura [15]).
y 0 = p(y (x + 2)) + 1,
y(0) = 1,
x [0, +).
Considere los valores p = 1000 considerando los intervalos [0, b], b > 0, y los pasos h segun se
indica en la tabla 7.1.5.
Segun se aprecia en la tabla 7.1.5, el tamano de h se selecciona mas pequeno para mostrar:
(En este ejemplo de PVI, el error producido por ODE45 se modifica algo con el cambio de intervalo)
hA hE
Notar que hB = y que hD = .
2 5
Al siguiente problema
[y](x) = f (x), x [a, b],
B1 [y](a) = 0, (7.1)
B2 [y](b) = 0,
Clase Practica 7 111
Ejemplo 7.3 El flujo de calor a traves de una barra cilndrica de longitud , es solucion de:
A continuacion se ofrecen indicaciones para seguir un metodo basado en la potencia grafica del
Matlab y en nuestra capacidad de apreciacion. El alumno puede seguir cualquier otro metodo, pero,
en tal caso, debe ofrecer una breve descripcion del mismo.
La solucion exacta de (7.9) puede obtenerse aplicando el metodo de separacion de variables y
viene dada por
T (x, t) = e3t sen(x) 7e27t sen(3x) + e75t sen(5x).
Hacer
>>T=sin(x).*exp(-3*t)-7*sin(3*x).*exp(-27*t)+sin(5*x).*exp(-75*t);
>>x=pi/6;t=linspace(0,10,50);Z=eval(T);plot(t,Z)
>>x=pi/6;t=linspace(a,b,50);Z=eval(T);plot(t,Z)
donde esta vez los valores a y b son aproximaciones por defecto y por exceso, respectivamente, del
punto de maximo.
Repetir el proceso hasta obtener al menos dos dgitos correctos en la aproximacion, es decir, cuando
(b a)/a < (1e 02)/2.
Ejercicio 7.6 El movimiento de una cuerda de longitud finita se rige por la EDP
yx (0, t) = 0, y(, t) = 0, (t 0)
Clase Practica 7 115
1. Obtener la trayectoria del movimiento del punto de la cuerda cuya coordenada es x = /3,
durante los diez primeros segundos y estimar los valores maximo y mnimo alcanzados por
dicho punto en el perodo.
2. Representar graficamente la posicion de la cuerda pasadas dos horas despues del momento
inicial y calcular el desplazamiento del extremo x = 0 con respecto al nivel y = 0.
function u=cuerda(x,t)
mx=max(size(x));
mt=max(size(t));
k=0:400;
n=2*k+1;
for jx=1:mx
for jt=1:mt
u(jx,jt)=sum((-1).^k.*cos(n*x(jx)*.5).*...
sin(n*t(jt))./n.^2);
end
end
u=8*u/pi;
>>t=linspace(0,10,100);
>>u=cuerda(pi/3,t);
>>plot(t,u)
>>x=linspace(0,pi,100);
>>u=cuerda(x,7200);
>>plot(x,u)
Obtener las aproximaciones numericas solicitadas a partir de los graficos, mediante los comandos max
y min o evaluando adecuadamente a CUERDA(x,t).
f = f unc(x1 , ..., xn )
2
La precision que se obtiene no depende de x ni de t.
Clase Practica 7 117
Ejemplo 7.5 Intentar resolver las siguientes ecuaciones en derivadas parciales aplicando herramien-
tas simbolicas MAPLE-MATLAB.
a) fxx + 5fxy = 3
b) 3gx + 7gxy = xy
c) htt hxx = 0
d) uxx + uyy = x + y 2
Ejercicio 7.7 Resolver la ecuacion en derivadas parciales del Ejemplo 7.5, apartado d), aplicando
herramientas simbolicas MAPLE-MATLAB.
d) uxx + uyy = x + y 2
Emplear la misma sintaxis MAPLE de los ejemplos resueltos 7.5-a), 7.5-b) y 7.5-c).
BIBLIOGRAFIA Y SITIOS WEB
[1] ATKINSON, K. E., Elementary numerical analysis, J. Wiley and Sons, 1999.
[2] COOMBES, K. R. et al., Differential equation with MATLAB. John Wiley and Sons,
1999.
[3] HOFFMAN, J. D., Numerical methods for engineers and scientists, McGraw-Hill,
1992.
[4] MALEK-MADANI, R., Advanced Engineering Mathematics with Mathematica and
MATLAB, vol I, Addison-Wesley, 1998.
[5] MARCELLAN, F., CASASUS, L. & ZARZO, A., Ecuaciones Diferenciales. Pro-
blemas lineales y aplicaciones, McGraw-Hill, 1990.
[6] MATHEWS J. H. y FINK, K. D., Metodos numericos con MATLAB. Prentice Hall,
2000.
[7] MATLAB, edicion estudiante. Prentice Hall, 1995.
[8] NAGLE, R. Y SAFF,E. Fundamentals of differential equations. Benjamin Cummings,
1986.
[9] NAGLE, R., SAFF, E. & SNIDER, A. D. Ecuaciones Diferenciales y Problemas
con valores en la frontera. Pearson Educacion, Mexico, 2001
[10] HANSELMAN, D. y LITTLEFIELD, B., The Student edition of MATLAB: version
5 users guide, Prentice Hall, 1997.
[11] ZILL, D. G. Ecuaciones diferenciales con aplicaciones de modelado, Internat. Thomsom
Editores, 1997.
[12] Web de MATLAB: http://www.mathworks.com/products/matlab/
[13] El rincon de MATLAB: http://matlab.universas.com/
[14] Wikipedia: http://es.wikipedia.org/wiki/MATLAB
[15] Web de la asignatura: http://webs.uvigo.es/ecuacionesdiferenciales/
119