Описание типов и констант модуля FMM. Задачи линейной алгебры. Подпрограмма DECOMP. Подпрограмма SOLVE, страница 11

и по значению любого 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

ГЛАВА 7. Задача одномерной оптимизации

Оптимизационные задачи представляют собой один из наиболее широких классов практически встречающихся задач численного анализа. Здесь ограничимся рассмотрением одномерной непрерывной оптимизационной задачи, т.е. считается, что задана функция  на  (т.е. определена процедура ее вычисления по заданным значениям ). Для решения поставленной задачи предлагается процедура FMIN.

§ 9. Подпрограмма FMIN

Объявление

function fmin( ax, bx,tol: float;

F: рointer): float;

Назначение

FMIN вычисляет приближение  к точке, где F достигает минимума на интервале [ах, 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 может с той же точностью аппроксимировать локальный минимум, возможно, не совпадающий с глобальным.