Текст подпрограммы и версий
zf20r_p.zip  zf20e_p.zip 
Тексты тестовых примеров
tzf20r_p.zip  tzf20e_p.zip 

Подпрограмма:  ZF20R (модуль ZF20R_p)

Назначение

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

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

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

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

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

procedure ZF20R(F :Func_F1; A :Real; B :Real; EPS :Real; var ROOT :Real;
                ITMAX :Integer; var IERR :Integer);

Параметры

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

Версии

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

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

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

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

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

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

Unit TZF20R_p;
interface
uses
SysUtils, Math, LStruct, Lfunc, UtRes_p, FZF20R_p, ZF20R_p;

function TZF20R: String; 

implementation

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

end.

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

function FZF20R(X :Real): Real; 
implementation

function FZF20R(X :Real): Real;
begin
Result := Sin(X);
end;

end.

Результаты:

       ROOT = - 0.968786E - 16   

       ITER = 7
       IERR = 0