Needs["Graphics`ImplicitPlot`"]

Bisekcija

Plot[x^3 - 5  x + 1, {x, -4, 4}]

Bisection1[x^3 - 5  x + 1, -3, -2, 100,  10^-8]

Plot[x - Tan[x], {x, -2, 12}]

Plot[Cos[x] x - Sin[x], {x, -2, 12}]

Navadna iteracija

NSolve[x^3 - 5  x + 1 == 0]

Iterate1[(1 + x^3)/5, 0, 100, 10^-8]

Iterate1[(1 + x^3)/5, 2.5, 5, 10^-8]

Iterate1[(1 + x^3)/5, -2.5, 5, 10^-8]

Iterate1[(1 + x^3)/5, 2, 100, 10^-8]

Iterate1[1/(5 - x^2), 0, 100, 10^-8]

Iterate1[1/(5 - x^2), 2.5, 100, 10^-8]

Iterate1[1/(5 - x^2), -5, 100, 10^-8]

Tretji[x_] := 
      If[x ≥ 0, 
        x^(1/3), -((-x)^(1/3))]

Iterate1[Tretji[5  x - 1], 0, 100, 10^-8]

Iterate1[Tretji[5  x - 1], 0.3, 100, 10^-8]

Newtonova (tangentna) metoda

NSolve[2  x^4 - 11  x^3 + 21  x^2 - 16  x + 4 == 0]

Plot[2  x^4 - 11  x^3 + 21  x^2 - 16  x + 4, {x, -1, 3}]

Newton1[2  x^4 - 11  x^3 + 21  x^2 - 16  x + 4, 0.6, 100, 
      10^-8]

Newton1[2  x^4 - 11  x^3 + 21  x^2 - 16  x + 4, 1.1, 100, 
      10^-8]

Newton1[2  x^4 - 11  x^3 + 21  x^2 - 16  x + 4, 2.1, 100, 
      10^-8]

NSolve[2  x^3 + 21  x^2 - 16  x + 4 == 0]

Newton1[2  x^3 + 21  x^2 - 16  x + 4, 0.4, 10, 10^-8]

Newton1[2  x^3 + 21  x^2 - 16  x + 4, 0.4 + 0.1  I, 10, 
      10^-8]

Newtonova metoda v več dimenzijah

ImplicitPlot[{x^2 + x y^3 == 9, 
        3 x^2 y - y^3 == 4}, {x, -4, 4}, {y, -3, 
        3}]

NSolve[{x^2 + x y^3 == 9, 
        3 x^2 y - y^3 == 4}]

Newton2[{x^2 + x y^3 - 9, 3 x^2 y - y^3 - 4}, {3, 0.5}, 10, 
      10^-10, True, {x, y}]

Sistem odvisen od parametra

Ičemo presečiča implicitno podanih krivulj 
  x^2+y^2 = r, 
  x^2-2x y+y = 1,
kjer je r parameter.

Ko se radij kronice spreminja, se spreminja tudi tevilo točk, kjer se sekata krivulja in kronica. Z ukazom NSolve lahko poičemo vse reitve, nas pa zanimajo samo realne.

ImplicitPlot[{x^2 + y^2 == 0.5, 
        x^2 - 2  x y + y == 1}, {x, -2, 2}, {y, -2, 
        2}]

FindRoot[{x^2 + y^2 == 0.5, 
        x^2 - 2  x y + y == 1}, {x, -0.2}, {y, 0.7}]

ImplicitPlot[{x^2 + y^2 == 0.6, 
        x^2 - 2  x y + y == 1}, {x, -2, 2}, {y, -2, 
        2}]

Pri malo spremenjenem radiju kronice so prejnja presečiča dobri začetni pribliki za nova presečiča.

FindRoot[{x^2 + y^2 == 0.6, 
        x^2 - 2  x y + y == 1}, {x, -0.2}, {y, 0.67}]

Med radijem 0.3 in radijem 0.4 pride do preskoka v tevilu presečič. Pri mejni vrednosti r bo Jacobi singularen. Tako dobimo e tretjo enačbo za tri neznanke x,y,r. Za začetni pribliek vzamemo točko x,y,r, ki je presečiče pri taki vrednosti r, da je zelo blizu drugemu presečiču.

ImplicitPlot[{x^2 + y^2 == 0.4, 
        x^2 - 2  x y + y == 1}, {x, -2, 2}, {y, -2, 
        2}]

FindRoot[{x^2 + y^2 == 0.4, 
        x^2 - 2  x y + y == 1}, {x, -0.2}, {y, 0.67}]

jac[x_, y_] = 
      Det[{{2  x, 2  y}, {2  x - 2  y, -2 x + 1}}]

Reimo sistem 3 enačb s tremi neznankami. S parametri WorkingPrecision in AccuracyGoal povečamo natančnost računanja, da dobimo r na dovolj decimalnih mest.

N[FindRoot[{x^2 + y^2 == r, x^2 - 2  x y + y == 1, 
          jac[x, y] == 0}, {x, -0.32}, {y, 0.67}, {r, 0.4}, 
        WorkingPrecision -> 20, AccuracyGoal -> 12], 18]

Tako smo izračunali mejno vrednost r, pri kateri pride do preskoka v tevilu presečič.