Вы находитесь на странице: 1из 7

ECUACIONES DIFERENCIALES ORDINARIAS

Una solución del problema de valor inicial


𝑦 ′ = 𝑓(𝑡, 𝑦), 𝑦(𝑡0) = 𝑦0
En un intervalo [𝑡0, 𝑡1] es una función derivable 𝑦 = 𝑦(𝑡) tal que
𝑦(𝑡0) = 𝑦0 𝑒 𝑦 ′ (𝑡) = 𝑓(𝑡, 𝑦(𝑡)) 𝑝𝑎𝑟𝑎 𝑡𝑜𝑑𝑜 𝑡 ∈ [𝑡0, 𝑡1]
Considere la ecuación diferencial
(𝑡 − 𝑦)
𝑦′ = , 𝑒𝑛 𝑒𝑙 𝑟𝑒𝑐𝑡𝑎𝑛𝑔𝑢𝑙𝑜 0 ≤ 𝑡 ≤ 5, 0 ≤ 𝑦 ≤ 4
2
𝑦(0) = 1, 𝑙𝑎 𝑠𝑜𝑙𝑢𝑐𝑖𝑜𝑛 𝑒𝑠 𝑦(𝑡) = 3𝑒 −𝑡/2 − 2 + 𝑡.
𝑦(0) = 4, 𝑙𝑎 𝑠𝑜𝑙𝑢𝑐𝑖𝑜𝑛 𝑒𝑠 𝑦(𝑡) = 6𝑒 −𝑡/2 − 2 + 𝑡.
Graficando con MatLab, tenemos

Archivo: Ejecución en MatLab


[t,y]=meshgrid(0:5,4:-1:0) >> vectores
dt=ones(5,6) >>
dy=(t-y)/2 4.5
quiver(t,y,dt,dy); 4
hold on 3.5
t1=0:0.01:5; 3
z1=3*exp(-t1/2)-2+t1; 2.5
z2=6*exp(-t1/2)-2+t1; 2
plot(t1,z1,t1,z2) 1.5
grid 1
hold off 0.5

-0.5
0 1 2 3 4 5 6

Método de Euler
Construcción de las aproximaciones a la solución del problema de valor inicial 𝑦 ′ = 𝑓(𝑡, 𝑦), 𝑐𝑜𝑛 𝑦(𝑎) = 𝑦0 en [a,b]
dadas por 𝑦𝑘+1 = 𝑦𝑘 + ℎ𝑓(𝑡𝑘 , 𝑦𝑘 ), 𝑝𝑎𝑟𝑎 𝑘 = 0,1, … , 𝑀 − 1.

Archivo: euler.m Ejecución en MatLab


function E=euler(f,a,b,ya,M) >> E=euler('f',0,3,1,10)
% Datos E=
% - f es la función, almacenada 0 1.0000
% como una cadena de caracteres ’f’ 0.3000 0.8500
% - a y b son los extremos derecho e izquierdo 0.6000 0.7675
% del intervalo 0.9000 0.7424
% - ya es la condición inicial y(a) 1.2000 0.7660
% - M es el número de pasos 1.5000 0.8311
% Resultado 1.8000 0.9314
% - E=[T’ Y’] siendo T el vector 2.1000 1.0617
de las abscisas e 2.4000 1.2175
% Y el vector de las ordenadas 2.7000 1.3949
h=(b-a)/M; 3.0000 1.5906
T=zeros(1,M+1); >>
Y=zeros(1,M+1) ;
T=a:h:b;
Y(1)=ya;
for j=1:M
Y(j + 1)=Y(j)+h*feval(f,T(j),Y(j)) ;
end
E=[T' Y'];
Metodo de Heun
Construcción de las aproximaciones a la solución del problema de valor inicial 𝑦 ′ = 𝑓(𝑡, 𝑦), 𝑐𝑜𝑛 𝑦(𝑎) = 𝑦0 en [a,b]

dadas por 𝑦𝑘+1 = 𝑦𝑘 + [𝑓(𝑡𝑘 , 𝑦𝑘 ) + 𝑓(𝑡𝑘+1 , 𝑦𝑘+ ℎ 𝑓(𝑡𝑘 , 𝑦𝑘 ))], 𝑝𝑎𝑟𝑎 𝑘 = 0,1, … , 𝑀 − 1.
2

Archivo: heun.m Ejecución en MatLab


