Текст подпрограммы и версий
zf17r_p.zip  zf17e_p.zip 
Тексты тестовых примеров
tzf17r_p.zip  tzf17e_p.zip 

Подпрограмма:  ZF17R (модуль ZF17R_p)

Назначение

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

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

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

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

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

procedure ZF17R(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 - когда функция не меняет знака на заданном интервале.

Версии

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

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

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

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

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

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

Unit TZF17R_p;
interface
uses
SysUtils, Math, LStruct, Lfunc, UtRes_p, FZF17R_p, ZF17R_p;

function TZF17R: String; 

implementation

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

end.

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

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

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

end.

Результаты:

        ROOT = - 0.000008279458 

        ITER = 5
        IERR = 0