Подпрограмма: ZF16R (модуль ZF16R_p)
Назначение
Вычисление нуля вещественной функции (трансцендентного уравнения)
на заданном интервале методом дихотомии.
Математическое описание
ZF16R вычисляет нуль вещественной функции y = F (x)
на интервале (A, B), на котором F (x) меняет знак, с
заданной точностью EPS методом дихотомии.
И.С.Березин, Н.П.Жидков. Методы вычислений, т.1. Изд - во
"Наука", 1966.
Использование
procedure ZF16R(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 -
|
когда функция не меняет знака на заданном интервале.
|
Версии
ZF16E -
|
вычисление нуля вещественной функции на заданном
интервале методом дихотомии в режиме вычислений с
расширенной (Extended) точностью. При этом параметры A, B, EPS и ROOT
должны иметь тип Extended, а
подпрограмма - функция вычисления F (x)
должна тоже иметь тип Extended.
|
Вызываемые подпрограммы
UTZF10 -
|
подпрограмма выдачи диагностических сообщений при
работе подпрограммы ZF16R.
|
UTZF11 -
|
подпрограмма выдачи диагностических сообщений при
работе подпрограммы ZF16E.
|
Замечания по использованию
|
В подпрограммах ZF16R и ZF16E имеется глобальная запись (структура данных)
_ZF16RR с элементм elm1, который полагается
равным количеству итераций, выполненных при вычислении нуля
функции F (x).
|
Пример использования
Unit TZF16R_p;
interface
uses
SysUtils, Math, LStruct, Lfunc, UtRes_p, FZF16R_p, ZF16R_p;
function TZF16R: String;
implementation
function TZF16R: String;
var
ITMAX,IERR :Integer;
A,B,EPS,RООТ :Real;
begin
Result := '';
A := -2.57;
B := 1.57;
EPS := 1.E-5;
IТМАХ := 30;
ZF16R(FZF16R,A,B,EPS,ROOT,ITMAX,IERR);
Result := Result + Format('%20.16f %5d %5d ',[ROOT,_ZF16RR.elm1,IERR]) + #$0D#$0A;
UtRes('TZF16R',Result); //вывод результатов в файл TZF16R.res
exit;
end;
end.
Unit FZF16R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc;
function FZF16R(X :Real): Real;
implementation
function FZF16R(X :Real): Real;
begin
Result := Sin(X);
end;
end.
Результаты:
ROOT = - 0.000006386669
ITER = 19
IERR = 0