function E=heun(f,a,b,ya,M) >> E=heun('f',0,3,1,10)
% Datos:f es la función, almacenada como una E=
cadena de caracteres ’ f ’ 0 1.0000
% a y b son los extremos derecho e 0.3000 0.8838
izquierdo del intervalo 0.6000 0.8253
% ya es la condición inicial y(a) 0.9000 0.8165
% M es el número de pasos 1.2000 0.8506
% Resultado:E=[T’ Y’] siendo T el vector de 1.5000 0.9216
las abscisas e 1.8000 1.0243
% Y el vector de las ordenadas 2.1000 1.1544
h=(b-a)/M; 2.4000 1.3081
T=zeros(1,M+1); 2.7000 1.4821
Y=zeros(1,M+1); 3.0000 1.6736
T=a:h:b; >>
Y(1)=ya;
for j=1:M
k1=feval(f,T(j),Y(j));
k2=feval(f,T(j+1),Y(j)+h*k1);
Y(j+1)=Y(j)+(h/2)*(k1+k2);
end
E=[T' Y'];

Comparando los resultados

Prog01.m Prog02.m
E=euler('f',0,3,1,10) H=heun('f',0,3,1,10)
plot(E(:,1),E(:,2)) plot(H(:,1),H(:,2))
hold on hold on
% solucion del PVI: y'=(t-y)/2, % solucion del PVI: y'=(t-y)/2,
y(0)=1 y(0)=1
t1=0:0.001:3;z1=3*exp(-t1/2)-2+t1; t1=0:0.001:3;z1=3*exp(-t1/2)-2+t1;
plot(t1,z1,'r'),grid plot(t1,z1,'r'),grid
legend('sol euler','sol exacta') legend('sol heun','sol exacta')
hold off hold off
1.7 1.8
sol euler sol heun
1.6 sol exacta 1.7 sol exacta

1.5 1.6

1.4 1.5

1.3 1.4

1.2 1.3

1.1 1.2

1 1.1

0.9 1

0.8 0.9

0.7 0.8
0 0.5 1 1.5 2 2.5 3
0 0.5 1 1.5 2 2.5 3

El método de la serie de Taylor


𝑑𝑦
Considerando el PVI: 𝑦 ′ = 𝑑𝑡
= 𝑓(𝑡, 𝑦), 𝑐𝑜𝑛 𝑦(𝑎) = 𝑦, donde la incognita 𝑦 = 𝑦(𝑡). Para aplicar este

método debemos recordar la regla de la cadena, con lo cual tenemos:


𝑦′(𝑡) = 𝑓
𝑦 ′′ (𝑡) = 𝑓𝑡 + 𝑓𝑦 𝑦 ′ = 𝑓𝑡 + 𝑓𝑦 𝑓
𝑦 ′′′ (𝑡) = 𝑓𝑡𝑡 + +2𝑓𝑡𝑦 𝑦 ′ + 𝑓𝑦 𝑦 ′′ + 𝑓𝑦𝑦 (𝑦 ′ )2 = 𝑓𝑡𝑡 + +2𝑓𝑡𝑦 𝑓 + 𝑓𝑦𝑦 (𝑓)2 + 𝑓𝑦 (𝑓𝑡 + 𝑓𝑦 𝑓)
𝜕 𝜕
En general se tiene: 𝑦 (𝑛) (𝑡) = 𝑃(𝑛−1) 𝑓(𝑡, 𝑦(𝑡)), 𝑑𝑜𝑛𝑑𝑒 𝑃 = (𝜕𝑡 + 𝑓 𝜕𝑦)

De donde el proceso iterativo del método de Taylor, nos da el siguiente proceso:


𝑑2 ℎ2 𝑑3 ℎ3 𝑑𝑛 ℎ𝑛
𝑦𝑘+1 = 𝑦𝑘 + 𝑑1 ℎ + + +⋯+ , 𝑠𝑖𝑒𝑛𝑑𝑜 𝑑𝑗 = 𝑦 (𝑗) (𝑡𝑘 )
2! 3! 𝑛!
(𝑡−𝑦)
Resolver: 𝑦′ = 2
, 𝑦(0) = 1 , 𝑑𝑜𝑛𝑑𝑒 𝑙𝑎 𝑠𝑜𝑙𝑢𝑐𝑖𝑜𝑛 𝑒𝑠 𝑦(𝑡) = 3𝑒 −𝑡/2 − 2 + 𝑡.
(𝑡−𝑦) 2−𝑡+𝑦 −2+𝑡−𝑦 2−𝑡+𝑦
Entonces 𝑦 ′ = 2
, 𝑦 (2) = 4
, 𝑦 (3) = 8
, 𝑦 (4) = 16
,

Método de Taylor de orden 4


