Maple 9.5/10 в математике, физике и образовании
Шрифт:
Сам же полином QN(x) становится интерполяционным полиномом, так как в этом случае при любом bN выполняется соотношения QN(xk)=yk
5.7. Аппроксимация зависимостей в Maple
5.7.1. Аппроксимация аналитически заданных функций
В Maple 9.5 если функция задана аналитически, то наиболее простым способом нахождения ее аппроксимирующей зависимости является применение функции convert, которая позволяет представить функцию в виде иного выражения, чем исходное. Например, при опции polynom осуществляется полиномиальная аппроксимация. Это поясняют следующие примеры (файл aprox):
На рис. 5.9 представлен пример полиномиальной аппроксимации хорошо известной статистической функции erfc(x). Для полинома задана максимальная степень 12, но ввиду отсутствия в разложении четных степеней максимальная степень результата оказывается равна 11.
Рис. 5.9. Пример полиномиальной аппроксимации функции erfc(x) — сверху построены графики исходной функции и полинома, снизу график абсолютной погрешности
Как видно из приведенного рисунка, в интервале изменения x от -1,4 до 1,4 аппроксимирующее выражение почти повторяет исходную зависимость. Однако затем график аппроксимирующей функции быстро отходит от графика исходной зависимости и погрешность аппроксимации резко возрастает. При этом он ведет себя иначе даже качественно, никоим образом не показывая асимптотическое поведение, характерное для исходной зависимости. Это говорит о том, что полиномиальная аппроксимация плохо подходит для экстраполяции (предсказания) зависимостей.
Как уже отмечалось, считается, что полиномиальная аппроксимация дает большую погрешность при степени полинома более 5–6. Однако, этот вывод базируется на том, что большинство вычислительных программ работает всего с 5–10 точными знаками в промежуточных и окончательных результатах.
Maple по умолчанию имеет 10 точных знаков чисел. Это показывает следующий пример:
Таким образом, Maple, как и любая другая программа может давать большую погрешность при высоких степенях аппроксимирующего полинома.
В этом убеждает рис. 5.10, на котором представлена программа полиномиальной аппроксимации функции синуса с возможностью выбора степени полинома N. Программа автоматически задает N+1 отсчетов функции синуса и затем выполняет ее полиномиальную аппроксимацию для N=10 и Digits=8. Результат аппроксимации совершенно неудовлетворительный — видно, что программа под конец пошла вразнос — так именуются хаотические изменения кривой аппроксимирующей функции.
Рис. 5.10.
Пример неудачной аппроксимации синуса при N=10 и Digits=8Практическая рекомендация при полиномиальной аппроксимации выглядит следующим образом — число точных цифр в промежуточных результатах Digits должно на несколько цифр превышать значение N. Рисунок 5.11, приведенный для N=10 и Digits=15 удовлетворяет этому правилу. При этом все точки точно укладываются на кривую полинома 10-го порядка. Однако за пределами интервала, в котором находятся узловые точки, кривая аппроксимации резко отклоняется от функции синуса. Это говорит о том, что достаточно точная экстраполяция (предсказание) при полиномиальном приближении невозможна — повышение степени полинома лишь ухудшают возможности экстраполяции.
Рис. 5.11 Пример достаточно корректной аппроксимации синуса при N=10 и digits=15
Maple 9.5 является системой, позволяющей выполнять арифметические вычисления с практически произвольным числом точных цифр. Ограничения на это число накладывается объемом памяти ПК (для современных ПК не актуально) и возрастанием времени вычислений. В качестве примера аппроксимации полиномом высокой степени на рис. 5.12 приведен документ, осуществляющий аппроксимацию функции синуса для степени полинома N=30 при числе точных цифр Digits=40. Нетрудно заметить, что все 31 узловые точки прекрасно укладываются на кривую полинома и что за пределами расположения этих точек она резко отклоняется от синусоидальной функции.
Рис. 5.12. Пример аппроксимации функции синуса полиномом степени N=30 при Digits=40
В целом аппроксимация полиномами высокой степени хотя и возможна, но непрактична, поскольку такие полиномами едва ли можно назвать простыми аппроксимирующими функциями.
5.7.2. Сплайн-интерполяция в Maple
Для сплайн-интерполяции используется Maple-функция spline(X,Y,var,d). Здесь X и Y — одномерные векторы одинакового размера, несущие значения координат узловых точек исходной функции (причем в произвольном порядке), var — имя переменной, относительно которой вычисляется сплайн-функция, наконец, необязательный параметр d задает вид сплайна. Он может иметь цифровые 1, 2,3 или 4, либо символьные значения:
linear — линейная функция, или полином первого порядка,
quadratic — квадратичная функция, или полином второго порядка,
cubic — полином третьего порядка,
quartic — полином четвертого порядка.
Если параметр d опущен, то сплайн-функция будет строиться на основе полиномов третьего порядка (кубические сплайны). Важно отметить, что за пределами узловых точек сплайны обеспечивают экстраполяцию, представляя данные в соответствии с первым полином слева и последним справа.
Технику сплайновой аппроксимации наглядно поясняет рис. 5.13. На нем представлено задание векторов узловых точек X и Y и четырех сплайновых функций, по которым построены их графики. Для одной из функций (кубических сплайнов) показан вид сплайновой функции.
Рис. 5.13. Задание сплайновой аппроксимации и построение графиков полученных функций
Как видно из рис. 5.13, сплайновая функция представляет собой кусочную функцию, определяемую на каждом отдельно. При этом на каждом участке такая функция описывается отдельным полиномом соответствующей степени. Функция plot «понимает» такие функции и позволяет без преобразования типов данных строить их графики. Для работы с кусочными функциями можно использовать функции convert и piecewise.