Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Main ED
Main ED
Departamento de
Matemática Aplicada I
Universidade de Vigo
SEGUNDA EDICIÓN
Año: 2009
Editores: Los autores
ISBN: 978-84-611-9916-7
ÍNDICE GENERAL
i
ii Índice General
4 Transformada de Laplace 49
4.1 DEFINICIÓN Y CÁLCULO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.1.1 Definición de la transformada de Laplace . . . . . . . . . . . . . . . . . . . . . 49
4.1.2 Cálculo 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 RESOLUCIÓN DE
PROBLEMAS DE CONDICIÓN INICIAL . . . . . . . . . . . . . . . . . . . . . . . . 54
4.4 PROBLEMAS DE VALORES INICIALES CON
DATOS DISCONTINUOS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
4.4.1 Función escalón unitario (Heaviside) . . . . . . . . . . . . . . . . . . . . . . . 56
4.4.2 Representación de funciones con discontinuidades de salto finito . . . . . . . . 58
4.5 TRANSFORMADA DE LAPLACE DE UNA
FUNCIÓN PERIÓDICA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
4.6 LA FUNCIÓN DE TRANSFERENCIA . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Índice general iii
5.1 Gráfica de J1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.2 Gráfica de J0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
5.3 Gráficas superpuestas de J1 y J0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.4 Gráficas de Bessel J3/2 y J1/2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5.5 Método de Euler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
5.6 Interpretación del método 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 sesión de trabajo con MATLAB (ML) y Adobe-Reader (PDF) debemos per-
sonalizar el entorno de trabajo.
1. (ML) Seleccionar adecuadamente, para no dañar la vista, el tipo, tamaño, color de las fuentes
y el color de fondo de las ventanas MATLAB.
2. (ML y PDF) Ajustar el tamaño de ambas ventanas, Command Window de MATLAB y el guión
de la clase, para trabajar simultáneamente con ambas.
El alumno debe entregar por escrito la solución de algunos ejercicios seleccionados, según se indica
en la plantilla correspondiente. Para ello debe basarse en el desarrollo de los ejemplos que aparecen
resueltos en el guión de la clase.
vii
CLASE PRÁCTICA 1
OBJETIVOS
• Abordar la solución de ecuaciones diferenciales (EEDD) y problemas de valor inicial desde
una perspectiva experimental, mediante la aplicación de los recursos simbólicos del sistema
MATLABr .
• Contribuir con el uso de herramientas gráficas al estudio de las EEDD a través de la visualiza-
ción del campo de direcciones asociado y las isoclinas.
>> syms x
>> diff(f,x)
>>diff(f,x,n)
1
2 Clase Práctica 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 simbólicas a las variables u, t, x y l.
Ejemplo 1.3 Resolver la ED y 0 = 1 + y 2 , obtener la solución local correspondiente a la C.I. (0, 1),
y representarla gráficamente.
>>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 definición de cualquier función especial MATLAB puede ser consultada invocando en la lı́nea de
comandos
>>help+nombre
o bien, para aquellas especı́ficas del núcleo MAPLE
>>mhelp+nombre
donde nombre es el nombre de la función.
Otras funciones especiales incorporadas al sistema MATLAB-MAPLE son BERNOULLI, BESSElJ,
DILOG, etc. Para ver el catálogo 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 solución que pasa por (x0 , y0 ) no hace
falta conocer dicha solución; 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 práctica es imposible hacer esto con todos los
puntos del plano, pero nada nos impide hacerlo con tantos puntos como queramos, configurando un
gráfico que llamaremos campo de direcciones de la ED.
>>f=inline(’x’,’x’,’y’);
>>paso=0.5;
Clase Práctica 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: Gráfico del ejemplo 1.11
Ejemplo 1.12
Fig. 1.8: Gráfico del ejemplo 1.12-a Fig. 1.9: Gráfico del ejemplo 1.12-b
OBJETIVOS
1. Ejercitar el uso de herramientas simbólicas para la resolución de ED.
2. Aplicar métodos de cuadraturas exactas estudiados en clase.
11
12 Clase Práctica 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 Práctica 2
donde f (y) es una constante que depende de la variable y que ha permanecido constante durante la
integración. Notar que para determinar a F (x, y) sólo 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 expresión obtenemos f (y). La solución 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 ecuación
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 ecuación 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 solución 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 Práctica 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 solución de la ecuación original (2.1).
Si x + f 0 (p) = 0, usando (2.1) se obtiene la solución singular en forma paramétrica:
x = −f 0 (p),
y = −f 0 (p)p + f (p).
En general no es necesario eliminar p para obtener una ecuación de la forma G(x, y) = 0, y de hecho,
podrı́a resultar muy difı́cil 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 ecuación homogénea. 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 expresión:
√ √
(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 más interesante ahora es que resulta infructuoso el intento de hallar un f.i. que sólo dependa de
x o que sólo 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 Práctica 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 expresión 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 técnicas matemáticas y herramientas simbólicas del MATLAB para el
estudio y resolución 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 Práctica 3
Para obtener explı́citamente la solución 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 (−2e−8t + 3e−7t ) + 3C2 (e−7t − e−8t )
y = 2C1 (−e−7t + e−8t ) + C2 (3e−8t − 2e−7t )
Alternativamente se puede obtener directamente la respuesta indicando las componentes del vector
solución.
>>[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 vı́a para resolver el anterior sistema lineal homogéneo, 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 solución 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 Práctica 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 resolución mediante el MVP usaremos la fórmula correspondiente para obtener una
solución particular del sistema diferencial lineal X 0 = A(t)X + B(t). La solución 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 fórmula general de variación de parámetros para hallar
una solución particular Xp del sistema no homogéneo.
>>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 Práctica 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 está compuesto de 1669 caracteres!
La figura 3.1 muestra gráficamente el resultado de ejecutar ezplot(Prueba(2),[-1,1]). El rango
de variación en el intervalo [−1, 1] sugiere la nulidad con una significación del orden de 10−15 .
Ejemplo 3.3 Resolver el siguiente sistema lineal completo de coeficientes constantes
x0 + x + 2y = cos(t) + sen(t) + e−t
y 0 − 2x + y = sen(t) − cos(t),
x(0) = 1, y(0) = 1.
Fig. 3.1: Evidencia gráfica 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
{eλ1 t u1 , · · · , eλn 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
fórmulas cerradas.
>>y=dsolve(’D4y-6*D3y+9*D2y-24*Dy-20*y=0’);
>> size(char(y))
ans = 1 2765
Calculemos aproximadamente las raı́ces de P con alguno de los comandos SOLVE y ROOTS.
El comando SOLVE resuelve exactamente, en términos de radicales, ecuaciones polinómicas
hasta el grado 4. ROOTS calcula aproximadamente las raı́ces de cualquier polinomio mediante un
3
Ecuación Diferencial Lineal y Homogénea
4
La respuesta puede cambiar según la versión MATLAB o el software que se utilice
34 Clase Práctica 3
procedimiento muy eficiente y preciso. No obstante, los resultados numéricos obtenidos mediante
SOLVE deberı́an ser superiores, en algunos casos, a los producidos por ROOTS. El nivel de coin-
cidencia entre ambos es del orden 10−15 en el caso que nos ocupa, según se aprecia en las pruebas
numéricas que se muestran a continuación.
>>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 solución particular para la ED del apartado c) mediante el método de coeficientes inde-
terminados (MCI) sin ayuda del MATLAB, y un SFS para a), b) y c).
Clase Práctica 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 cuáles de las siguientes EEDD, después de ser transformadas en EDL de coe-
ficientes constantes, puede aplicarse el MCI? ¿Cuál es la alternativa al MCI? Intentar resolverlas
mediante DSOLVE y mediante métodos 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 = x−2
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 homogénea 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.
Construcción de una EDLH de coeficientes variables teniendo a las funciones del ejemplo
3.15, apartado b) como SFS
Pueden ejecutarse comandos MATLAB en lı́nea tal como se muestra a continuación, 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 solución 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 evalúa eqn y sus derivadas 1ra, 2da y 3ra en
un punto (en este caso tomamos el punto 0), obteniéndose un sistema cuya resolución 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 Práctica 3
A continuación se resuelve el sistema lineal formado por las 4 ecuaciones eqn1, eqn2, eqn3 y
eqn4, con las incógnitas 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 cálculo de los coeficientes no es aconsejable sin la ayuda
de instrumentos de cálculo, pero sı́ parece ser más 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 utilizará que x1 = t y x2 = 1/t son soluciones l.i. de la ED homogénea. (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 solución 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 Práctica 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 solución particular xp cuya expresión pretendemos que sea
xp = A(t)e−2t + B(t)e−t .
>>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 superposición, pero en cualquier caso es
mucho más cómodo usar directamente DSOLVE que aplica automáticamente el principio de super-
posición.
Clase Práctica 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 Práctica 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 Práctica 3 45
(d) ty 00 − 4y 0 + y = 0
(e) x00 + 5x0 − 50x = 1/t
Ver en el APÉNDICE una notas relativas a las funciones especiales que pueden aparecer en la
solución de algunos de los problemas anteriores.
3.10 APÉNDICE
3.10.1 Notas sobre funciones especiales
Para complementar lo dicho en la clase No. 1 -pag. 4 de este material- sobre la función Lambertw,
mencionaremos otras funciones básicas también incorporadas a MATLAB. Estas son: WhittakerW,
WhittakerM, besselj, bessely, Ei, dilog, la función de error erf, Heaviside, Dirac, etc, que
también pueden ser conocidas mediante MHELP. Se trata de funciones especiales para el matemático
y el fı́sico debido a que son la solución de problemas especı́ficos, frecuentes y de gran importancia en
determinados ámbitos de la matemática, la ingenierı́a o la fı́sica.
La filosofı́a que sigue el MATLAB respecto a estas funciones es la usual. Expresar las soluciones
de una ED en términos de ciertas funciones especiales que hemos adoptado, y que son bien conocidas
en el sentido de que tenemos suficiente información acerca de ellas: intervalos de convexidad y de
crecimiento, máximos y mı́nimos locales, comportamiento asintótico en el infinito, derivabilidad,
singularidades, desarrollo en serie de potencias, etc.
Las EEDD de coeficientes variables del último listado de ejercicios serán estudiadas en el 2do
cuatrimestre utilizando un método relativamente simple, basado en asumir a priori que la solución
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 aún mejor cuál es la tarea que desempeñan las
funciones especiales y que éstas 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 caracterı́stico
y calcular aproximadamente sus raı́ces mediante el comando SOLVE tal como se muestra a contin-
uación
>>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 solución el correspondiente SFS.
¿Es exacta la respuesta? Obviamente no lo es. En las siguientes lı́neas se reconsidera el ejemplo
3.9 de la página 33, para ilustrar el nivel de ajuste que se obtiene al calcular una solución aproximada
ỹ por este método.
Lo primero a tener en cuenta es que el criterio que aquı́ se sigue es el de medir el error en la
ecuación: |L[ỹ]|, en lugar del error en la solución: kỹ − yk.
Tomemos por caso a |L[ỹ]| 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 gráficos que se muestran en la figura 3.2.
kỹ − yk,
de modo que las constantes C1 , ..., C4 pueden modificar sustancialmente la escala y por ello podrı́a
ser aún más difı́cil aceptar que el residuo relativo a ỹG sea cero.
A pesar de lo anterior, el criterio basado en medir directamente las discrepancias en la ecuación
es una estrategia universalmente aceptada. El llamado “método de los residuos (ponderados)”(10
consiste en aceptar como solución aquella que anula al residuo en un sentido más débil que el aquı́
utilizado.
9
Un serio inconveniente es que la función ỹG depende no linealmente de los parámetros α1 ,..., α3 , y β.
10
Están diseñados para resolver problemas de contorno (Tema 7). Ver § 20.3 de [5]
48 Clase Práctica 3
Para terminar de momento esta discusión, reiteremos que es posible para EEDD lineales y ho-
mogéneas de orden cuatro o menor, calcular exactamente las raı́ces del polinomio caracterı́stico
utilizando SOLVE sin aplicar NUMERIC, solo que la expresión literal de dichas raı́ces puede ser
un STRING con demasiados caracteres. En cualquier caso, las ventajas que se derivan del trabajo
con objetos simbólicos no parecen ser concluyentes, al menos con este enfoque. Para resolver éste y
muchos otros problemas nos apuntamos al uso de los métodos numéricos tradicionales cuyo estudio
será abordado en las clases prácticas 5, 6 y 7.
CLASE PRÁCTICA 4
Transformada de Laplace
OBJETIVOS
Ejercitar el uso combinado de técnicas matemáticas y herramientas simbólicas del MATLAB para
la resolución, 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) está 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 lı́mite de la derecha en (4.2) existe y es finito.
El sı́mbolo 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 sólo trabajaremos con funciones f (t) tales que e−st f (t) es absolutamente integrable.
Atendiendo a los objetivos de la clase, en la siguiente subsección abordaremos el cálculo de f˜(s)
(y de la transformada inversa) utilizando comandos MATLAB-MAPLE.
49
50 Clase Práctica 4
>>F=laplace(f)
donde f es una función escalar de la variable simbólica t, previamente declarada y F es una función
cuya variable es por defecto s.
También podemos formular
>> syms u v
>>F=laplace(u^2,v)
F = 2/v^3
Ejemplo 4.2 Calcular la transformada de Laplace de la función f (t) = e−at y f (t) = e−at 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 ningún parámetro como simbólico. Invocando
al núcleo 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 Práctica 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 fórmula general viene dada por la expresión:
n!
ten (s) = n+1 ,
s
y para r > −1, r ∈ R, se tiene, aún más general, que
Γ(r + 1)
ter (s) = ,
sr+1
donde Γ(r) se define a continuación. La función Gamma se define como
Z +∞
Γ(t) = ut−1 e−u 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 vı́as que se sugieren a continuación.
Ejercicio 4.2 Calcular la transformada de Laplace de las funciones f (t) = e−at cos(bt) y f (t) = eat t4
utilizando recursos MATLAB-MAPLE de modo que no intervengan variables SYM.
52 Clase Práctica 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) = e−2t 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 declaración previa
SYMS.
Aplicar la misma técnica al apartado (e), es decir,
laplace(sym(’Heaviside(t-1)*sin(t-1)’)),
donde Heaviside(t-a) es el nombre codificado de la función 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 expresión F(s), produciendo
otra expresión f(t).
La versión MAPLE es la que sigue
>>maple(’invlaplace(F(s),s,t)’)
Clase Práctica 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)
También 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 según sus 5
ceros simples y complejos, de modo que todo sale por la vı́a 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) = 2e−2t ,
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 notación MATLAB como Heaviside(t) y es de gran utilidad para representar otras
funciones definidas a tramos.
Veamos cómo se calcula su transformada:
>>syms t s
>>f=’Heaviside(t)’
Clase Práctica 4 57
>>laplace(f,t,s)
ans=1/s
Ejemplo 4.9 Calcular la transformada de la función u(t − a). Teniendo en cuenta la notación
τa (f )(t) = f (t − a)u(t − a), y la terminologı́a al uso, podemos decir que u(t − a) = τa (1), es decir,
u(t − a) es la trasladada paralelamente al eje OX de la función f = 1 al punto a.
Propiedad de la traslación en t.
Sea F (s) = f˜(s) y a > 0. Entonces
e−as
^ 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 métodos 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<t≤1
g(t) = −1 1<t≤2
0 t>2
Determinar I(t).
Nota 4.2 Obsérvese que la función 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 representación gráfica 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 más sencillo es copiar lo anterior en el Editor-Debugger, borrar los sı́mbolos >> y ejecutar.
60 Clase Práctica 4
y Z ∞
f (t)δ(t − a)dt = f (a), (4.5)
−∞
para cualquier función f (t) que sea continua en un intervalo abierto que contiene a t = a.
Observemos que δ(t − a) no es una función en el sentido usual ya que toma el valor ∞ en un
punto.
De la propiedad (4.5) se obtiene que
^
δ(t − a)(s) = e−as (4.6)
Ejemplo 4.12 Una masa sujeta a un resorte se suelta a partir del reposo 1 m por debajo de la
posición de equilibrio del sistema resorte-masa, y empieza a vibrar. Después de π segundos la masa
es golpeada por un martillo que ejerce un impulso sobre la masa. El sistema está 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 condición alguna sobre x0 (0)! En su lugar
se impone una condición en el infinito... Notar que t = 0 es una singularidad (¿por qué?). Quizás
esto último esté asociado a esas “extrañas condiciones” que se imponen a la solución. Una idea: si
t ∈ [−ε, ε] con ε > 0 muy pequeño, la ED es casi de orden uno...y para t grande es indudablemente
una ecuación 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 solución del ejemplo 4.13 es x(t) = 5e−t .
Ejemplo 4.14 Obtener la transformada de la función f (t), periódica de perı́odo 2π, definida por
20 0≤t≤π
f (t) =
−20 π < t < 2π
Luego, obtenemos la siguiente fórmula para H(s) en términos del polinomio caracterı́stico 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 función de respuesta al impulso como
Notar que h(t), al igual que H(s), tampoco depende de la entrada g(t). El alumno está en capacidad
de deducir de (4.9) que la solución y(t) de la ecuación (4.8) está dada por (aplicar teorema de
convolución)
y(t) = g ∗ h (t) (4.10)
Lo anterior significa que h(t) juega el papel de núcleo resolvente de la ecuación (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 cálculo directo halle la función de transferencia H(s) del sistema. Con la
ayuda del MATLAB encuentre la función 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 fórmula (4.10) para calcular
la solución y(t) de (i) cuando g(t) = 4t2 y de (vi) cuando g(t) = exp(3t). (Para calcular el producto
de convolución ver las instrucciones que se dan a continuación.)
>>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 Práctica 4
OBJETIVOS
Presentar los métodos numéricos de Euler y Euler mejorado para aproximar la solución de problemas
de valores iniciales. Resolver problemas concretos, obteniendo soluciones numéricas y estimados del
error, mediante el manejo de programas domésticos MATLAB basados en los algoritmos correspon-
dientes.
65
66 Clase Práctica 5
Si q ∈ Z, entonces Jq (x) y J−q (x) son linealmente dependientes. Además J−q (x) = (−1)q Jq (x).
Si q = ±1/2, ±3/2, ±5/2, · · · , las funciones de Bessel Jq se pueden expresar como una combinación
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
J−1/2 (x) = cos(x).
πx
Las Funciones de Bessel Jq para q ∈ N son analı́ticas en 0. Además son funciones pares si q es par e
impares si q es impar. A continuación 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 . Obsérvese cómo se
alternan los ceros de J0 y J1 .
Clase Práctica 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: Gráficas superpuestas de J1 y J0 Fig. 5.4: Gráficas de Bessel J3/2 y J1/2
Los métodos exactos hasta ahora estudiados tienen grandes limitaciones, pues la mayorı́a de las ED
que se encuentran en las aplicaciones no se pueden resolver de forma exacta, mediante fórmulas
68 Clase Práctica 5
implı́citas o explı́citas.(1 Para compensar estas limitaciones se introducen los métodos numéricos que
son el objeto de esta práctica.
xk+1 − xk = h, k = 0, 1, ..., N − 1.
Los métodos numéricos que estudiaremos permiten determinar los valores yk que constituyen una
aproximación del valor de la solución de (5.2) en los puntos xk .
Definición 5.1 El conjunto
{yk }k=0,...N
se llama Solución Numérica 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 método de Euler.
yk+1 = yk + f (xk , yk )h, k = 0, · · · , N − 1. (5.5)
La fórmula (5.5), llamada “ecuación en diferencias finitas”, permite predecir yk+1 en términos del
valor de yk . El dato o condición inicial (CI) es y0 y desde él marchamos en una dirección haciendo cada
vez una nueva estimación sobre la base de predicciones anteriores. Esto último introduce desviaciones
en nuestros sucesivos cálculos, provocando que éstos sean más imprecisos a medida que nos alejamos
del punto inicial x0 .
La formulación (5.5) anterior corresponde al llamado método de Euler. Éste resulta ser el más
sencillo entre los métodos que se establecen mediante diferencias finitas para resolver problemas de
valores iniciales. La simplicidad del método de Euler lo hace especialmente adecuado para intro-
ducirnos en el tema numérico-experimental, si bien su utilización profesional es nula.
Sea y(x; h) la solución aproximada obtenida con paso h, mediante un método numérico, por
ejemplo Euler, de un PVI cuya solución exacta es y(x).
70 Clase Práctica 5
Principio 5.1 Si agregamos más puntos en la malla (xk ), para que h sea más pequeño, entonces la
expectativa es que los errores |y(x) − y(x; h)| sean más pequeños.(2
¿Qué significa decir que el método utilizado converge? (ver el §7.6 de [3])
Definición 5.2 Si
lim y(x; h) = y(x),
h→0
Lo anterior significa que las soluciones y(x; h) de las ecuaciones en diferencias finitas que caracterizan
al método considerado, aproximan a la solución exacta y(x) de la ED cuando h → 0.
Luego, teóricamente, deberı́amos obtener mejores respuestas considerando valores cada vez más
pequeños de h. Desafortunadamente, la aritmética de precisión finita del ordenador no lo permite.
Para h muy pequeño los valores yk obtenidos podrı́an estar muy lejos del valor exacto y(xk ).(3
En general, la velocidad con la que y(x; h) se acerca a la solución 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 pequeño 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 continuación, se calcula la solución aproximada del PVI
y 0 = y 2 + 2x − x4 , a ≤ x ≤ b,
con y(a) = y0 .
Se calcula también el error cometido comparando con la solución exacta del PVI que es y = x2 .
2
Un principio es un enunciado metalinguı́stico, 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 , podrı́a no tener dı́gitos significativos coincidentes con la representación
de punto flotante de y(xk ).
Clase Práctica 5 71
Fig. 5.5: Método de Euler Fig. 5.6: Interpretación del método de Euler
Programa EULER1.m
Datos:
n es el número 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 solución en los puntos
x(k) = a + (k − 1) ∗ h con k = 1, · · · , n y donde
h = (b − a)/(n − 1) es el paso.
Error máximo 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 Práctica 5
Solución:
n = 20, a = 0, b = 1, y0 = 0, h = 5.263157894737e − 02
El error máximo es: 8.093460004977e − 02
Los valores aproximados se obtienen en la lı́nea de comandos según se indica a continuación.
>>[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 solución exacta, y relacionar éste con el paso h.
Apreciar gráficamente los resultados obtenidos.
Ejercicio 5.1 Modificar el programa EULER1 para calcular una solución aproximada del PVI
y 0 = 2xy 2 , 0 ≤ x ≤ 1, con y(0) = −1.
Obtener los errores cometidos, comparando con la solución exacta, considerendo los pasos h1 = 2−3
y h2 = 2−5 .
Clase Práctica 5 73
Fig. 5.8: Soluciones exactas y aproximadas del ejemplo 5.2 para n = 100, 200
A continuación se presenta el siguiente código modificado para el método de Euler que llamaremos
EULER2.m. para resolver la ecuación 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 función F se define previamente mediante el comando inline. Se obtiene el gráfico y el vector y
de la solución.
El programa EULER2.m es un procedimiento de tipo FUNCTION y uno de sus argumentos es una
función que se debe crear previamente.
Una de las aplicaciones más útiles de los ficheros .M se presenta en la definición de funciones mediante
la directiva FUNCTION cuya sintaxis es
FUNCION PARAMETROS SALIDA=NOMBRE FUNCION(parametros entrada)
El código de EULER2.m es el siguiente
74 Clase Práctica 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 Obsérvese que el programa EULER2 no permite juzgar la calidad de los resultados obtenidos.
Resuelve la ecuación y 0 = F (x, y) con la condición 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 solución 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 solución 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 Práctica 5 77
por el número
(f (a) + f (b))
(b − a) ,
2
es decir, el área del trapecio cuyos vértices son (a, 0), (a, f (a)), (b, f (b)) y (b, 0).
Con ello se trata de efectuar cálculos más precisos en la aproximación 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 expresión anterior tiene dentro de sı́ a la incógnita y(x) de
nuestro problema.
donde h = xk+1 − xk .
Surge ası́ un método de cálculo aproximado cuya formulación es la siguiente.
h
yk+1 = yk + f (xk , y(xk )) + f (xk+1 , yk+1 ) .
2
Se trata de un método implı́cito ya que la incógnita yk+1 , no aparece despejada en la fórmula. Además
se prueba que el error global de discretización E(h) cumple
E(h) = O(h2 ),
Código 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 solución 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 métodos de Euler y de Euler mejorado.
Para el cálculo del error, usar que la solución 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 Práctica 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 numéricos con el error absoluto, para lo cual el alumno deberá utilizar la
plantilla donde aparece una tabla de resultados con las entradas ya organizadas.
Indicaciones para el Ejercicio 5.4. Separar los problemas según 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 método 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 realización de este tipo de problemas debe permitirnos llegar a conclusiones experimentales y
teóricas, y además, ganar experiencia en la aplicación de estos métodos.
mediante nuevos procedimientos numéricos. Según sea el orden del error producido por la fórmula
de integración que utilicemos, ası́ será el orden del método numérico que permitirá calcular aproxi-
madamente la solución del PVI.
Notar que (5.8) es un método explı́cito porque yk+1 aparece despejado, y que la estimación yk+1
depende de las estimaciones yk e yk−1 (dos pasos). Esto último indica que para iniciar el proceso,
también debemos conocer de antemano el valor de y1 . Recordar que y0 es un dato del propio problema.
No continuaremos tratando este método que el alumno interesado puede encontrar en [1].
5.5 CONCLUSIONES
En general podemos postular que
4. El método de Euler es un método muy simple, que no se utiliza en la práctica, pero resulta
muy adecuado para introducirnos en el estudio general de los métodos numéricos que resuelven
aproximadamente problemas de valor inicial. El método de Euler pertenece a una clase de
métodos llamados de “un paso”, y que en general se caracterizan por la siguiente relación
recurrente:
yk+1 = yk + φ(h, xk , yk ).
84 Clase Práctica 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 ecuación (5.10) mediante variables separables y responda con argumentos
a las siguientes preguntas.
3. ¿Se justifica aplicar un método numérico cuando b(x) es constante (apartado 1)?
CLASE PRÁCTICA 6
OBJETIVOS
1. Aplicar los métodos numéricos estudiados en la clase práctica No. 5 a problemas de valores o
condiciones iniciales asociados a ecuaciones y sistemas diferenciales.
En esta clase el alumno comprobará la importancia que tiene transformar ecuaciones y sistemas
diferenciales de orden superior en sistemas de primer orden. Al igual que la clase anterior, sólo
utilizaremos herramientas gráficas y numéricas del sistema MATLAB.
Notemos que el anterior sistema S puede ser no-lineal. Si los términos de la derecha no dependiesen
de t dirı́amos que S es un “sistema autónomo”.
87
88 Clase Práctica 6
1. En cada etapa debe ser aplicado el método a todas las ecuaciones antes de pasar a la siguiente
etapa. Además, el paso h debe ser el mismo para todas las ecuaciones.
2. Otra cuestión que no podemos pasar por alto es que la solución numérica de una ecuación o
sistema diferencial de orden mayor que uno debe ser primero transformado en un sistema de
orden uno. A éste último se le aplica directamente el método numérico.
3. Cualquiera de los métodos de diferencias finitas que estudiemos para resolver el PVI escalar
y 0 = F (x, y), y(x0 ) = y0 , puede también ser aplicado a un sistema diferencial.
y 00 = f (t, y 0 , y) (6.1)
x0 = f (t, x, y)
y0 = x
De su solución (x(t), y(t)) sólo necesitamos la componente y = y(t) que es la solución del problema
original. El algoritmo de Euler mejorado aplicado a un sistema diferencial genérico S queda formulado
tal como se muestra a continuación
t∗k+1 = tk + h
∗
yk+1 = yk + hg(tk , xk , yk )
Los datos relativos al campo de direcciones o a la entrada opcional de la solución exacta se entregan
cuando lo solicita el programa, con la sintaxis o notación usual, sin encerrar entre apóstrofes ni poner
puntos delante de operadores. Esto último es necesario para la ejecución pero el propio programa se
encarga de hacerlo automáticamente.
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 módulo está constituido por dos sub-programas situados al final del código. Uno de
ellos, tal como se señaló anteriormente, se encarga de “escribir” el punto delante del operador división
\, la multiplicación *, y la exponenciación ^. La otra sub-función, de mayor interés para el alumno,
permite simular el método de Euler mejorado aplicado a un sistema diferencial de dos ecuaciones, y
se corresponde con la formulación (6.2-6.3).
Los cálculos 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 gráficos de las soluciones aproximadas aparecen en pantalla superpuestos y sólo corresponden
al último paso.
El programa RK CELL, que también 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 diseño de RK CELL se basa en usar objetos CELL para simular funciones vectoriales
de cualquier número de dimensiones. El propio programa crea automáticamente el fichero FUNC-
TION correspondiente al campo vectorial, con las caracterı́sticas exigidas por ODE45. Este comando
Matlab ejecuta algoritmos correspondientes a los métodos de Runge-Kutta que estudiaremos en la
clase práctica 7.
x0 = x + y,
y 0 = x − y, √
x(0) = 1 + 2, (6.4)
y(0) = 1,
>>s2_euler
y oprimir INTRO.
La solución exacta del sistema (6.4), que es una entrada opcional, es la siguiente
√ t√2 √
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 después obtener los resultados. No
cerramos el gráfico 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 Práctica 6 91
x2 + x + 5y ≈ x + 5y
y 2 + sen(x) + 3x − y ≈ 4x − y
Es oportuno señalar que los valores iniciales x(0) = 0.001, y(0) = 0.001 se han seleccionado inten-
cionadamente “pequeños” en correspondencia con el proceso anterior.
Ejemplo 6.1 El siguiente PVI, extraı́do del Boletı́n 7, consiste de una ED lineal y homogénea 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 comprobación de los resultados apreciaremos que la gráfica de la solución numérica, obtenida
según 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 aproximación de la solución 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, éstos deben ser convertidos
previamente en un sistema de orden uno, y aplicarle a este último uno de los métodos estudiados
para el caso escalar.
La serie de potencias que representa a la solución de un problema con datos analı́ticos, puede
ser simulada numéricamente utilizando una suma parcial seleccionada convenientemente, lo que, en
principio, constituye otro método para aproximar la solución.
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 métodos 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 resolución es algo más com-
plicado que los problemas vistos en clases. Sin embargo, lo aprendido nos sobra para abordar su
solución en torno a t = 0. Después de asumir que y(t) es analı́tica en x0 = 0, llegamos a que
∞
X
y(t) = an tn
n=0
donde
6
Usar mhelp en lugar de help para ver más detalles sobre esta función especial.
98 Clase Práctica 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 − 6an−1
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 término 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 gráficamente 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 función
−1 si −π ≤ x < 0,
f (x) = (6.7)
1 si 0 ≤ x < π
representar gráficamente la función f y las aproximaciones de su serie de Fourier trigonométrica
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 Práctica 6 101
6.4 APÉNDICE
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 número arbitrario de ecuaciones, utilizando el método Euler mejorado.
Este código 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 interés para el alumno
pues se corresponde con el procedimiento de Euler mejorado expresado en términos vectoriales. La
otra subrutina FUNCTION, llamada CEVAL, permite la evaluación numérica 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 lı́nea de comandos haciendo
>>sn_euler
En caso de que deseemos almacenar en memoria los valores aproximados de las incógnitas escribi-
mos
>>x=sn_euler;
Si además 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 número de
filas de x se corresponde con el número de puntos t0 ,...,tm .
Para visualizar una breve descripción del programa, en particular lo concerniente a la entrada-
salida, ejecutamos en lı́nea 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 Práctica 6
6.4.2 Interpolación
Sea el PVI:
y 0 = F (x, y),
y(x0 ) = y0 .
Una vez calculados los valores aproximados de la solución 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 función y(x)
que admite derivadas hasta el segundo orden (ver figura 6.11).
Existen otros métodos de interpolación que aseguran la suavidad del aproximante, pero no los
trataremos en este curso. La figura 6.11 ilustra el proceso de interpolación mediante poligonales.
Para realizar eficientemente los cálculos 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 métodos de diferencias finitas nos han ofrecido la solución como un vector
de Rn , y que según el procedimiento basado en interpolación estamos hallando una solución en la
forma de una función que, aunque continua, desafortunadamente no es derivable en todos los puntos.
A continuación se muestra el código de INTERPOLA.
Clase Práctica 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 PRÁCTICA 7
OBJETIVOS
Adquisición de conocimientos teórico-experimentales sobre los métodos numéricos de resolución de
problemas de condición inicial.
Visualizar las soluciones obtenidas mediante separación 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 Práctica 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 código permite simular un método de Runge-Kutta, particular-
mente el clásico de orden 4.
El programa cuenta con una interfaz de usuario desarrollada para facilitar el trabajo, que permite
opcionalmente introducir la solución exacta si fuese conocida. En una sola ejecución es capaz de
calcular los errores a posteriori para un vector de pasos [h1 , ..., hm ].
También muestra los gráficos 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 después de escribir en la lı́nea de comandos
alguna de las siguientes sentencias
7.1.4 Ejercicios
Ejercicio 7.1 Aproximar la solución del PVI
y0 = 1 + y2,
y(0) = 0
Ejercicio 7.4 Estudiar numéricamente la solución 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 según se
indica en la tabla 7.1.5.
Según se aprecia en la tabla 7.1.5, el tamaño de h se selecciona más pequeño 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 Práctica 7 111
Ejemplo 7.3 El flujo de calor a través de una barra cilı́ndrica de longitud π, es solución de:
A continuación se ofrecen indicaciones para seguir un método basado en la potencia gráfica del
Matlab y en nuestra capacidad de apreciación. El alumno puede seguir cualquier otro método, pero,
en tal caso, debe ofrecer una breve descripción del mismo.
La solución exacta de (7.9) puede obtenerse aplicando el método de separación de variables y
viene dada por
T (x, t) = e−3t sen(x) − 7e−27t sen(3x) + e−75t 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 máximo.
Repetir el proceso hasta obtener al menos dos dı́gitos correctos en la aproximación, 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 Práctica 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 máximo y mı́nimo alcanzados por
dicho punto en el perı́odo.
2. Representar gráficamente la posición de la cuerda pasadas dos horas después 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 numéricas solicitadas a partir de los gráficos, mediante los comandos max
y min o evaluando adecuadamente a CUERDA(x,t).
f = f unc(x1 , ..., xn )
2
La precisión que se obtiene no depende de x ni de t.
Clase Práctica 7 117
Ejemplo 7.5 Intentar resolver las siguientes ecuaciones en derivadas parciales aplicando herramien-
tas simbólicas 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 ecuación en derivadas parciales del Ejemplo 7.5, apartado d), aplicando
herramientas simbólicas 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).
BIBLIOGRAFÍA 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] MARCELLÁN, F., CASASÚS, L. & ZARZO, A., Ecuaciones Diferenciales. Pro-
blemas lineales y aplicaciones, McGraw-Hill, 1990.
[6] MATHEWS J. H. y FINK, K. D., Métodos numéricos con MATLAB. Prentice Hall,
2000.
[7] MATLAB, edición 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 Educación, México, 2001
[10] HANSELMAN, D. y LITTLEFIELD, B., The Student edition of MATLAB: version
5 user’s 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 rincón 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