|
Текст подпрограммы и версий zf19r_p.zip zf19e_p.zip |
Тексты тестовых примеров tzf19r_p.zip tzf19e_p.zip |
Выделение заданного числа интервалов, на которых вещественная функция меняет знак.
ZF19R внутри заданного интервала (A, B) выделяет NB интервалов, на которых вещественная функция y = F (x) меняет знаки. Интервал (A, B) делится на N частей, после чего на границах каждого из полученных интервалов проверяются знаки F (x). Границы интервалов, на которых функция меняет знаки, запоминаются в одномерных массивах A1 и B1, а их число помещается в переменную NROOT.
procedure ZF19R(F :Func_F1; A :Real; B :Real; N :Integer;
var A1 :Array of Real; var B1 :Array of Real;
NB :Integer; var NROOT :Integer);
Параметры
| F - | имя вещественной подпрограммы - функции вычисления F (x); |
| A, B - | границы интервала, внутри которого выделяются искомые интервалы (тип: вещественный); |
| N - | заданное количество разбиений исходного интервала (A, B) (тип: целый); |
| A1, B1 - | вещественные вектора длины NB, в которых помещаются левые и правые границы выделенных интервалов, соответственно; |
| NB - | заданное количество искомых интервалов (тип: целый); |
| NROOT - | целая переменная, значение которой полагается равным количеству выделенных интервалов. |
Версии
| ZF19E - | выделение заданного числа интервалов, на которых вещественная функция меняет знак, в режиме вычислений с расширенной (Extended) точностью. При этом параметры A, B, A1 и B1 должны иметь тип Extended, а подпрограмма - функция вычисления F (x) тоже должна иметь тип Extended. |
Вызываемые подпрограммы: нет
Замечания по использованию: нет
Unit TZF19R_p;
interface
uses
SysUtils, Math, LStruct, Lfunc, UtRes_p, FZF19R_p, ZF19R_p;
function TZF19R: String;
implementation
function TZF19R: String;
var
N,NB,I,NRООТ :Integer;
A,B :Real;
A1 :Array [0..49] of Real;
B1 :Array [0..49] of Real;
begin
Result := '';
A := -2*3.15;
B := 2*3.15;
N := 100;
NB := 50;
ZF19R(FZF19R,A,B,N,A1,B1,NB,NROOT);
Result := Result + #$0D#$0A;
for I:=1 to NRООТ do
begin
Result := Result + Format('%20.16f ',[A1[I-1]]) + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
Result := Result + Format('%s',[' ВЕКТОР B1']) + #$0D#$0A;
Result := Result + #$0D#$0A;
for I:=1 to NRООТ do
begin
Result := Result + Format('%20.16f ',[B1[I-1]]) + #$0D#$0A;
end;
Result := Result + #$0D#$0A;
Result := Result + Format('%5d ',[NROOT]) + #$0D#$0A;
UtRes('TZF19R',Result); //вывод результатов в файл TZF19R.res
exit;
end;
end.
Unit FZF19R_p;
interface
uses
SysUtils, Math, { Delphi }
LStruct, Lfunc;
function FZF19R(X :Real): Real;
implementation
function FZF19R(X :Real): Real;
begin
Result := Sin(X);
end;
end.
Результаты:
A1 = ( - 6.3, - 3.15, - 0.235*10 - 5, 3.02, 6.17 )
B1 = ( - 6.17, - 3.02, 0.126, 3.15, 6.3 )
NROOT = 5