14
Introducción al programa Mathematica . RESOLUCIÓN NUMÉRICA DE ECUACIONES DIFERENCIALES Cuando una ecuación diferencial no se puede resolver de manera exacta (lo cual sucede en la mayoría de los casos), habrá que recurrir a procedimientos numéricos. En este caso, además de la ecuación diferencial y la condiciones iniciales o de frontera, es necesario especificar el rango de las variables independientes donde queremos la solución. El comando del Mathematica que permite obtener la solución numérica es NDSolve. Ejemplo 1: Resuelva el problema de valor inicial y ' = 2x + y, y H0L = 2 utilizando los métodos de Euler explícito, Euler implícito y el método del Trapecio. Haga lo mismo con el problema y ' =- 10 4 (y-1), y(0)=2. MÉTODO DE EULER EXPLÍCITO : x0 = 0; y0 = 2; f@x_, y_D := 2x + y; h = 0.01; metEuler@8x_, y_<D := 8x + h, y + hf@x, yD< p1 = metEuler@8x0, y0<D 80.01, 2.02< p2 = metEuler@p1D 80.02, 2.0404< El método de Euler proporciona una solución discreta, es decir, una serie de puntos de la forma (x_i, y_i) por lo que pasa la solución (aproximadamente). solDis = NestList@metEuler, 8x0, y0<, 20D 880, 2<, 80.01, 2.02<, 80.02, 2.0404<, 80.03, 2.0612<, 80.04, 2.08242<, 80.05, 2.10404<, 80.06, 2.12608<, 80.07, 2.14854<, 80.08, 2.17143<, 80.09, 2.19474<, 80.1, 2.21849<, 80.11, 2.24267<, 80.12, 2.2673<, 80.13, 2.29237<, 80.14, 2.3179<, 80.15, 2.34388<, 80.16, 2.37031<, 80.17, 2.39722<, 80.18, 2.42459<, 80.19, 2.45244<, 80.2, 2.48076<< Esta es la representación gráfica de la solución discreta :

Resolucion Numérica de Ecuaciones Diferenciales

  • Upload
    higinio

  • View
    42

  • Download
    6

Embed Size (px)

DESCRIPTION

Resolución numerica de ecuaciones diferenciales utilizando métodos básicos.

Citation preview

  • 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

  • solDisEM = 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

  • ERRORES LOCALES DE LOS MTODOS :Clear@x, y, hD;Series@y@x + hD - Hy@xD + h y'@xDL, 8h, 0, 3
  • Plot@solExac@xD - solMath@@1, 1, 2DD, 8x, 0, 2