![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
The Remez MethodBoost , Math Toolkit 2.5.0 , Chapter 17. Backgrounders
|
![]() |
Note |
---|---|
В простом случае полиномиального приближения путем интерполяции через корни чебышевского полинома мы фактически создали Чебышевское приближение к функции: с точки зрения абсолютная ошибка это лучший априорный выбор для интерполированной формы, который мы можем достичь, и, как правило, очень близок к минимаксному решению. Однако если мы хотим оптимизировать для относительную ошибку, или если приближение является рациональной функцией, то исходное решение Чебышева может быть довольно далеко от идеального решения minimax. Более техническое обсуждение теории можно найти в этом курсе online. |
Первым шагом в методе Ремеза, учитывая наш текущий набор контрольных точек Н+2 Чебышева xi, является решение одновременных уравнений N+2:
P(xi) + (-1)iE = f(xi)
Для получения погрешности используют термин E и коэффициенты полинома P(x).
Это дает нам новое приближение к f(x), которое имеет ту же ошибку E в каждой из контрольных точек, и чья функция ошибки изменяется в знаке в контрольных точках. Однако это не обязательно решение минимакса, так как контрольные точки могут находиться не на пределе функции ошибки. После этого первого шага вот как выглядит функция ошибки приближения:
Очевидно, что это все еще не минимаксное решение, так как контрольные точки не расположены на экстремуме, но максимальная относительная ошибка теперь снизилась до 5,6x10-4.
Второй шаг состоит в том, чтобы найти экстремумы нового приближения, что мы делаем в два этапа: во-первых, поскольку функция ошибки изменяет знак в каждой контрольной точке, мы должны иметь корни ошибки N+1, расположенные между каждой парой контрольных точек N+2. Как только эти корни найдены стандартными методами поиска корней, мы знаем, что N экстрема заключены в скобки между каждой парой корней, плюс еще два между конечными точками диапазона и первым и последним корнями. Экстрему N+2 можно найти, используя стандартные методы минимизации функций.
Теперь у нас есть выбор: многоточечный обмен или одноточечный обмен.
В одноточечном обмене мы перемещаем контрольную точку, ближайшую к наибольшей экстремуме, к значению абсиссы экстремы.
В многоточечной бирже мы меняем все текущие контрольные точки на места экстрема.
В нашем примере мы осуществляем многоточечный обмен.
Затем метод Ремеза выполняет этапы 1 и 2 выше итеративно до тех пор, пока контрольные точки не будут расположены в экстремуме функции ошибки: это затем решение minimax.
В нашем текущем примере еще две итерации сходятся в решении minimax с пиковой относительной ошибкой 5x10-4 и функцией ошибки, которая выглядит следующим образом:
Если мы хотим распространить метод Ремеза на рациональное приближение формы
f(x) = R(x) = P(x) / Q(x)
где P(x) и Q(x) являются многочленами, то мы действуем как прежде, за исключением того, что теперь у нас есть N+M+2 неизвестных, если P(x) имеет порядок N, а Q(x) имеет порядок M. Это предполагает, что Q(x) нормализуется таким образом, что его ведущий коэффициент равен 1, что дает полиномиальные коэффициенты N+M+1 в целом, плюс термин ошибки E.
Одновременные уравнения, которые необходимо решить, теперь:
P(xi) / Q(xi) + (-1)iE = f(xi)
Оценивается на контрольных точках N+M+2 xi.
К сожалению, эти уравнения нелинейны в термине ошибки E: мы можем решить их, только если знаем E, и все же E является одним из неизвестных!
Метод, обычно используемый для решения этих уравнений, является итеративным: мы угадываем значение E, решаем уравнения, чтобы получить новое значение для E (а также полиномиальные коэффициенты), а затем используем новое значение E в качестве следующего предположения. Метод повторяется до тех пор, пока Е не сходится на стабильном значении.
Эти осложнения значительно увеличивают время работы, необходимое для разработки рациональных приближений. Часто желательно получить рациональное, а не полиномиальное приближение не менее: рациональные приближения часто будут соответствовать более сложным для приближения функциям, с большей точностью и с большей эффективностью, чем их полиномиальные альтернативы. Например, если мы возьмем наш предыдущий пример приближения к ex, мы получим точность 5x10-4 с полиномом порядка 4. Если мы переместим два неизвестных в знаменатель, чтобы дать пару полиномов порядка 2 и повторно свести к минимуму, то пиковая относительная ошибка упадет до 8,7x10-5. Это в 5 раз больше точности для того же количества терминов в целом.
Большинство трактатов по теории приближения останавливаются на этом. Однако с практической точки зрения большая часть работы включает в себя поиск правильной аппроксимирующей формы, а затем убеждение метода Ремеза сходится на решении.
До сих пор мы использовали прямое приближение:
f(x) = R(x)
Но это сойдется к полезному приближению только в том случае, если f(x) будет гладким. Кроме того, ошибки округления при оценке рациональной формы означают, что это никогда не приблизится, чем в пределах нескольких эпсилонов точности машины. Поэтому эта форма прямого приближения часто используется для ситуаций, когда мы хотим эффективности, а не точности.
Первым шагом в улучшении ситуации является, как правило, разделение f(x) на доминирующую часть, которую мы можем точно вычислить другим методом, и медленно меняющийся остаток, который может быть приближен рациональным приближением. У нас может возникнуть соблазн написать:
f(x) = g(x) + R(x)
где g(x) является доминирующей частью f(x), но если f(x)/g(x) приблизительно постоянны в интервале интереса, то:
f(x) = g(x)(c + R(x))
Здесь c является константой, которая является приблизительным значением f(x)/g(x) и R(x) обычно крошечным по сравнению с c. В этой ситуации, если R(x) оптимизирован для абсолютной ошибки, то до тех пор, пока его ошибка невелика по сравнению с постоянной c, эта ошибка будет эффективно устранена при добавлении R(x) к c.
Трудная часть, очевидно, заключается в том, чтобы найти правильный g(x) для извлечения из вашей функции: часто асимптотическое поведение функции даст подсказку, поэтому, например, функция erfc становится пропорциональной e-x2/x по мере того, как x становится большим. Следовательно, используя:
erfc(z) = (C + R(x)) e-x2/x
как примерная форма кажется очевидной вещью, чтобы попытаться, и действительно дает полезное приближение.
Тем не менее, сложность становится одной из сходящихся минимакс-решений. К сожалению, известно, что для некоторых функций метод Ремеза может привести к дивергентному поведению, даже если начальное приближение достаточно хорошее. Кроме того, не редкость, когда решение, полученное на первом шаге Ремеза выше, является плохим: решаемые уравнения, как правило, «жесткие», часто очень близкие к единственному, и если решение найдено вообще, ошибки округления и быстро меняющаяся функция ошибок могут привести к ситуации, когда функция ошибок фактически не изменяет знак в каждой контрольной точке, как требуется. Если это происходит, это фатально для метода Ремеза. Также возможно получить решения, которые являются совершенно верными математически, но которые совершенно бесполезны вычислительно: либо потому, что в вычислении рациональной функции есть неизбежное количество ошибок округления, либо потому, что знаменатель имеет один или несколько корней в интервале приближения. В последнем случае, хотя аппроксимация может иметь правильное предельное значение у корней, аппроксимация тем не менее бесполезна.
Предполагая, что аппроксимация не имеет фатальных ошибок и что единственная проблема заключается в адекватном сближении решения minimax, цель состоит в том, чтобы максимально приблизиться к решению minimax до начала метода Ремеза. Использование нулей чебышевского полинома для начальной интерполяции является хорошим началом, но не может быть идеальным при работе с относительными ошибками и/или рациональными (а не полиномиальными) приближениями. Один из подходов заключается в том, чтобы перекосить начальные точки интерполяции на один конец: например, если мы поднимем корни многочлена Чебышева до положительной силы, превышающей 1, то корни будут перекосены к середине интервала [-1,1], в то время как положительная сила, меньше чем одна, перекосит их к любому концу. Полезнее, если мы сначала переоценим очки по [0,1], а затем поднимем их до положительной силы, мы сможем перекосить их влево или вправо. Возвращаясь к нашему примеру ex над [-1,1], начальная интерполированная форма была в некотором роде от решения minimax:
Однако, если мы сначала перекосим точки интерполяции влево (снизим их до [0, 1], поднимем до мощности 1.3, а затем снизим до [-1,1]). Мы уменьшаем ошибку с 1.3x10-3 до 6x10-4:
Очевидно, что он все еще не идеален, но он находится всего в нескольких процентах от желаемого решения minimax (5x10-4).
Ниже перечислены некоторые вещи, чтобы проверить, если метод Ремеза идет не так, это далеко не исчерпывающий список, но предоставляется в надежде, что он окажется полезным.
Оригинальные ссылки на метод Ремеза и его расширение до рациональных функций, к сожалению, на русском языке:
Ремез, Е.Я., Основы численных методов приближений Чебышева, "Наукова Думка", Киев, 1969.
Ремез Е.Я., Гаврилюк В.Т., Компьютерная разработка отдельных подходов к приближенному построению решений чебышевских задач нелинейно в зависимости от параметров, Укр. Мат. Ж. 12 (1960), 324-338.
Гаврилюк В.Т. Обобщение первого полиномиального алгоритма Е.Я. Ремез по проблеме построения рационально-фракционных чебышевских приближений, Укр. Мат. Ж. 16 (1961), 575-585.
Некоторые источники английского языка включают:
Фрейзер, У., Харт, J.F., О вычислении рациональных приближений к непрерывным функциям, Комм. из ACM 5 (1962), 401-403, 414.
Ралстон А., Чебышева аппроксимация по алгоритмам Ремеса, Числ.мат. 7 (1965), No 4, 322-330.
А. Ралстон, Рациональное приближение Чебышева, Математические методы для цифровых компьютеров v. 2 (Ralston A., Wilf H., eds.), Wiley, New York, 1967, pp.
Hart, J.F. e.a., Компьютерные приближения, Wiley, New York a.o., 1968.
Коди, W.J., Фрейзер, W., Харт, J.F. Приближение Чебышева с использованием линейных уравнений, Числ.Мат.12 (1968), 242-251.
Cody, W.J., Обзор практического рационального и полиномиального приближения функций, SIAM Review 12 (1970), No 3, 400-423.
Barrar, R.B., Loeb, H.J., On the Remez algorithm for non-linear families, Numer.Math. 15 (1970), 382-391.
Dunham, Ch.B., Сближение алгоритма Фрейзера-Харта для рационального приближения Чебышева, Math. Comp. 29 (1975), No 132, 1078-1082.
Г. Л. Литвинов, Приближенное построение рациональных приближений и эффект автокоррекции ошибок, Russian Journal of Mathematical Physics, vol.1, No. 3, 1994.
Статья The Remez Method раздела Math Toolkit 2.5.0 Chapter 17. Backgrounders может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: Chapter 17. Backgrounders ::
реклама |