Текст подпрограммы и версий
zf21r_p.zip  zf21e_p.zip 
Тексты тестовых примеров
tzf21r_p.zip  tzf21e_p.zip 

Подпрограмма:  ZF21R (модуль ZF21R_p)

Назначение

Вычисление нуля вещественной функции на заданном интервале методом Ньютона.

Математическое описание

ZF21R вычисляет нуль вещественной функции  y = F (X) на интервале (A, B) с заданной точностью EPS методом Ньютона.

И.С.Березин, Н.П.Жидков. Методы вычислений, т.1. Изд-во "Наука", 1966.

Использование

procedure ZF21R(FUNCD :Proc_F3; A :Real; B :Real; EPS :Real;
                var ROOT :Real; ITMAX :Integer; var IERR :Integer);

Параметры

FUNCD - имя подпрограммы вычисления заданной функции и ее производной в точке X; оформляется в виде подпрограммы с тремя формальными параметрами:
X - точка, в которой вычисляется значение функции и ее производной (тип: вещественный);
F - вещественная переменная, значение которой полагается равной значению функции в точке X;
DF - вещественная переменная, значение которой полагается равной значению производной функции в точке X
A, B - заданные нижняя и верхняя границы интервала, на котором ведется поиск нуля функции (тип: вещественный);
EPS - заданная абсолютная погрешность вычисления нуля функции (тип: вещественный);
ROOT - вещественная переменная, значение которой в результате работы подпрограммы полагается равным вычисленному нулю функции;
ITMAX - целая переменная, значение которой перед началом работы подпрограммы должно быть положено равным максимальному числу итераций, ориентировочно требуемых для обеспечения сходимости к нулю функции;
IERR - целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом
IERR = 65 - когда нуль функции не может быть посчитан в пределах заданного числа итераций;
IERR = 66 - когда произошел выход за границы заданного интервала.

Версии

ZF21E - вычисление нуля вещественной функции на заданном интервале методом Ньютона в режиме вычислений с расширенной (Extended) точностью. При этом параметры A, B, EPS, ROOT и формальные параметры подпрограммы FUNCD должны иметь тип Extended.

Вызываемые подпрограммы

UTZF10 - подпрограмма выдачи диагностических сообщений при работе подпрограммы ZF21R.
UTZF11 - подпрограмма выдачи диагностических сообщений при работе подпрограммы ZF21E.

Замечания по использованию

  В подпрограммах ZF21R и ZF21E имеется глобальная запись (структура данных) _ZF21RR с элементом elm1, который полагается равным количеству итераций, выполненных при вычислении нуля функции.

Пример использования

Unit TZF21R_p;
interface
uses
SysUtils, Math, LStruct, Lfunc, UtRes_p, FZF21R_p, ZF21R_p;

function TZF21R: String; 

implementation

function TZF21R: String;
var
ITMAX,IERR :Integer;
A,B,EPS,RООТ :Real;
begin
Result := '';
A := -2.57;
B := 1.57;
EPS := 1.E-5;
IТМАХ := 30;
ZF21R(FZF21R,A,B,EPS,ROOT,ITMAX,IERR);
Result := Result + Format('%20.16f %5d %5d ',[ROOT,_ZF21RR.elm1,IERR])
+ #$0D#$0A;
UtRes('TZF21R',Result);  //вывод результатов в файл TZF21R.res
exit;
end;

end.

Unit FZF21R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc;

procedure FZF21R(X :Real; var F :Real; var DF :Real); 
implementation

procedure FZF21R(X :Real; var F :Real; var DF :Real);
begin
F := Sin(X);
DF := Cos(X);
end;

end.

 Результаты:  ROOT  =  0.0 ,   ITER  =  4 ,   IERR  =  0