Beruflich Dokumente
Kultur Dokumente
• Objetivos:
- Resolver numérica y gráficamente PVI para ecuaciones diferenciales de primer orden
utilizando el método de Euler.
- Resolver numérica y gráficamente PVI para ecuaciones diferenciales de primer orden
utilizando la función ode45 de Matlab.
- Estudiar los errores globales cometidos en las resoluciones numéricas.
• Métodos numéricos:
que supondremos con solución única y(x), se divide el intervalo de integración [x0,xf] en N
partes, y se obtienen los puntos:
x0 < x1 < x2 < ....................< xN=xf
donde, si el paso h es constante, h=(xf - x0)/N, se tiene
xn = x0 + n h, n=0,1,2,...,N.
Para cada n, un método numérico proporciona aproximaciones yn a la solución exacta de
(1) en cada punto xn: y(xn) ≈ yn.
• Método de Euler:
El método de Euler con paso fijo h, h>0, proporciona aproximaciones yn de los valores
y(xn) de la solución exacta del PVI (1) mediante la fórmula
1
Ecuaciones Diferenciales Profesora: Mª Pilar Laburta
Práctica 2 Dpto. de Matemática Aplicada
>> [x,y]=euler(f,x0,xf,y0,N)
>> f=inline('expresión','x','y')
1) Dado el PVI:
y'=x/y, y(0)=1
a) Obtener la aproximación a la solución de este problema en el punto x=0.3 obtenida al
aplicar el método de Euler con paso 0.1.
f=inline('x./y','x','y')
f =
Inline function:
f(x,y) = x./y
[x,y]=euler(f,x0,xf,y0,N)
x =
0
0.1000
0.2000
0.3000
y =
1.0000
1.0000
1.0100
1.0298
abs(subs('(x^2+1)^(1/2)', 'x',0.3)-y(end))
ans =
0.0142
[x,y]=euler(f,x0,xf,y0,N)
x =
0
0.0500
0.1000
0.1500
2
Ecuaciones Diferenciales Profesora: Mª Pilar Laburta
Práctica 2 Dpto. de Matemática Aplicada
0.2000
0.2500
0.3000
y =
1.0000
1.0000
1.0025
1.0075
1.0149
1.0248
1.0370
abs(subs('(x^2+1)^(1/2)', 'x',0.3)-y(end))
ans =
0.0070
d) Se sabe que el error global y(xn) - yn cometido por el método de Euler satisface:
y(xn) - yn ≤ C h
donde C es una constante independiente de h. Los errores obtenidos en b) y c), ¿están
de acuerdo con este resultado?. Sí.
2) Se considera el PVI:
y' = -y - 5 e-x sen 5x, y(0) = 1
a) Obtener la expresión de yn+1 en función de xn, yn que da el método de Euler al
aplicarlo a este problema con paso h=0.05.
f(x,y)=-y - 5 e-x sen 5x
yn+1 = yn + h f(xn,yn) = yn + h (-yn -5e-xn sen 5xn) = (1-h)yn + h (-5e-xn sen 5xn)
= 0.95yn + h (-5e-xn sen 5xn) , n=0,1,2,.....
[x,y]=euler(f,x0,xf,y0,N); plot(x,y)
3
Ecuaciones Diferenciales Profesora: Mª Pilar Laburta
Práctica 2 Dpto. de Matemática Aplicada
0.8
0.6
0.4
0.2
-0.2
-0.4
-0.6
0 0.5 1 1.5 2 2.5 3
max(abs(y-exp(-x).*cos(5*x)))
ans =
0.0775
>>[x,y]=ode45(f,[x0,xf],y0)
donde f es una función definida con "inline" (ó el nombre, entre apóstrofes, del fichero
función que la define). Los valores de x en los que ode45 calcula la solución numérica se
almacenan en el vector x de salida, y las correspondientes aproximaciones numéricas se
almacenan en el vector y de salida. Para obtener y dibujar esta solución numérica,
combinaremos la orden anterior con la orden plot en la forma:
>>[x,y]=ode45(f,[x0,xf],y0); plot(x,y)
Para obtener y dibujar la solución numérica de (1) en [a,x0], a<x0, pondremos los valores
de x en orden decreciente, es decir,
>>[x,y]=ode45(f,[x0,a],y0); plot(x,y)
3) Se considera el PVI:
y' = x/ y, y(0) = 1
4
Ecuaciones Diferenciales Profesora: Mª Pilar Laburta
Práctica 2 Dpto. de Matemática Aplicada
fplot('(x^2+1)^(1/2)',[0,5],'r')
f=inline('x./y','x','y')
f =
Inline function:
f(x,y) = x./y
hold on
[x,y]=ode45(f,[0 5],1);plot(x,y)
5.5
4.5
3.5
2.5
1.5
1
0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
[x,y]=ode45(f,0:0.2:2,1);
yex=(x.^2+1).^(1/2);
format long
[x,y,yex]
ans =
5
Ecuaciones Diferenciales Profesora: Mª Pilar Laburta
Práctica 2 Dpto. de Matemática Aplicada
0 1.00000000000000 1.00000000000000
0.20000000000000 1.01980390030003 1.01980390271856
0.40000000000000 1.07703295800176 1.07703296142690
0.60000000000000 1.16619037435052 1.16619037896906
0.80000000000000 1.28062484165690 1.28062484748657
1.00000000000000 1.41421355599242 1.41421356237310
1.20000000000000 1.56204992884201 1.56204993518133
1.40000000000000 1.72046504740386 1.72046505340853
1.60000000000000 1.88679622083269 1.88679622641132
1.80000000000000 2.05912602304385 2.05912602819740
2.00000000000000 2.23606797273725 2.23606797749979
hold on
[xd,yd]=ode45(f,[0 5],1:0.2:3);plot(xd,yd)
5.5
4.5
3.5
2.5
1.5
1
-3 -2 -1 0 1 2 3 4 5
dsolve('Dy=x+y^2','y(0)=1','x')
6
Ecuaciones Diferenciales Profesora: Mª Pilar Laburta
Práctica 2 Dpto. de Matemática Aplicada
ans =
((3*gamma(2/3)^2*3^(2/3)-
2*pi*3^(5/6))/(3*gamma(2/3)^2*3^(1/6)+2*pi*3^(1/3))*AiryAi(1,-
x)+AiryBi(1,-x))/((3*gamma(2/3)^2*3^(2/3)-
2*pi*3^(5/6))/(3*gamma(2/3)^2*3^(1/6)+2*pi*3^(1/3))*AiryAi(-x)+AiryBi(-
x))
[x,y]=ode45(f,[0 1],1);plot(x,y)
14
x 10
4.5
3.5
2.5
1.5
0.5
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1
axis([0 1 0 100])
7
Ecuaciones Diferenciales Profesora: Mª Pilar Laburta
Práctica 2 Dpto. de Matemática Aplicada
100
90
80
70
60
50
40
30
20
10
0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1