Introduccin al programa
Mathematica .
RESOLUCIN NUMRICA DE ECUACIONES DIFERENCIALESCuando una ecuacin diferencial no se puede resolver de manera exacta (lo cual sucede en la mayora de loscasos), habr que recurrir a procedimientos numricos. En este caso, adems de la ecuacin diferencial y lacondiciones iniciales o de frontera, es necesario especificar el rango de las variables independientes dondequeremos la solucin.
El comando del Mathematica que permite obtener la solucin numrica es NDSolve.
Ejemplo 1: Resuelva el problema de valor inicial y ' = 2 x+ y,
y H0L = 2 utilizando los mtodos de Euler explcito, Euler implcito y el mtodo del Trapecio.
Haga lo mismo con el problema y ' = -104(y-1), y(0)=2. MTODO DE EULER EXPLCITO :
x0 = 0;y0 = 2;f@x_, y_D := 2 x + y;h = 0.01;
metEuler@8x_, y_
dibaprox = ListPlot@solDisD
0.05 0.10 0.15 0.20
2.1
2.2
2.3
2.4
en este caso podemos calcular la solucin exacta, que nos servir para comparar con ella la solucin discreta.
DSolve@8y'@xD 2 x + y@xD, y@0D 2
Show@dibaprox, dibexacD
0.05 0.10 0.15 0.20
2.1
2.2
2.3
2.4
Los errores los podemos representar calculando en cada punto la diferencia entre la solucin exacta y el valorproporcionado por el mtodo de Euler :
ListPlot@solExac@solDis@@All, 1DDD - solDis@@All, 2DDD
20 40 60 80 100
0.01
0.02
0.03
0.04
0.05
Con el otro problema podemos proceder de forma anloga :
x0 = 0;y0 = 2;f@x_, y_D := -10^4 Hy - 1L;h = 0.01;
metEuler@8x_, y_
dibaprox = ListPlot@solDis, Joined TrueD
0.2 0.4 0.6 0.8 1.0
-8 10133
-6 10133
-4 10133
-2 10133
2 10133
4 10133
DSolve@8y'@xD -10^4 Hy@xD - 1L, y@0D 2
El mtodo de Euler no es un buen mtodo para resolver este problema.
MTODO DE EULER IMPLCITO :
Procedemos a aplicar el mtodo de Euler implcito para resolver el primer problema :
x0 = 0;y0 = 2;f@x_, y_D := 2 x + y;h = 0.01;
y1 y0 + h f@x0 + h, y1Dsol = FindRoot@y1 y0 + h f@x0 + h, y1D, 8y1, y0
Show@dibaprox, dibexacD
0.5 1.0 1.5 2.0
5
10
15
20
ListPlot@solExac@solDisI@@All, 1DDD - solDis@@All, 2DDD
20 40 60 80 100
-0.05
-0.04
-0.03
-0.02
-0.01
Y a continuacin lo aplicamos al segundo problema :
x0 = 0;y0 = 2;f@x_, y_D := -10^4 Hy - 1L;h = 0.01;
sol = FindRoot@yn 2 + h f@0 + h, ynD, 8yn, 2
dibaprox =ListPlot@solDisI, Joined True, PlotStyle RGBColor@0, 1, 0DD
0.2 0.4 0.6 0.8 1.0
1.2
1.4
1.6
1.8
2.0
Ahora, la solucin aproximada proporcionada por el mtodo de Euler implcito se acerca con bastante exacti-tud a la solucin exacta :
Show@dibaprox, dibexacD
0.2 0.4 0.6 0.8 1.0
1.2
1.4
1.6
1.8
2.0
Los errores que se cometen son cada vez ms pequeos :
ListPlot@dif = solExact@solDisI@@All, 1DDD - solDisI@@All, 2DDD
20 40 60 80 100
-0.010
-0.008
-0.006
-0.004
-0.002
12-Mtodos de resolucion de ecuaciones diferenciales.nb 7
dif
90, -0.00990099, -0.0000980296, -9.705910-7, -9.609810-9,-9.5146610-11, -9.4213510-13, -9.3258710-15, 0., 0., 0.,0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.,0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.=
MTODO DEL TRAPECIO :
Resolvemos el primer problema considerando el mtodo del Trapecio :
metTrapecio@8x_, y_
ListPlot@solExac@solDisT@@All, 1DDD - solDisT@@All, 2DDD20 40 60 80 100
-0.00008
-0.00006
-0.00004
-0.00002
Y ahora, resolvemos el segundo problema considerando el mtodo del Trapecio :
x0 = 0;y0 = 2;f@x_, y_D := -10^4 Hy - 1L;h = 0.01;solExact@x_D := 1 + -10000 x;solDisT = NestList@metTrapecio, 8x0, y0
metEulerMejorado@8x_, y_
x0 = 0;y0 = 2;f@x_, y_D := 2 x + y;h = 0.01;solExac@x_D := 2 H-1 + 2 x - xLsolDisEM = NestList@metEulerMejorado, 8x0, y0
x0 = 0;y0 = 2;f@x_, y_D := -10^4 Hy - 1L;h = 0.01;solExac@x_D := 1 + -10000 x;npasos = 200;
solDisE = NestList@metEuler, 8x0, y0
Top Related