Аффинное оценивание элементарных функций

Для эффективного и широкого применения рассмотренных выше алгоритмов нужно уметь находить интервальные и аффинные оценки всех входящих в целевую функцию элементарных функций. В то время как задача получения интервальных оценок хорошо изучена и проста в реализации на вычислительном устройстве, аффинное оценивание является процессом значительно более сложным и мало изученным [5]. Автором данной работы были детально исследованы и усовершенствованы способы аффинного оценивания функций, и разработаны соответствующие алгоритмы. Некоторые результаты этого исследования мы рассмотрим ниже.

Как уже было сказано, чтобы оценить формулу в AA мы должны заменить каждую из элементарных операций z = ¦(x, y) на вещественных числах эквивалентной операцией = (, ) над аффинными формами [4,7], где  - процедура, вычисляющая аффинную форму z = ¦(x, y), которая соответствует , .

По определению

x = x 0 + x 1e1 + … + x nen    (1)

y = y 0 + y 1e1 + …+ y nen    (2)

для некоторых (неизвестных) значений (e1, …, en)ÎUn, где Un есть декартово произведение n вещественных интервалов [-1, 1]. Поэтому величина z есть функция ei, а именно

z = ¦(x, y) = ¦(x 0 + x 1e1 + … + x nen, y 0 + y 1e1 + …+ y nen) = ¦*(e1,…,en) (3)

Процедура  теперь должна заменить ¦*(e1,…,en) аффинной формой

 = z 0 + z 1e1 + …+ z nen,

которая сохраняет столько информации, сколько возможно из соотношений между x, y и z, вытекающих из (1-3), но без использования других ограничений, которые не могут быть выведены из начальных данных.

В общем случае, когда ¦ является нелинейной операцией, функция ¦*(e1,…,en) = ¦(x, y) из (3) не может быть выражена как линейная комбинация ei. В этом случае мы можем подобрать некоторую линейную функцию

¦a(e1,…,en) = z 0 + z 1e1 + …+ z nen, (4)

которая аппроксимирует ¦*(e1,…,en) равномерно на области Un, и затем добавить к ней дополнительный член z kek, представляющий ошибку аппроксимации. Таким образом,

z = ¦a(e1,…,en) + z kek = z 0 + z 1e1 + …+ z nen + z kek.

Здесь ek должен быть новым символом шума (отличным от всех других символов шума в одном вычислении) и величина z k должна быть верхней границей модуля разницы между ¦a и ¦* для всех возможных значений e1,…,en; т.е.

max { | ¦*(e1,…,en) - ¦a(e1,…,en) |: (e1,…,en)ÎUn }

Заметим, что замена ¦* на ¦a + z kek частично отходит от основной цели AA: символ шума ek принимается независимым от e1,…,en, в то время как фактически это функция от них. Любые последующие операции, использующие z в качестве входного значения, не имеют сведений о взаимосвязи между ek и e1,…,en и поэтому могут возвращать аффинную форму, которая менее точна, чем необходимо.

Для минимизации потерянной информации мы должны выбрать коэффициенты z 0, z 1,…, z n таким образом, чтобы сделать новый член ошибки как можно меньше.

Другими словами ¦a должна быть многочленом первой степени, который наилучшим образом аппроксимирует ¦* на Un в смысле Чебышева минимизации максимальной ошибки.

Отметим одно свойство, которое окажется нам полезным в дальнейшем. Пусть нам надо найти наилучшую линейную аппроксимацию для функции ¦(x (e1,…,en)), где x (e1,…,en) = x 0 + x 1e1 + … + x nen, тогда ¦*(e1,…,en) = ¦(x 0 + x 1e1 + … + x nen) аппроксимируется на гиперкубе Un некоторой функцией ¦a(e1,…,en) = z 0 + z 1e1 + …+ z nen. Заметим, что функция ¦*(e1,…,en) – константа на любой гиперплоскости из Un, ортогональной вектору (x 1,…, x n). Нетрудно показать, что наилучшая (по Чебышеву) линейная аппроксимация ¦* также должна обладать этим свойством. Т.е. нам нужно рассматривать только аппроксимации ¦a(e1,…,en) вида

