Для минимизации потерянной информации мы должны выбрать коэффициенты z0, z1,…, zn таким образом, чтобы сделать новый член ошибки как можно меньше.
Другими словами ¦a должна быть многочленом первой степени, который наилучшим образом аппроксимирует ¦* на Un в смысле Чебышева минимизации максимальной ошибки.
Отметим одно свойство, которое окажется нам полезным в дальнейшем. Пусть нам надо найти наилучшую линейную аппроксимацию для функции ¦(x(e1,…,en)), где x(e1,…,en) = x0 + x1e1 + … + xnen, тогда ¦*(e1,…,en) = ¦(x0 + x1e1 + … + xnen) аппроксимируется на гиперкубе Un некоторой функцией ¦a(e1,…,en) = z0 + z1e1 + …+ znen. Заметим, что функция ¦*(e1,…,en) – константа на любой гиперплоскости из Un, ортогональной вектору (x1,…, xn). Нетрудно показать, что наилучшая (по Чебышеву) линейная аппроксимация ¦* также должна обладать этим свойством. Т.е. нам нужно рассматривать только аппроксимации ¦a(e1,…,en) вида
¦a(e1,…,en) = a
Также легко показать, что значения a и b, которые минимизируют максимальную ошибку ¦a – ¦* есть в точности коэффициенты наилучшей линейной аппроксимации функции ¦(t) функцией at + b на интервале [
a =
Далее мы построим линейное приближение для конкретных функций:
Аффинная оценка функции
Итак, рассмотрим аффинную оценку функции
Как показано ранее, нам нужно рассматривать только аппроксимации вида ¦a(e1,…,en) = a
Если [a, b] – интервал [
a =
b =
и максимальная ошибка аппроксимации d =
Эта ошибка возникает на границах интервала, где кривая лежит ниже аппроксимирующей прямой и в точке c = , где кривая расположена выше прямой.
После того как a, b и d получены, мы можем вычислить
z0 = ax0 + b
zi = axi (i = 1,…,n)
zk = d
Этот анализ подразумевает, что мы можем вычислить a, b и d точно. На практике же, вычисление a может выйти за пределы машинно-представимых чисел с плавающей точкой и, таким образом, мы получим только приближение a¢ к оптимальному наклону a. Затем мы должны выбрать b так, чтобы минимизировать максимум |a¢x + b -
После этого формулы для расчета zi должны быть изменены для использования a¢, b¢ и d¢ вместо a, b и d. В действительности, вычисление z0, z1,…, zn по этим формулам будет ухудшено ошибкой округления; поэтому мы должны будем определить верхние границы d¢0, d¢1,…, d¢n для этих ошибок и добавить их к ошибке аппроксимации d¢, всегда округляемой вверх, для получения ошибочного члена zk.
Аффинная оценка функции ex
Найдем линейную аппроксимацию ¦a(e1,…,en) = z0 + z1e1 + …+ znen для функции ¦(x) = ex. Пусть a, b и d имеют тот же смысл, что и в предыдущей части, [
Как и в случае квадратного корня, мы сможем лишь получить верхние и нижние границы для величин a, b и d (здесь можно воспользоваться механизмом интервальной арифметики). После этого остается только немного перестроить формулы, по которым вычисляются zi, чтобы получить ¦a.
Представление аффинных форм на ЭВМ
Описанный выше математический аппарат был применен автором в разработке конкретных библиотек на языке программирования C++. В них описаны такие классы, как интервал (interval), аффинная форма (affine_form) и смешанная аффинно-интервальная форма (mixed_form). Класс affine_form представляет аффинную форму
Обычно любая аффинная форма, появляющаяся в вычислении будет иметь различное число членов с различным множеством индексов символов шума. Две аффинные формы зависимы тогда и только тогда, когда они включают члены с одинаковыми индексами i.
Алгоритмам, оперирующим двумя или более аффинными формами таким, как процедуры сложения и умножения обычно требуется подобрать соответствующие члены из данных операндов пока идет вычисление членов результата. Для повышения скорости этого подбора мы можем добиться того, чтобы члены каждой аффинной формы всегда были отсортированы в неубывающем порядке их индексов символов шума.
Общие подформулы
Часто вычисляемые выражения могут содержать некоторые подформулы более одного раза. Оценка таких выражений порождает многократное вычисление одной и той же подформулы, что является нерациональным. Кроме того, в AA это может повлиять еще и на точность результата. Причина состоит в том, что вычисляемая в очередной раз оценка повторяющейся подформулы представляет ошибки ее линеаризации множеством новых символов шума. Таким образом, эти подформулы подразумеваются лишь частично зависимыми друг от друга, в то время как они тождественны. Это несоответствие предопределяет ошибки, которые могли бы быть отброшены на последующих шагах. Поэтому, когда кодируются выражения вида
Теоретическая основа численных методов решения задачи глобальной оптимизации, в большинстве случаев, достаточно проста и легко доступна для понимания. Большинство проблем начинают появляться при разработке конкретных алгоритмов на практике. Вот некоторые из них: