и по значению любого x, такого, что ax < x < bx вычислять значение F := F(x), где F(x) – функция для которой разыскивается ноль;
2. Функция F должна быть протранслирована с дальним типом вызова (с использованием директивы {$F+});
tоl
― желаемая длина интервала неопределенности конечного результата;
Без проверки предполагается, что и имеют противоположные знаки.
Выходная информация
zеrоin
― абсцисса, аппроксимирующая нуль функции F в интервале aх, bх.
Zеrоin вычисляет нуль в заданном интервале aх, bх в пределах допуска на ошибку 4 * macheрs * ABS( х ) + tol, где masheрs – относительная машинная точность.
рrogram tzeroin;
{$N-}
uses FMM, crt;
Var a, b, z, tol : float;
i, j : integer;
{$F+}
function f1(x : float) : float;
begin
f1:=x*(x*x-2)-5;
inc(j);
end;
{$F-}
Begin
clrscr;
writeln(' Иллюстрирующая программа для ZEROIN');
writeln;
writeln('Определяется корень полинома F(X) = X**3 - 2*X - 5');
writeln(' при 1 < X < 4 ');
writeln;
a:=1;
b:=4;
tol:=1e-1;
writeln(' Tol Root Nofun');
writeln;
for i:=-2 downto -11 do begin
j:=0;
tol:=tol*0.1;
writeln(tol,' ',
zeroin(a,b,tol,@F1),
' ',j);
end;
end.
Иллюстрирующая программа для ZEROIN
Определяется корень полинома F(X) = X**3 - 2*X - 5
при 1 < X < 4
Tol Root Nofun
1.0000000000E-02 2.0938719411E+00 9
1.0000000000E-03 2.0945519214E+00 9
1.0000000000E-04 2.0945519214E+00 10
1.0000000000E-05 2.0945519214E+00 10
1.0000000000E-06 2.0945514214E+00 10
1.0000000000E-07 2.0945514814E+00 11
1.0000000000E-08 2.0945514814E+00 11
1.0000000000E-09 2.0945514814E+00 11
1.0000000000E-10 2.0945514815E+00 12
1.0000000000E-11 2.0945514815E+00 12
Оптимизационные задачи представляют собой один из наиболее широких классов практически встречающихся задач численного анализа. Здесь ограничимся рассмотрением одномерной непрерывной оптимизационной задачи, т.е. считается, что задана функция на (т.е. определена процедура ее вычисления по заданным значениям ). Для решения поставленной задачи предлагается процедура FMIN.
function fmin( ax, bx,tol: float;
F: рointer): float;
FMIN вычисляет приближение к точке, где F достигает минимума на интервале [ах, bх].
Входная информация ах
― левый конец исходного интервала;
bх
― правый конец исходного интервала;
F
― указатель на внешнюю функцию, реализующую вычисление функции, минимум которой разыскивается. Процедура-функция F должна удовлетворять двум следующим требованиям:
1. Должна иметь описание:
function F( x : float ): float;
и по значению любого x, такого, что ax < x < bx вычислять значение F: = F(x), где F(x) – функция для которой разыскивается минимум;
2. Функция F должна быть протранслирована с дальним типом вызова (с использованием директивы {$F+});
tol
― желаемая длина интервала неопределенности конечного результата ( >= 0.0 ).
Выходная информация
FMIN
― абсцисса, аппроксимирующая точку, где F достигает минимума.
Метод использует комбинацию поиска золотого сечения и последовательной параболической интерполяции. Сходимость никогда не бывает значительно хуже, чем для поиска Фибоначчи. Если F имеет непрерывную вторую производную, положительную в точке минимума (не совпадающей ни с ах, ни с bх), то сходимость сверхлинейная и обычно имеет порядок примерно 1.324…
Функция F никогда не вычисляется в двух точках, отстоящих друг от друга менее чем на ерs * аbs( х ) + ( tol / 3 ), где ерs приблизительно равно квадратному корню из относительной машинной точности. Если F – унимодальная функция и вычисленные значения F сохраняют унимодальность при соблюдении указанного условия разделенности, то FMIN аппроксимирует абсциссу глобального минимума F на интервале (ах, bх) с ошибкой, меньшей 3 * ерs * аbs( х ) + tol. Если F не является унимодальной, то FMIN может с той же точностью аппроксимировать локальный минимум, возможно, не совпадающий с глобальным.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.