function z=df(t,y)
z=[(t-y)/2,(2-t+y)/4,(-2+t-y)/8,(2-t+y)/16];
Archivo: heun.m Ejecución en MatLab
function T4=taylor(df,a,b,ya,M) >> T4=taylor('df',0,3,1,20)
% Datos: df=[y’ y’’ y’’’ y’’’’], almacenada como una cadena T4 =
de caracteres ’ df ’ 0 1.0000
% a y b son los extremos derecho e izquierdo del 0.1500 0.9332
0.3000 0.8821
intervalo
0.4500 0.8455
% ya es la condición inicial y(a) 0.6000 0.8225
% M es el número de pasos 0.7500 0.8119
% Resultado: T4=[T’ Y’] siendo T el vector de las 0.9000 0.8129
abscisas e Y el vector de las ordenadas 1.0500 0.8247
h=(b-a)/M; 1.2000 0.8464
T=zeros(1,M+1); 1.3500 0.8775
1.5000 0.9171
Y=zeros(1,M+1); 1.6500 0.9647
T=a:h:b; 1.8000 1.0197
Y(1)=ya; 1.9500 1.0816
for j=1:M 2.1000 1.1498
2.2500 1.2240
D=feval(df,T(j),Y(j)); 2.4000 1.3036
2.5500 1.3883
Y(j+1)=Y(j)+h*(D(1)+h*(D(2)/2+h*(D(3)/6+h*D(4)/24))); 2.7000 1.4777
end 2.8500 1.5715
T4=[T' Y']; 3.0000 1.6694
>>
C
Comparando los métodos
Archivo: programa88.m Ejecución en MatLab
T4=taylor4('df',0,3,1,10)
1.8
plot(T4(:,1),T4(:,2)) sol Taylor
hold on 1.7 sol exacta

% solucion del PVI: y'=(t-y)/2, 1.6

y(0)=1 1.5

t1=0:0.001:3;z1=3*exp(-t1/2)-2+t1; 1.4
plot(t1,z1,'r'),grid
1.3
legend('sol Taylor','sol exacta')
hold off 1.2

1.1

0.9

0.8
0 0.5 1 1.5 2 2.5 3
Metodos de Runge – Kutta
El método de Taylor tiene el incoveniente de calcular la derivada de la función hasta de cuarto orden, lo cual puede
suplirse con la evaluacion de la función en cada paso, en varios puntos a la vez. Es decir considerando el problema de
valor inicial:
𝑦 ′ = 𝑓(𝑡, 𝑦), 𝑐𝑜𝑛 𝑦(𝑎) = 𝑦𝑜 𝑒𝑛 [𝑎, 𝑏]
Se resuelve usando la formula:
ℎ(𝑓1 + 2𝑓2 + 2𝑓3 + 𝑓4 )
𝑦𝑘+1 = 𝑦𝑘 +
6
Donde
ℎ ℎ
𝑓1 = 𝑓(𝑡𝑘 , 𝑦𝑘 ) 𝑓2 = 𝑓 (𝑡𝑘 + 2 , 𝑦𝑘 + 2 𝑓1 )
ℎ ℎ
𝑓3 = 𝑓 (𝑡𝑘 + 2 , 𝑦𝑘 + 2 𝑓2 ) 𝑓4 = 𝑓(𝑡𝑘 + ℎ, 𝑦𝑘 + ℎ𝑓3 )

Programa en MatLab rk4.m


function R=rk4(f,a,b,ya,M)
% Datos: f es la funcion almacenada como una cadena
% de caracteres ’f’
% a y b son los extremos derecho e izquierdo del intervalo
% ya es la condición inicial y(a)
% M es el número de pasos
% Resultado: R=[T’ Y’] siendo T el vector de las abscisas
% e Y el vector de las ordenadas
h=(b-a)/M;
T=zeros(1,M+1);
Y=zeros(1,M+1);
T=a:h:b;
Y(1)=ya;
for j=1:M
k1=h*feval(f,T(j),Y(j));
k2=h*feval(f,T(j)+h/2,Y(j)+k1/2);
k3=h*feval(f,T(j)+h/2,Y(j)+k2/2);
k4=h*feval(f,T(j)+h,Y(j)+k3);
Y(j+1)=Y(j)+(k1+2*k2+2*k3+k4)/6;
end
R=[T' Y'];

Ejecucion en MatLab

>> R=rk4('f',0,3,1,10)
R=
0 1.0000
0.3000 0.8821
0.6000 0.8225
0.9000 0.8129
1.2000 0.8464
1.5000 0.9171
1.8000 1.0197
2.1000 1.1498
2.4000 1.3036
2.7000 1.4777
3.0000 1.6694
>>

Metodo de Adams-Bashforth-Moulton con predicción y corrección

