(*Métodos numéricos para equações diferenciais *)

(* RESOLUÇÃO DE UM PROBLEMA DE VALORES INICIAIS ATRAVÉS DO COMANDO NDSOLVE*)

Sol = 
      NDSolve[{y'[x] == 1 - y[x]/x, y[2] == 2}, 
        y, {x, 2, 3}]

Graf = 
      Plot[y[x] /. Sol, {x, 2, 3}, 
        PlotStyle -> {Thickness[0.008]}]

f[x_, y_] := 1.  - y/x;
Euler[x0_, y0_, h_, n_, cor1_, cor2_, cor3_] := 
      Module[{i, ynovo}, 
Eulery = {y0}; i = 0;  
        Do[ynovo =  
            Eulery[[-1]] + h*f[x0 + i*h, Eulery[[-1]]]; 
          AppendTo[Eulery, ynovo], {i, 0, n - 1}];  
        Print[Eulery]; 
Exacto = 
          Table[y[x0 + i*h] /. Sol[[1]], {i, 0, n}]; 
        Erro =  Exacto  - Eulery; 
        Valores = 
          Table[{x0 + (i - 1)*h, Eulery[[i]]}, {i, 1, n + 1}]; 
        Graf1 = ListPlot[Valores, PlotJoined -> True, 
            PlotStyle -> {RGBColor[cor1, cor2, cor3], 
                Thickness[0.008]}]]

Graf4 = Euler[2, 2, 0.25, 4, 0, 0, 1]

Erro4 = Erro

Graf8 = Euler[2, 2, 0.125, 8, 1, 0, 0]

Erro8 = Erro

Show[Graf, Graf4, Graf8]

GRÁFICOS DOS ERROS

Valores4 = 
      Table[{2 + 0.25*(i - 1), Erro4[[i]]}, {i, 1, 5}]

Graferro4 = 
      ListPlot[Valores4, PlotJoined -> True, 
        PlotStyle -> {RGBColor[0, 0, 1], Thickness[0.008]}]

Valores8 = 
      Table[{2 + 0.125*(i - 1), Erro8[[i]]}, {i, 1, 9}]

Graferro8 = 
      ListPlot[Valores8, PlotJoined -> True, 
        PlotStyle -> {RGBColor[1, 0, 0], Thickness[0.008]}]

Show[Graferro4, Graferro8]