Текст подпрограммы и версий 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