function A=abm(f,T,Y)
% Datos: f es la funcion almacenada como una cadena
% de caracteres ’f’
% T es el vector de las abcsisas; su dimension es el numero de
% pasos
% Y es el vector de las ordenadas
% observacion
% las cuatro primeras coordenadas de T e Y
% deben contener valores iniciales
% calculados con el metodo RK4
% Resultado: R=[T’ Y’] siendo T el vector de las abscisas
% e Y el vector de las ordenadas
n=length(T);
if n<5, break,end;
F=zeros(1,4);
F=feval(f,T(1:4),Y(1:4));
h=T(2)-T(1);
for k=4:n-1
% predictor
p=Y(k)+(h/24)(F*[-9 37 -59 55]');
T(k+1)=T(1)+h*k;
F=[F(2) F(3)F(4) feval(f,T(k+1),p)];
% corrector
Y(k+1)=Y(k)+(h/24)*(F*[1 -5 19 9]');
F(4)=feval(f,T(k+1),Y(k+1));
end
A=[T' Y'];

Ejecucion en Matlab
>>
>> R=rk4('f',0,3,1,25) % paso = 1/8
R=
0 1.0000
0.1200 0.9453
0.2400 0.9008
0.3600 0.8658
0.4800 0.8399
0.6000 0.8225
0.7200 0.8130
0.8400 0.8111
0.9600 0.8164
1.0800 0.8282
1.2000 0.8464
1.3200 0.8706
1.4400 0.9003
1.5600 0.9352
1.6800 0.9751
1.8000 1.0197
1.9200 1.0687
2.0400 1.1218
2.1600 1.1788
2.2800 1.2395
2.4000 1.3036
2.5200 1.3710
2.6400 1.4414
2.7600 1.5147
2.8800 1.5908
3.0000 1.6694
>>

Examen

1. Elabore un programa que resuelva un sistema de tres ecuaciones con tres incongnitas. Usando el
determinante de orden 3x3. Se debe ingresar por teclado la matriz de coeficientes mediante el comando
input, de igual modo la matriz columna de términos independientes. Considere que la matriz de coeficientes
𝑎 𝑏 𝑐
tiene determinante no nulo. |𝑑 𝑒 𝑓 | = 𝑎𝑒𝑖 + 𝑑ℎ𝑐 + 𝑔𝑏𝑓 − 𝑔𝑒𝑐 − 𝑎ℎ𝑓 − 𝑑𝑏𝑖
𝑔 ℎ 𝑖
2. La cuenta tiene un capital inicial de $ 1000 y un interés de 6,5% que produce beneficios anualmente.
Para un capital inicial A, y una tasa de interés anual r, el monto (Interes + capital) B, después de n años,
𝑟 𝑛
viene dado por la expresión: 𝑀 = (1 + 100) .
a) Escriba un programa que calcule los montos (M) que se obtienen, a travez de los años, cuando n varia de
1 a 20. Presente el resultado en forma de dos columnas: año vs monto.
b) halle los tiempos necesarios para que el capital inicial quede multiplicado por k, siendo k un valor entero
positivo entre 1 y 10. Presente los resultados en una tabla.
3. La velocidad v y la distancia d, en función del tiempo, de un coche que tiene una aceleracion constante
a, vienen dados por: v (t )= at y d (t ) = 1 at 2
2
a) Determine v y d para cada segundo, durante 10 segundos, para un coche con una aceleración a = 1,55
m/s2. Muestre los resultados en una tabla de tres columnas en la e velocidad (m/s).
4. Dado un conjunto de 4 puntos ingresado por teclado. Elaborar un programa que permita hallar un polinomio de
grado menor o igual a tres que pase por ellos, construyendo para ello un SEL de 4 por 4. Luego graficar tal polinomio,
en el dominio de -5 a 5.
5. Dado un polinomio 𝑝 = 𝐴𝑥 2 + Bx + C, ingresar por teclado sus coeficientes. Elaborar un programa que
determine si la raíces de la función son reales, reales e iguales o complejas. Para ello deberá usar el comando “if
end” o alguna variante adecuada.
6 Elabore un programa que ordene 10 números ingresados por teclado.
𝑥 𝑥2 𝑥3
7. Dada la serie 𝑒 𝑥 = 1 + 1! + 2!
+ 3!
+ ⋯ , −∞ < 𝑥 < ∞, indicar los términos a considerar para calcular el valor

de la exponencial en x, cuando toma valores de 1, 2, 3, hasta 20. Considerando que el término no considerado sea
menor que 10−5.
2 /2
8. Resolver la ecuación diferencial 𝑦 ′ = −𝑡𝑦, 𝑐𝑜𝑛 𝑦(0) = 1, 𝑠𝑖𝑒𝑛𝑑𝑜 𝑙𝑎 𝑠𝑜𝑙𝑢𝑐𝑖𝑜𝑛 𝑟𝑒𝑎𝑙 𝑦(𝑡) = 𝑒 −𝑡 . Usando dos
métodos diferentes y evaluar los errores cometidos con respecto a la solución real.

Вам также может понравиться