¦a(e1,…,en) = a  + b = a(x 0 + x 1e1 + … + x nen) + b.

Также легко показать, что значения a и b, которые минимизируют максимальную ошибку ¦a – ¦* есть в точности коэффициенты наилучшей линейной аппроксимации функции ¦(t) функцией a t + b на интервале [ ]. Таким образом, задача аппроксимации исходной функции n переменных редуцируется в задачу аппроксимации функции одной переменной. Можно показать (см. [16]), что для функции одной переменной прямая a t + b будет наилучшей линейной аппроксимацией на отрезке [ a, b ], если

a = , b = (5)

 Далее мы построим линейное приближение для конкретных функций: и ex. Техника, иллюстрируемая этими примерами, может быть легко распространена на большинство других элементарных операций и функций.

Аффинная оценка функции

Итак, рассмотрим аффинную оценку функции  [8]. Нам нужно аппроксимировать функцию ¦*(e1,…,en) = на гиперкубе Un некоторой функцией ¦a(e1,…,en) = z 0 + z 1e1 + …+ z nen и затем добавить к последней дополнительный член z kek для учета ошибки аппроксимации, где ek вновь созданный символ шума.

Как показано ранее, нам нужно рассматривать только аппроксимации вида ¦a(e1,…,en) = a  + b = a(x 0 + x 1e1 + … + x nen) + b.

Если [ a, b ] – интервал [ ], то оптимальные чебышевские коэффициенты a и b есть

a =

b =

и максимальная ошибка аппроксимации d =

Эта ошибка возникает на границах интервала, где кривая лежит ниже аппроксимирующей прямой и в точке c = , где кривая расположена выше прямой.

После того как a, b и d получены, мы можем вычислить

z 0 = a x 0 + b

z i = a x i     (i = 1,…,n)

z k = d

Этот анализ подразумевает, что мы можем вычислить a, b и d точно. На практике же, вычисление a может выйти за пределы машинно-представимых чисел с плавающей точкой и, таким образом, мы получим только приближение a¢ к оптимальному наклону a. Затем мы должны выбрать b так, чтобы минимизировать максимум |a¢ x + b - | вместо |a x + b - |. И опять мы сможем только вычислить приближение b¢ к оптимальному b. Ошибка аппроксимации d тогда будет максимумом |a¢ x + b¢ - |; и снова мы способны вычислить только верхнюю границу d¢ для нее.

После этого формулы для расчета z i должны быть изменены для использования a¢, b¢ и d¢ вместо a, b и d. В действительности, вычисление z 0, z 1,…, z n по этим формулам будет ухудшено ошибкой округления; поэтому мы должны будем определить верхние границы d¢0, d¢1,…, d¢n для этих ошибок и добавить их к ошибке аппроксимации d¢, всегда округляемой вверх, для получения ошибочного члена z k.

Аффинная оценка функции e x

Найдем линейную аппроксимацию ¦a(e1,…,en) = z 0 + z 1e1 + …+ z nen для функции ¦(x) = ex. Пусть a, b и d имеют тот же смысл, что и в предыдущей части, [ ] = [ a, b ]. Тогда из (5) следует, что a = . Для вычисления b нам нужно знать максимум и минимум функции d (x) = ex - a x на [ a, b ]. Производная d (x) равна (x) = ex – a. Следовательно, (x) = 0 при x * = ln (a)Î[ a, b ]. Но d¢¢ (x*) = ex > 0, то есть x* есть точка, в которой достигается минимум функции d (x) на [ a, b ]. Очевидно, что максимум достигается в точках a или b (причем из определения a имеем d (a) = d (b)). Таким образом, b = (d (a) + d (ln(a)))/2 и d = (d (a) – d (ln(a)))/2.

Как и в случае квадратного корня, мы сможем лишь получить верхние и нижние границы для величин a, b и d (здесь можно воспользоваться механизмом интервальной арифметики). После этого остается только немного перестроить формулы, по которым вычисляются z i, чтобы получить ¦a.

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: