Документ взят из кэша поисковой машины. Адрес
оригинального документа
: http://num-anal.srcc.msu.ru/lib_na/cat/zf_htm_p/zf18r_p.htm
Дата изменения: Tue Nov 24 12:04:20 2015 Дата индексирования: Sun Apr 10 03:40:31 2016 Кодировка: Windows-1251 |
Текст подпрограммы и версий zf18r_p.zip zf18e_p.zip |
Тексты тестовых примеров tzf18r_p.zip tzf18e_p.zip |
Выделение интервала, на котором вещественная функция меняет знак.
ZF18R определяет границы интервала (A, B), на котором вещественная функция y = F (x) меняет знак. На входе в подпрограмму задаются предположительные границы интервала (A, B), длина которого увеличивается в FACT раз до тех пор, пока не будет получен интервал (A, B), на котором F (x) меняет знак, либо пока не будет превзойдено заданное количество итераций.
procedure ZF18R(F :Func_F1; var A :Real; var B :Real; FACT :Real; N :Integer; var IERR :Integer);
Параметры
F - | имя вещественной подпрограммы - функции вычисления F (x); |
A, B - | вещественные переменные, содержащие на входе в подпрограмму предположительные границы интервала, а на выходе - найденные границы интервала, на котором F (x) меняет знак; |
FACT - | множитель, определяющий, во сколько раз должен увеличиваться текущий интервал (A, B) на каждом шаге итерации, FACT > 1 (тип: вещественный); |
N - | заданное максимальное количество увеличений первоначального интервала (A, B) (тип: вещественный); |
IERR - | целая переменная, служащая для сообщения об ошибках, обнаруженных в ходе работы подпрограммы; при этом |
IERR=65 - | когда границы первоначального интервала совпадают; |
IERR=66 - | когда интервал, на котором F (x) меняет знак, не найден за заданное количество итераций N. |
Версии
ZF18E - | определение интервала, на котором вещественная функция меняет знак, в режиме вычислений с расширенной (Extended) точностью. При этом параметры A, B и FACT должны иметь тип Extended, а подпрограмма - функция вычисления F (x) должна тоже иметь тип Extended. |
Вызываемые подпрограммы
UTZF10 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы ZF18R. |
UTZF11 - | подпрограмма выдачи диагностических сообщений при работе подпрограммы ZF18E. |
Замечания по использованию
В подпрограммах ZF18R и ZF18E имеется глобальная запись (структура данных) _ZF18RR с элементом elm1, который полагается равным выполненному количеству увеличений первоначального интервала (A, B). |
Unit TZF18R_p; interface uses SysUtils, Math, LStruct, Lfunc, UtRes_p, FZF18R_p, ZF18R_p; function TZF18R: String; implementation function TZF18R: String; var N,IERR :Integer; FACT,A,B :Real; begin Result := ''; FАСТ := 1.1; N := 50; A := 1.0; B := 1.1; ZF18R(FZF18R,A,B,FACT,N,IERR); Result := Result + Format('%20.16f %20.16f %5d %5d ',[A,B,_ZF18RR.elm1,IERR]) + #$0D#$0A; UtRes('TZF18R',Result); //вывод результатов в файл TZF18R.res exit; end; end. Unit FZF18R_p; interface uses SysUtils, Math, { Delphi } LStruct, Lfunc; function FZF18R(X :Real): Real; implementation function FZF18R(X :Real): Real; begin Result := Sin(X); end; end. Результаты: A = - 0.8448105 B = 1.1 NREAL = 5 IERR = 0