Newton.PAS

{* Метод Ньютона *}

Unit NEWTON;
Interface
Implementation
Begin
 writeln('Метод Ньютона решения нелинейного уравнения');
End.

Program Newton;

Uses Newton.pas; {* Эту строку можно удалить *}
Uses crt; {модуль управления экраном}
Function f(x : real) : real; {Исходная функция}
Begin
  f := sqr(sqr(x)) - 5 * sqr(x) - x + 1;
End;
Function f1(x : real) : real; {Первая производная функции}
Begin
  f1 := 4 * x * sqr(x) - 10 * x - 1;
End;
Var {* Необходимые переменные *}
  a  : real;
  b  : real;
  x  : real;
  e  : real;
  en : real;
  i  : integer;
Begin
  clrscr; {очистить экран}
  writeln ('Решение нелинейного уравнения методом Ньютона');
  writeln ('Уравнение x^4+5x^2-x+1=0');
  write ('Введите левую и правую границы интервала:');
  read (a, b);
  write ('Введите требуемую точность решения:');
  read (e);
  writeln ('Решение:');
  writeln ('Номер шага Значение X');
  en := abs(a - b);
  x := b;
  i := 1;
  While (abs(en) > e) Do
  Begin
    x := x - f(x) / f1(x); {выполнить шаг метода}
    writeln (i : 10, x : 20 : 14); {вывести значение X с шага}
    en := abs(x - b); {Новая точность}
    b := x; {Значение границы для следующего шага}
    i := i + 1; {Номер шага}
  End;
  
End.