ОБЩИЕ СВЕДЕНИЯ
Эта глава посвящена применению арифметических программ, описанных в предыдущих трех главах, для решения более сложных задач численной обработки данных, к которым относятся, в частности, задачи вычисления некоторых основных элементарных функций и факториала.
Существует много различных методов вычисления элементарных функций, использующих представления их в виде степенных рядов, цепных дробей, итерационных процессов, разложений по ортогональным многочленам, рациональных приближений, бесконечных произведений и др. [7, 9, 14, 27, 45, 48, 51,67, 70, 72]. Применение того или иного метода зависит от ряда условий, в том числе от требуемой точности, допустимых затрат памяти и времени выполнения программ. Мы ограничимся основными вопросами вычисления элементарных функций в рамках их наиболее простого и универсального представления в виде степенных рядов Тейлора (исключением будет являться итерационный процесс вычисления квадратного корня).Рассмотрим классификацию элементарных функций. Самые простые элементарные функции принадлежат к классу целых рациональных функций, который в общем виде можно представить полиномом (многочленом) п-й степени:
функции. Перечисленные алгебраические и трансцендентные функции образуют множество основных элементарных функций — аналитически заданных в виде единых формул функций, которые получены из основных элементарных с помощью конечного числа алгебраических операций и операций образования сложных функций, причем сами операции, их число и порядок выполнения не зависят от значений аргумента. Все остальные функции называют неэлементарными. Если функция неэлементарна, то число операций над аргументом, либо сами операции, либо те и другие изменяются в зависимости от значения аргумента.
Примером неэлементарной функции является факториал: у = п\ = 1 • 2 - 3 •... - п. Здесь количество операций зависит от значения аргумента.Вычисление рациональных и дробно-рациональных
алгебраических функций осуществляется на основе точных аналитических записей этих функций, определяющих количество, тип и последовательность выполнения арифметических операций. Для минимизации вычислительных ресурсов аналитическая запись функции может быть эквивалентно преобразована, но в любом случае она остается точной в том смысле, что если точно заданы значения аргумента, точно выполнены арифметические операции, то гарантированно получается точное значение функции в виде рационального числа. Аналогичный способ вычисления неприменим в случае трансцендентных функций, так как их аналитическая запись, например у = sinx, не позволяет непосредственно вычислять значение функции по значению аргумента с помощью арифметических операций. Трансцендентные функции определяются, как правило, приближенно на основе таблиц соответствующей точности [8, 58]. Программная реализация табличного вычисления этих функций очень громоздка, поэтому основной способ их вычисления заключается в замене (аппроксимации) исходной трансцендентной функции некоторой другой, алгебраической функцией, близкой к исходной по своим значениям в определенном диапазоне изменения аргумента и вычисляемой достаточно экономичным способом с помощью арифметических операций.
Элементарные функции принадлежат к классу функций, точно представимых степенными рядами:
Рис. 4.1. Графики показательной функции и ее многочленов Тейлора
этой точки, что требует для обеспечения заданной точности существенного увеличения числа членов полинома и соответственно затрат памяти и времени на его программное вычисление.
Поэтому данный метод аппроксимации элементарных функций применим при относительно невысоких требованиях к точности и диапазону аргументов вычисляемых функций. При более высоких требованиях необходимо использовать иные способы приближений функции, в частности наилучшие полиномиальные приближения (в смысле наименьшей нормы), обеспечивающие более быструю и равномерную сходимость на заданном интервале, чем полином Тейлора. Однако рассмотрение этих и других методов выходит за рамки книги.Далее будут приведены конкретные алгоритмы и программы вычисления некоторых основных элементарных функций и факториала. Все входные, промежуточные и результирующие данные представлены в коротком формате двоичного числа с плавающей запятой (см. рис. 2.3, а). Программы используют подпрограммы арифметики с плавающей запятой, рассмотренные в гл. 2. Двоичные значения входных и десятичные значения выходных тестовых данных получены с помощью подпрограмм ПП310 и ПДП32, описанных в гл. 3.
4.2. ОБРАТНАЯ ПРОПОРЦИОНАЛЬНОСТЬ
Дробно-рациональная функция обратной пропор-
Рис. 4.2. График функции обратной пропорциональности
две ветви, расположенные в первом и третьем квадрантах декартовых координат, если а > 0, и во втором и четвертом квадрантах, если а С 0 (рис. 4.2). График функции представляет собой гиперболу, асимптотами которой являются оси координат хи ц.
Формирование единицы с плавающей запятой в заданной области памяти выполняет программа ЕДПЗ:
В случае переполнения или антипереполнения порядка результата, а также при попытке деления на нулевой аргумент в программе ОБРАТ устанавливается признак переноса CY= 1. Тестовые данные программы приведены в табл. 4.1.