Está en la página 1de 5

GUÍA - SOLUCION NUMÉRICA DE

ECUACIONES DIFERENCIALES.
Por : Alvaro H. Salas
En Mathematica podemos hacer uso del comando NDSolve.
EJEMPLO 1. Resolver y' (x) + x y (x) = x2 sujeta a y (0) = 1 en el intervalo 0 ≤ x ≤ 7.
Clear[y]; NDSolvey '[x] + x y[x] ⩵ x2 && y[0] ⩵ 1, y[x], {x, 0, 7}
{{y[x] → InterpolatingFunction[{{0., 7.}}, <>][x]}}

El resultado es una función de interpolación cuyo dominio es 0 <= x <= 7. Esta función se
puede evaluar, lo mismo que derivar e integrar en su dominio. Veamos cómo utilizarla.
sol = NDSolvey '[x] + x y[x] ⩵ x2 && y[0] ⩵ 1, y[x], {x, 0, 7}[[1, 1, 2]]
InterpolatingFunction[{{0., 7.}}, <>][x]

Plot[Evaluate[sol], {x, 0, 7}]


7

1 2 3 4 5 6 7

NIntegrate[sol, {x, 0, 7}](*aquí estamos integrando la solución en el intervalo [0,7]*)


23.1828

Derivative[1][sol][1.4](*ESTA ES LA PRIMERA DERIVADA DE LA SOLUCIÓN EN x=1.4*)

La solución también se puede definir como una función en la variable x así :


Clear[sol];
sol[x_] := NDSolvey '[t] + t y[t] ⩵ t2 && y[0] ⩵ 1, y[t], {t, 0, 7}[[1, 1, 2]] //. t → x;
2 LAB 01-edos-Solución Numérica-Alvaro Salas.nb

sol[2.6]
2.15694

sol '[3]
1.14617

sol ''[1.8]
0.690219

NIntegrate[sol[x], {x, 0, 7}]


(*aquí estamos integrando la solución en el intervalo [0,7]*)
23.1828

Plot[Evaluate[sol[x]], {x, 0, 7}]


7

1 2 3 4 5 6 7

Tabulemos la solución :
LAB 01-edos-Solución Numérica-Alvaro Salas.nb 3

tabla = Table[{x, sol[x]}, {x, 0, 7, 0.5}]


TableForm[Join[{{x, y[x]}}, tabla], TableAlignments → Center]
{{0., 1.}, {0.5, 0.922153}, {1., 0.881752}, {1.5, 1.07252}, {2., 1.49535},
{2.5, 2.04206}, {3., 2.61794}, {3.5, 3.18254}, {4., 3.72994}, {4.5, 4.26453},
{5., 4.79076}, {5.5, 5.31144}, {6., 5.82825}, {6.5, 6.34222}, {7., 6.85403}}
x y[x]
0. 1.
0.5 0.922153
1. 0.881752
1.5 1.07252
2. 1.49535
2.5 2.04206
3. 2.61794
3.5 3.18254
4. 3.72994
4.5 4.26453
5. 4.79076
5.5 5.31144
6. 5.82825
6.5 6.34222
7. 6.85403

La edo y' (x) + x y (x) = x2 sujeta a y (0) = 1


es lineal. Algunas ecuaciones de este tipo son
resueltas por Mathematica en forma analítica. Veamos si lo hace.

Clear[y]; DSolvey '[t] + t y[t] ⩵ t2 && y[0] ⩵ 1, y[t], t //. t → x

y[x] → 1 ⅇ- 2 2 π Erfi x  
x 2 x2
2+2ⅇ2 x-
2 2

La solución obtenida es un tanto extraña, ya que involucra una función que NO es elemental : la fun-
ción Erfi. Comparemos la SOLUCIÓN EXACTA CON LA SOLUCIÓN NUMÉRICA :
Clear[sol, f];
sol[x_] := NDSolvey '[t] + t y[t] ⩵ t2 && y[0] ⩵ 1, y[t], {t, 0, 7}[[1, 1, 2]] //. t → x;
1 x 2 x 2
x
f[x_] := ⅇ- 2 2 + 2 ⅇ 2 x - 2 π Erfi  ;
2 2
Plot[Evaluate[{sol[x], f[x]}], {x, 0, 7}, PlotStyle → {Red, {Dashed, Green, Thick}}]
7

1 2 3 4 5 6 7
4 LAB 01-edos-Solución Numérica-Alvaro Salas.nb

Esto es una comparación gráfica. También podemos comparar la solución exacta con la aproximada
mediante la diferencia : exacta - aproximada.
Clear[sol, f];
sol[x_] := NDSolvey '[t] + t y[t] ⩵ t2 && y[0] ⩵ 1, y[t], {t, 0, 7}[[1, 1, 2]] //. t → x;
1 x 2 x 2
x
f[x_] := ⅇ- 2 2 + 2 ⅇ 2 x - 2 π Erfi  ;
2 2
diferencias = Table[{x, Abs[sol[x] - f[x]]}, {x, 0, 7, 0.5}]
TableForm[Join[{{x, Abs[y[x] - approx[x]] // TraditionalForm}}, diferencias],
TableAlignments → Center]

{0., 0.}, 0.5, 3.15006 × 10-8 , 1., 1.39841 × 10-7 , 1.5, 2.00052 × 10-7 ,
2., 6.43578 × 10-8 , 2.5, 1.75849 × 10-7 , 3., 1.5172 × 10-7 , 3.5, 2.6258 × 10-8 ,
4., 8.87975 × 10-10 , 4.5, 3.01777 × 10-9 , 5., 1.8997 × 10-9 , 5.5, 2.81096 × 10-9 ,
6., 2.51513 × 10-9 , 6.5, 1.49341 × 10-8 , 7., 5.58532 × 10-9 

x y(x) - approx(x)
0. 0.
0.5 3.15006 × 10-8
1. 1.39841 × 10-7
1.5 2.00052 × 10-7
2. 6.43578 × 10-8
2.5 1.75849 × 10-7
3. 1.5172 × 10-7
3.5 2.6258 × 10-8
4. 8.87975 × 10-10
4.5 3.01777 × 10-9
5. 1.8997 × 10-9
5.5 2.81096 × 10-9
6. 2.51513 × 10-9
6.5 1.49341 × 10-8
7. 5.58532 × 10-9

La solución numérica coincide con la solución analítica con un error promedio de 10 -8 .


En general, una edo no se puede resolver en forma analítica. Esto justifica los métodos numéri-
cos de solución. Existen varios métodos. Quizás el más popular es el método de Runge - Kutta
de cuarto orden, denotado por RK4. EXisten tambiémn los RK5, RK6, etc.
En la proxima guía les explicaré el RK4 y el RK5. Se programará para resolver odes no lineales
cuya solución se conozca o no. Cuando la solución exacta se conoce, podemos comparar la
exacta y la aproximada.
Cuando no se conoce la solución exacta, se procede a estimar la bondad del algoritmo
numérico por medio del residual, concepto que también se explicará en la próxima guía.

TAREA PARA EL
TRABAJO : ESCOJA UNA EDO CUYA SOLUCIÓN SEA POR
UD CONOCIDA O QUE EL MATHEMATICA RESUELVA
LAB 01-edos-Solución Numérica-Alvaro Salas.nb 5

EN FORMA ANALÍTICA ( EXACTA). PROCEDA


COMO SE HA EXPLICADO EN ESTA GUÍA.

También podría gustarte