Основы работы с системой MathCAD 7.0

       

Реализация численных методов Быстрые операции с полиномами-векторами


В математических расчетах широко применяются степенные многочлены — полиномы вида

Р (х) = аn xn+ an 1 хn 1+ + а1 х1 + а0

Ценность полиномов заключается в том, что они могут достаточно точно аппроксимировать многие функции (особенно непрерывные) единообразным способом При этом, поскольку полиномы содержат суммы простых членов


Рис. 14. 10 Быстрые операции с полиномами

вида an 1 xn 1, легко аналитически вычислять производные полиномов и интегралы с подынтегральной функцией в виде многочленов.

Коэффициенты полинома удобно задать как элементы вектора а. Тогда их запись (как элементов вектора) совпадает с общепринятой. При этом помимо своих коэффициентов полином характеризуется порядком п.

В документе на рис. 14. 10 представлены задание полинома Р (х) и примеры выполнения ряда операций с полиномом: вычисление значений полинома по заданному аргументу x, вычисление производной полинома Р'(х) и определенного интеграла с полиномом Р (х) в виде подынтегральной функции.

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

Интегрирование таблично заданных функций

Часто возникает необходимость в вычислении определенного интеграла для таблично заданной функции. Тогда прямое применение встроенного в систему оператора вычисления интеграла оказывается невозможным, так как он предполагает задание подынтегральной функции в аналитическом виде.

Документ на рис. 14. 11 иллюстрирует три способа вычисления определенного интеграла при табличном задании подынтегральной функции. Первые два способа (методом трапеций и Симпсона) используют довольно хорошо известные формулы интегрирования табличных данных. Третий способ использует встроенный оператор вычисления интеграла. При этом таблично заданная функция интерполируется линейной зависимостью или набором сплайновых функций (полиномов третьей степени).






Рис. 14. 11 Интегрирование табличных данных
В качестве исходных данных взяты ординаты квадратичной параболы, что позволяет вычислить интеграл без этих ухищрений. Такое вычисление представлено для контроля в конце документа. Нетрудно заметить, что лишь интегрирование методом Симпсона и интегрирование со сплайн-интерполяцией дают полное совпадение с прямым интегрированием (не стоит забывать, что установленный формат цифровых данных выводит результат только с шестью значащими цифрами после десятичной точки).
Поиск минимума функции Розенброка
С помощью функции minerr
возможен поиск экстремума и функций ряда переменных. Типичной тестовой функцией двух переменных является функция Розенброка, обычно применяемая для тестирования программ минимизации функций ряда переменных. На рис. 14. 12 показан поиск минимума функции Розенброка с применением функции minerr.
Рис. 14. 12 Поиск минимума тестовой функции Розенброка




Рис. 14. 13 График функции Розенброка (окончание документа, представленного на рис. 14. 12)
Поиск задается вычислительным блоком, открываемым словом Given. Фактически решается система уравнений. Два уравнения после слова Given приближенно задают условия минимума, третье уравнение (с функцией minегг)
отыскивает решение, в максимальной степени удовлетворяющее заданным условиям минимума.
Функция Розенброка имеет очевидные значения х=у=\ в точке минимума. Графическое представление функции напоминает овраг (см. рис. 14. 13), что затрудняет поиск минимума рядом простых методов.
Следует отметить, что тут заведомо известно, что функция имеет минимум. Если бы этого не было, пришлось бы ввести условия на значения вторых производных функции по каждой переменной.
Интерполяция по общей формуле Лагранжа
В этом пакете рассматриваются функции одной переменной вида у (х), как правило, заданные в табличном виде, т. е. рядом значений х и соответствующих им значений у. Именно так обычно задаются данные эксперимента, получаемые на различных физических или электронных измерительных установках.


