Integration af 1.ordens differentialligning
Euler's metode, Opgave 11 i Afsnit 19.1 (7. udgave opgave 15 i afsnit 20.1)

Clear[x, y, f, F, z, w];

h = 0.1; n = 8;

x[0] = 1; Do[x[i] = x[i - 1] + h, {i, n}]

f[x_, y_] = ((2 (Sqrt[y - Log[x]]))/x) + (1/x); y[0] = 0;

F[x_] = Log[x] (Log[x] + 1);

g1 = Plot[F[x], {x, 1, 1.8}]

Do[y[i] = y[i - 1] + h f[x[i - 1], y[i - 1]], {i, n}]

z = Table[{x[i - 1], y[i - 1]}, {i, n + 1}]; \(\(w = 
      Table[{x[i - 1], y[i - 1], f[x[i - 1], y[i - 1]], 
			F[x[i - 1]], 
          F[x[i - 1]] - y[i - 1]}, {i, n + 1}]; \)\)

\(TableForm[w, \ 
      TableHeadings -> 

        		{None, {\*""\!\(x\_n\)"", \*""\!\(y\_n\)"", 
            \*""f(\!\(x\_n\),\!\(y\_n\))"", \*""y(\!\(x\_n\))"", 
            \*""\!\(ϵ\_n\)""}}]\)

g2 = 
      ListPlot[z, PlotStyle -> {PointSize[0.015], RGBColor[1, 0, 0]}]

Show[g1, g2]

Euler's forbedrede metode, Opgave 12 (16)

h = 0.2; n = 4; Do[x[i] = x[i - 1] + h, {i, n}]

\(Do[{k1 = h\ f[x[i - 1], y[i - 1]]; 
		
        k2 = h\ f[x[i], y[i - 1] + k1]; 
		
        y[i] = y[i - 1] + 0.5\ \((k1 + k2)\)}, {i, n}]\)

z = Table[{x[i - 1], y[i - 1]}, {i, n + 1}]; \(\(w = 
      Table[{x[i - 1], y[i - 1], k1 = h\ f[x[i - 1], y[i - 1]], 
			
          h\ f[x[i], y[i - 1] + k1], F[x[i - 1]], F[x[i - 1]] - y[i - 1]}, 

        		{i, n + 1}]; \)\)

\(TableForm[w, \ 
      TableHeadings\  -> \ 	

        			{None, {\*""\!\(x\_n\)"", \*""\!\(y\_n\)"", 
            \*""\!\(k\_1\)"", \*""\!\(k\_2\)"", 
            \*""y(\!\(x\_n\))"", \*""\!\(ϵ\_n\)""}}]\)

g3 = 
      ListPlot[z, PlotStyle -> {PointSize[0.015], RGBColor[0, 1, 0]}]

Show[g1, g2, g3]

Runge-Kutta metoden, Opgave 13 (17)

h = 0.4; n = 2; Do[x[i] = x[i - 1] + h, {i, n}]

\(Do[{k1 = h\ f[x[i - 1], y[i - 1]]; 
		
        k2 = h\ f[x[i - 1] + 0.5\ h, y[i - 1] + 0.5\ k1]; 
		
        k3 = h\ f[x[i - 1] + 0.5\ h, y[i - 1] + 0.5\ k2]; 
		
        k4 = h\ f[x[i], y[i - 1] + k3]; 
		
        y[i] = y[i - 1] + 1\/6\ \((k1 + 2\ k2 + 2\ k3 + k4)\)}, {i, n}]\)

\(\(w = 
      Table[{x[i - 1], y[i - 1], k1 = h\ f[x[i - 1], y[i - 1]], 
			
          k2 = h\ f[x[i - 1] + 0.5\ h, y[i - 1] + 0.5\ k1], 
			
          k3 = h\ f[x[i - 1] + 0.5\ h, y[i - 1] + 0.5\ k2], 
			
          h\ f[x[i], y[i - 1] + k3]}, {i, n + 1}]; \)\)

\(TableForm[w, \ 
      TableHeadings\  -> \ 	

        			{None, {\*""\!\(x\_n\)"", \*""\!\(y\_n\)"", 
            \*""\!\(k\_1\)"", \*""\!\(k\_2\)"", 
            \*""\!\(k\_3\)"", \*""\!\(k\_4\)""}}]\)

z = Table[{x[i - 1], y[i - 1]}, {i, n + 1}]; w = 
      Table[{x[i - 1], y[i - 1], F[x[i - 1]], F[x[i - 1]] - y[i - 1]}, {i, 
          n + 1}];

\(TableForm[w\ , 
      TableHeadings -> 

        		{None, {\*""\!\(x\_n\)"", \*""\!\(y\_n\)"", 
            \*""y(\!\(x\_n\))"", \*""\!\(ϵ\_n\)""}}]\)

g4 = 
      ListPlot[z, PlotStyle -> {PointSize[0.015], RGBColor[0, 0, 1]}]

Show[g1, g2, g3, g4]

Runge-Kutta metoden, Opgave 14 (18)

