Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
(1)
u(x) = y(x) ,
resultando as u(0) = , y la ecuacin diferencial de (1), u(x) = f(x, y, u).
Podemos escribir entonces al PVI de segundo orden dado en (1) como el
sistema:
(2)
Cabe aclarar que en cada paso se obtienen yi y ui, siendo estos valores
aproximados para y(ti) e y(ti) respectivamente. En cada paso se necesitan
estos dos valores para calcular una nueva iteracin, pero como resultado final,
slo se necesitan los valores de yi . Es decir, como resultado de aplicar el
algoritmo, se debe obtener el listado de los puntos (ti, yi).
A continuacin, se presenta el algoritmo de Euler adaptado para PVI de
segundo orden.
Ejemplo
Aproximar la solucin del PVI y''= - y' + y + x, y(0) = 1, y'(0) = 2 en el
intervalo [0,1].
Solucin
Primero debemos hacer la sustitucin y' = u, para hacer desaparecer la
derivada segunda. El sistema asociado de primer orden resulta:
Definimos una malla de paso h en el intervalo [0, 1], siendo entonces los
puntos de la malla de la forma:
xi = 0 + h i ,
i = 0, ..., n
Mtodo de Euler
Utilizando el Polinomio de Taylor puede obtenerse la siguiente
expresin con un orden de error local 2.
(9)
x(t+h)x(t)+hx(t)
Para una ODE de primer orden (ecuacin 5) se puede
reescribir
(10)
x(t+h)x(t)+hf(t,x(t))
Entonces, eligiendo un paso h podemos obtener una sucesin
que representa la solucin para el IVP, de la siguiente forma:
(11)
xi+1=xi+hf(ti,xi)
Ejemplo
Se tiene la siguiente ecuacin diferencial de segundo orden,
junto con sus valores iniciales:
(12)
++0.5sin()=0(0)=6(0)=0
Haciendo el cambio de variables obtenemos un sistema de
dos ODE de primer orden (en forma matricial)
(13)
xx0f(t,x1,x2)===(x1x2)=()60(x20.5sin(x1)x2)
Utilizando el mtodo de Euler (ecuacin 11), podemos obtener
la siguiente sucesin
(14)
Double subscripts: use braces to clarify?
Para un paso h=0.05 se genera la siguiente tabla de valores:
i
x1i
x2i
0.524
-0.013
0.523
-0.024
0.522
-0.036
10
0.499
-0.099
(19)
x(t+h)=x(t)+x(t)h+x(t)h22+x()h33!
con [t,t+h]. De la misma manera que hicimos con Euler para
una ODE de orden 1, ahora hay que remplazar x
(t) con f(t,x(t)), pero como f es una funcin de varias
variables, cuando aparece x(t) hay que remplazarlo por
la derivada total f(t,x(t))
(20)
x(t+h)=x(t)+hf(t,x(t))+h22(f(t,x(t))t+f(t,x(t))xf(t,x(t)))
Discretizando podemos obtener la sucesin:
(21)
xi+1=xi+hf(ti,xi)+h22(ft(ti,xi)+fx(ti,xi)f(ti,xi))
Ejemplo (Est mal)
Partiendo del ejemplo de euler tenemos que calcular ft y fx
(22)
ft=(0.5sin(x1)x20.5cos(x1)x2+0.5sin(x1)+x2)
x1i
x2i
0.523
-0.012
0.522
-0.023
0.519
-0.044
0.498
-0.095
10
Mtodo de Runge-Kutta
k1=(hx2h(0.5sin(x1)x2))
y k2 se obtiene de remplazar en f(t,x), donde aparezca t,
poner t+h, donde aparezca x1, Double subscripts: use braces
to clarify? siendo Double subscripts: use braces to clarify? el
primer componente del vector k1 y donde
aparezca x2 cambiar por Double subscripts: use braces to
clarify?.
(27)
Double subscripts: use braces to clarify?
Lo que produce al algoritmo en octave
x1 = pi / 6;
x2 = 0;
h = 0.05;
x = 0;
for i = 1:10
k11 = h * x2;
k12 = h * (-0.5 *sin(x1) - x2 );
k21 = h * (x2 + k12);
k22 = h * (-0.5 * sin(x1 + k11) - (x2 + k12) );
x1 = x1 + 0.5 * (k11 + k21);
x2 = x2 + 0.5 * (k12 + k22);
printf("Iteracion %d, x1 = %f, x2 = %f\n",i, x1,
x2);
end
Para un paso h=0.05 se genera la siguiente tabla de valores:
i
x1i
x2i
0.523
-0.012
0.522
-0.024
0.521
-0.035
0.497
-0.097
10
Orden local 4
(28)
xi+1k1k2k3k4=====xi+16(k1+2k2+2k3+k4)hf(ti,xi)hf(ti+h2,xi+k
12)hf(ti+h2,xi+k22)hf(ti+h,xi+k3)
Nota: Observar que Runge Kutta de orden 2 es Heun, de la
misma manera que Taylor de orden 1 es Euler.