Важной задачей математической обработки подобных данных является и их представление в виде некоторой математической зависимости, допускающей проведение над нею обычных математических операций, например вычисление у (х) при х,
не совпадающих с исходными (узловыми) точками, интегрирование или дифференцирование функций, проведение их статистической обработки (сглаживания или фильтрации) и т. д.
Одной из самых распространенных задач такого рода является ингерпо-ляция таблично заданных функций, т. е. вычисление их значений в промежутках между узловыми точками. В математической литературе общепринято представление многих специальных функций в виде математических таблиц [14], ориентированных на интерполяцию по заданному числу узловых точек (обычно от 2 до 6).
В систему MathCAD встроены функции линейной и сплайн-интерполяции, при которых отдельно на каждом промежутке функция представляется отрезком прямой или кубическим многочленом. Последний вычисляется так, чтобы обеспечить стыковку в узловых точках как значений функции, так и ее первых двух производных (что и дает необходимую гладкость графика функции).
Эти мощные средства интерполяции имеют, однако, существенный недостаток: параметры интерполирующей функции различны на различных участках интерполяции. Другими словами, такая интерполяция не может быть сведена к одной интерполирующей формуле, что затрудняет интерполяцию математических таблиц, за исключением линейной интерполяции, дающей довольно низкую точность.
На рис. 14. 14 представлен документ, задающий обобщенную формулу интерполяции методом Лагранжа. Эта формула синтезирует полином Лагранжа, используя два вектора: с координатами xi и yi узловых точек. Преимущества такого подхода в том, что число узловых точек и их расположение может быть любым (в том числе неравномерным), а для интерполяции используется единая интерполирующая формула f (x), к сожалению, довольно сложная.
При интерполяции полиномом Лагранжа степень полинома п однозначно связана с числом узловых точек. Она на единицу меньше этого числа Значения ординат интерполирующей функции в узловых точках совпадают со зна-


Рис. 14. 14 Интерполяция табличных данных по формуле Лагранжа


чениями ординат узловых точек, поэтому график интерполирующей функции f (x) точно проходит через эти точки. К сожалению, при высокой степени полинома (более 5—6) погрешность вычислений его значений заметно возрастает, поэтому выбор п выше 6 на практике нецелесообразен. А это означает, что функция у (х)
должна быть представлена небольшим числом достаточно точных значений.
К недостаткам интерполяции по обобщенной формуле Лагранжа относится и довольно большое время вычислений, поскольку формула интерполяции далеко не проста.
Линейное сглаживание по пяти точкам
Один из полезных видов статистической обработки функции у (х),
заданной п точками, заключается в статистической обработке каждой точки с учетом положения нескольких ближайших точек. Например, простейший способ такой обработки усредняет значения этой точки и нескольких других, окружающих ее слева и справа. В результате будет получен вектор ys сглаженных значений у (х).
Некоторую проблему представляет вычисление сглаженных значений точек, примыкающих к концевым, но можно вывести формулы сглаживания и для этих точек.
MathCAD 7 О PRO имеет встроенную функцию сглаживания Однако полезно проверить работу известных алгоритмов сглаживания по ряду точек. Так, линейное сглаживание по пяти точкам демонстрируег документ, показанный на рис. 14. 15. На нем вначале задан вектор параболической зависимости, на которую наложены сильные случайные компоненты, создаваемые генератором случайных чисел. Далее заданы пять формул сглаживания: по две для крайних двух точек слева и справа и одна для других (эта формула просто находит среднее значение для центральной точки и окружающих ее четырех ближайших точек). Фактически кривая сглаживания состоит из ряда отрезков прямых линий, откуда и название — линейное сглаживание.
На приведенном рисунке видно, что сглаженная кривая проходит внутри облака точек и неплохо вписывается в него. При этом число сглаженных точек равно числу исходных точек (в нашем случае их 50) Разумеется, при таком большом числе сглаженных точек эффективность сглаживания оказывается заметно ниже, чем, например, при проведении регрессии с большим числом исходных точек




