Текст подпрограммы и версий
zf15r_p.zip  zf15e_p.zip 
Тексты тестовых примеров
tzf15r_p.zip  tzf15e_p.zip 

Подпрограмма:  ZF15R (модуль ZF15R_p)

Назначение

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

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

ZF15R вычисляет нуль вещественной функции Y = F (X). Подпрограмма использует метод бисекции с линейной интерполяцией.

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

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

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

Параметры

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

Версии

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

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

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

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

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

Unit TZF15R_p;
interface
uses
SysUtils, Math, LStruct, Lfunc, UtRes_p, FZF15R_p, ZF15R_p;

function TZF15R: String; 

implementation

function TZF15R: String;
var
ITMAX,IERR :Integer;
A,B,EPS,RООТ :Real;
begin
Result := '';
IТМАХ := 20;
A := -3.3;
B := 4.6;
EPS := 0.00001;
ZF15R(FZF15R,A,B,EPS,ROOT,ITMAX,IERR);
Result := Result + Format(' %20.16f %20.16f %20.16f  %10d %10d %20.16f ',[A,B,EPS,ITMAX,IERR,ROOT]) + #$0D#$0A;
UtRes('TZF15R',Result);  //вывод результатов в файл TZF15R.res
exit;
end;

end.

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

function FZF15R(X :Real): Real; 
implementation

function FZF15R(X :Real): Real;
begin
Result := X*X+2.0*X-6.0;
end;

end.

Результаты:   ROOT  = 1.64575132 ,  ITMAX  =  8 ,  IERR  =  0