h = 0.1; n = 8; Do[x[i] = x[i - 1] + h, {i, n}]

\(Do[{k1 = h\ f[x[i - 1], y[i - 1]]; 
		
        k2 = h\ f[x[i - 1] + 0.5\ h, y[i - 1] + 0.5\ k1]; 
		
        k3 = h\ f[x[i - 1] + 0.5\ h, y[i - 1] + 0.5\ k2]; 
		
        k4 = h\ f[x[i], y[i - 1] + k3]; 
		
        y[i] = y[i - 1] + 1\/6\ \((k1 + 2\ k2 + 2\ k3 + k4)\)}, {i, n}]\)

\(\(w = 
      Table[{x[i - 1], y[i - 1], k1 = h\ f[x[i - 1], y[i - 1]], 
			
          k2 = h\ f[x[i - 1] + 0.5\ h, y[i - 1] + 0.5\ k1], 
			
          k3 = h\ f[x[i - 1] + 0.5\ h, y[i - 1] + 0.5\ k2], 
			
          h\ f[x[i], y[i - 1] + k3]}, {i, n}]; \)\)

\(TableForm[w, \ 
      TableHeadings\  -> \ 	

        			{None, {\*""\!\(x\_n\)"", \*""\!\(y\_n\)"", 
            \*""\!\(k\_1\)"", \*""\!\(k\_2\)"", 
            \*""\!\(k\_3\)"", \*""\!\(k\_4\)""}}]\)

z = Table[{x[i - 1], y[i - 1]}, {i, n + 1}]; w = 
      Table[{x[i - 1], y[i - 1], F[x[i - 1]], F[x[i - 1]] - y[i - 1]}, {i, 
          n + 1}];

\(TableForm[w, 
      TableHeadings -> 

        		{None, {\*""\!\(x\_n\)"", \*""\!\(y\_n\)"", 
            \*""y(\!\(x\_n\))"", \*""\!\(ϵ\_n\)""}}]\)

g4 = 
      ListPlot[z, PlotStyle -> {PointSize[0.015], RGBColor[0, 0, 1]}]

Show[g1, g2, g3, g4]

Fejlens størrelse kan vurderes ud fra de to udregniger af (Subscript[y, n]) hvis det antages at  ϵ= α   (h^β)   med en eksponent β  = 4, 
svarende til at Runge - 
          Kutta metoden er en 4.  ordens metode(Subscript[y, n]) = 0.907441 for h = 0.4 (opgave 13)(Subscript[y, n]) = 0.926141 for h = 0.1 (opgave 14)  dvs.    0.907441 +  α   (0.4^4) = 0.926141 +  α   (0.1^4)          som medfører  at   \(α\ \((0.4\^4\  - \ \ 0.1\^4)\)\  = \ 
          \(0.0255\ α\  = \ 
            \(0.926141\  - \ 0.907441\  = \ 
              \(0.0187\ \ eller\ \ \ α\  = \ 0.733\)\)\), \ 

        hvilket\ skulle\ betyde\ at\ fejlen\ \ ϵ\_n\  = \ 
          \(0.00007\ \ i\ tilfældet\ \ h\  = \ \ 0.1\), 
        som\ er\ en\ grov\ undervurdering\ af\ \(fejlen.\)\)

Det viser sig at  selv om Runge-Kutta metoden er en 4.ordens metode,  så aftager den opsummerede fejl med en eksponent der er ca. 1.  Denne eksponent kan findes ved at beregne (Subscript[y, n]) for endnu en værdi af h
 
          (Subscript[y, n])  =  
            0.932536  for h  =  
              0.01   ((Subscript[ϵ, n])  =  0.00074)
Benyttes dette resultat sammen med de to første resultater fås 3 lininger til at bestemme de to konstanter i fejludtrykket samt y(1.8). Resultatet er 
β = 0.918,  α = 0.060  =>  y(1.8) =  0.93341
med en numerisk fejl der er ca. 5 gange mindre end fejlen der optræder for h = 0.01.

Mathematica's numeriske løsning af differentialligningen

Clear[x, y, f, z, w];

eqn=y'[x]==((2 (Sqrt[y[x] - Log[x]]) + 1)/x);

\(\(solution = 
      NDSolve[{eqn, y[1] == 0}, y[x], {x, 0.99999, 2}, 
		
        AccuracyGoal -> 10]; \)\)

x = 0.9; h = 0.1; Table[{x = x + h, w = Abs[y[x] /. Flatten[solution]], z = F[x], 
        z - w}, {i, 9}];

\(TextForm
    \`\(\((Jeg\ har\ udregnet\ absolutværdien\ af\ y\_n\ for\ at\ fjerne\ 
          et\ 0\ i\ imaginærdelen\ i\ Mathematica' s\ løsning\ )
        \) . \)\)

\(ww = 
      TableForm[%, \ 
        TableHeadings\  -> \ 	

          			{None, {\*""\!\(x\_n\)"", \*""\!\(y\_n\)"", 
              \*""y(\!\(x\_n\))"", \*""\!\(ϵ\_n\)""}}]
        \)