Рис. 14. 15 Линейное сглаживание по пяти точкам
Можно повысить эффективность сглаживания, увеличивая число точек, используемых для статистической обработки заданной точки, и перейдя к кривой сглаживания в виде отрезка полинома более высокой степени, чем 1 Так, известны формулы нелинейного сглаживания по семи точкам [1, 2, 28] Этих формул семь по три для крайних точек и одна для остальных Для нели нейных зависимостей, близких к параболическим или содержащих отрезки парабол, нелинейное сглаживание гораздо более эффективно, чем линейное Тем не менее и здесь гладкость кривой сглаживания невелика
Единого мнения о целесообразности повторения процедуры сглаживания у математиков нет Одни считают, что повторное сглаживание делает кривую сглаживания более плавной Другие не рекомендуют применение повторного сглаживания В целом сглаживание — эффективный инструмент предварительной обработки исходных данных Затем можно использовать более тонкие методы их обработки, например фильтрацию на основе спектрального анализа и синтеза, полиномиальную регрессию с применением полинома определенного порядка и т д
Решение дифференциального уравнения первого порядка методом Рунге — Кутта
Решение дифференциальных уравнений широко применяется в практике научно-технических расчетов Это связано с тем, что дифференциальные уравнения (и системы из них) описывают поведение различных объектов в динамике, например переходные процессы в электронных схемах или работу часового маятника Линейные дифференциальные уравнения имеют решения в виде специальных функций (скажем, функций Бесселя) Однако многие физические системы нелинейны и описываются нелинейными дифференциальными уравнениями, не имеющими аналитического решения. В этом случае приходится использовать численные методы решения дифференциальных уравнений.
Версия MathCAD 7. 0 PRO содержит мощные средства для реализации численных методов решения дифференциальных уравнений. Поэтому может возникнуть вопрос: а нужно ли создавать свои документы для реализации таких методов? Ответ на него не однозначен. Если ваша цель — решение конкретной задачи, то проще воспользоваться готовыми функциями MathCAD. Они были описаны выше. Однако нередко педагоги и специалисты без должных оснований говорят о трудности реализации в системе MathCAD обычных численных методов. Это неверно! Реализация таких методов в системе MathCAD легка и наглядна. Более того, она позволяет вмешиваться в алгоритмическую реализацию методов решения, что способствует созданию новых или улучшенных методов решения дифференциальных уравнений, ориентированных на решение интересующих пользователя задач.


Здесь мы остановимся на реализации решения дифференциального уравнения i/=f (x, y)
хорошо известным методом Рунге — Кутта. Пусть h — шаг приращения переменной х, i — индекс, имеющий значения от 1 до N (N — число интервалов решения с шагом h). Метод Рунге — Кутта четвертого порядка дает погрешность решения порядка h (4, что удовлетворяет самым при-щрчивым требованиям к точности численных методов. Он неоднократно подробно описывался в [6, 8, 14]. Его реализация показана на рис. 14. 16.


Рис. 14. 16 Начало документа, иллюстрирующего решение дифференциального уравнения методом Рунге — Кутта
Документ на рис. 14. 16 состоит из двух частей. Первая часть (она и показана на рисунке) содержит ввод исходных данных и вывод графика решения. Для решения надо задать функцию f (x, y),
начальное (startx) и конечное (endx) значения х,
число точек решения п и начальное значение (inity)
переменной у. При построении графика функции указываются нижний (L) и верхний (U) пределы изменения искомой зависимости у (х).
Вторая часть документа (см. рис. 14. 17) в действительности располагается справа от первой части и размещается в обычно невидимой части документа Поэтому пользователь избавлен от созерцания тривиальных или просто не интересующих его математических формул и может сосредоточить внимание лишь на вводе исходных данных и функции f (x, y) и выводе результатов
Рис. 14. 17 Конец документа, иллюстрирующего решение дифференциального уравнения методом Рунге Кутта


Рассматривая рис 14 17, нетрудно сделать вывод о наглядности реализа ции метода Рунге — Кутта По существу приведенные уравнения повторяют известные формулы этого метода часто встречающиеся в учебной литературе по численным методам решения дифференциальных уравнений

Содержание раздела