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