| Текст подпрограммы и версий zf15r_p.zip zf15e_p.zip | Тексты тестовых примеров tzf15r_p.zip tzf15e_p.zip | 
Вычисление нуля вещественной функции на заданном интервале методом бисекции с линейной интерполяцией.
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