Профессиональные математические пакеты
2)выписать разложение дроби R(x) в виде суммы элементарных дробей (52) - (53), полагая коэффициенты A1,..., A i , M1,..., M k и N1,..., N k неопределенными;
3)привести полученную сумму элементарных дробей к общему знаменателю;
4)полученный числитель, включающий неопределенные коэффициенты A1,..., A i ,
M1,..., M k и N1,..., N k приравнять к исходному числителю Qm (x) из (50);
5) для нахождения неопределенных коэффициентов нужно приравнять выражения при одинаковых степенях х, получится система линейных алгебраических уравнений, решением которой, будут коэффициенты A1,..., A i , M1,..., M k и N1,..., N k .
Легко убедиться, что при использовании системы MathCAD, данная громоздкая задача решается сравнительно просто (Листинг 57):
Листинг 57. Разложение на простые дроби
Задача:
Разложить на сумму элементарных дробей функцию:
Решение:
Всоответствии с теоремой 1 представим знаменатель дроби в виде (51) при помощи функции factor:
Всоответствии с теоремой 2 разложение будем искать в виде суммы:
Приведем данную сумму простейших дробей к общему знаменателю при помощи функции factor:
Рассмотрим числитель полученной дроби:
Построим коэффициенты разложения числителя по степеням x при помощи функции coeffs. Получим систему линейных алгебраических уравнений относительно неизвестных коэффициентов C, D, E и F. Построим А – матрицу СЛАУ:
Построим коэффициенты разложения числителя по степеням x при помощи функции coeffs, получим вектор В правых частей СЛАУ. Решим систему.
Полученный вектор Х содержит искомые коэффициенты C, D, E и F. Подставим их в разложение и получим решение исходной задачи:
81
Глава 9. Символьные вычисления в MathCAD
Для проверки правильности разложения рациональной дроби R(x) на сумму элементарных дробей вида (52) - (53), достаточно привести полученное разложение к общему знаменателю и раскрыть скобки, это легко сделать, используя функции factor и expand.
Листинг 58. Разложение на простые дроби. Проверка
В MathCAD имеется встроенная функция parfrac для реализации разложений на элементарные дроби вида (52) - (53), она позволяет решить задачу, разобранную в примере выше (Листинг 57), в одно действие:
Листинг 59. Разложение на простые дроби. Встроенная функция parfrac
9.5. Практическая работа №10. Символьные вычисления на MathCAD
Продолжительность – 4 часа.
Цель работы
Получение умений, навыков и компетенций работы с символьным процессором MathCAD. Приобретение уверенности при операциях со сложными выражениями, упрощение, приведение к множителям. Решение неравенств.
Получение навыков решения задачи по разложению дробно-рациональной функции на простейшие дроби1. Применение полученных ранее навыков решения СЛАУ.
Задание на практическую работу
1.Разложить дробно-рациональную функцию, заданную в соответствии с индивидуальным заданием (Таблица 18, Приложение 10), на простейшие дроби вида (52) - (53). Разложение произвести двумя способами:
1.1.при помощи метода неопределенных коэффициентов (Листинг 57);
1.2.при помощи встроенных функций MathCAD.
2.Произвести проверку правильности разложения.
3.Составить отчет, в котором отразить листинг программного кода с комментариями и привести скриншоты с результатами работы программ.
Контрольные вопросы:
1.Как символьно упростить громоздкое выражение?
2.Воспроизведите алгоритм разложения на простые дроби.
3.Имеет ли MathCAD средства разложения функции в степенные дроби?
4.Как символьно вычислить коэффициенты многочлена?
1 Данный материал будет востребован в 3-4 семестрах изучения курса «Высшая математика» в разделах «Теория функций комплексных переменных», «Операционное исчисление»
82
Профессиональные математические пакеты
10.ИНТЕРПОЛЯЦИЯ И РЕГРЕССИЯ
Этот раздел посвящен методам обработки выборочных данных – интерполяции, экстраполяции и регрессии. Основным объектом исследования будет выборка экспериментальных данных, которые, представляются в виде массива пар чисел
x i , yi , i 1..n . Возникает задача аппроксимации дискретной зависимости y(xi )
непрерывной функцией f(x). Функция f(x), в зависимости от специфики задачи, может отвечать различным требованиям:
f(x) должна проходить через точки x i , yi , т.е. f (xi ) yi , i 1..n . В этом случае говорят об интерполяции функции f(x) во внутренних точках x x1, xn или экстраполяции во внешних точках: x x1 или x xn – за пределами заданного интервала.
f(x) должна некоторым образом (например, в виде определенной аналитической зависимости) приближать y(xi ) , не обязательно проходя через точки x i , yi .
Такова постановка задачи регрессии.
MathCAD имеет целый арсенал встроенных функций, позволяющих осуществлять различные виды регрессии, интерполяции и экстраполяции.
10.1.Интерполяция
Для построения интерполяции-экстраполяции в MathCAD имеется несколько встроенных функций, позволяющих «соединить» точки выборки данных x i , yi
кривой разной степени гладкости. По определению интерполяция означает построение функции (x) , аппроксимирующей зависимость y(xi ) в промежуточных точках
(между xi ). Поэтому интерполяцию называют кроме того аппроксимацией.
Линейная интерполяция
Самый простой вид интерполяции – линейная, которая представляет искомую зависимость (x) в виде ломаной линии (Листинг 60).
Для построения линейной интерполяции служит встроенная функция linterp(х, у, t) – функция, аппроксимирующая данные векторов х и у кусочно-линейной зависимостью. Здесь х – вектор аргументов, а у – вектор соответствующих значений того же размера; t – координата, в которой вычисляется интерполирующая функция.
При составлении вектора х следует помнить, что его элементы должны быть определены в порядке возрастания, т.е. x1 x2 ... xn .
Листинг 60. Линейная интерполяция
83
Глава 10. Интерполяция и регрессия
Кубическая сплайн-интерполяция
В большинстве практических приложений желательно соединить экспериментальные точки не ломаной линией, а гладкой кривой. Лучше всего для этих целей подходит интерполяция кубическими сплайнами, т.е. отрезками кубических парабол:
interp(s, x, y, t) – функция, аппроксимирующая данные векторов х и у кубическими сплайнами; s – вектор вторых производных, созданный одной из сопутствующих функций cspline, pspline или lspline:
s:=lspline(х, у) – вектор значений коэффициентов линейного сплайна; s:=pspline(x, y) – вектор значений коэффициентов квадратичного сплайна; s:=cspline(х, у) – вектор значений коэффициентов кубического сплайна.
х, у — векторы данных x i , yi .
Выбор конкретной функции сплайновых коэффициентов влияет на интерполяцию вблизи конечных точек интервала (Листинг 61).
Листинг 61. Кубическая сплайн-интерполяция
Смысл сплайн-интерполяции заключается в том, что в промежутках между
точками |
осуществляется |
аппроксимация |
в |
виде |
зависимости |
(t) a t3 |
b t2 c t d . Коэффициенты а, b, с, d |
рассчитываются независимо для |
|||
каждого промежутка, исходя из значений yi в соседних точках. Этот процесс скрыт от пользователя, поскольку смысл задачи интерполяции состоит в выдаче значения (x) в
любой точке t (Листинг 61). Чтобы подчеркнуть различия, соответствующие разным вспомогательным функциям cspline, pspline, lspline, графики приведены на одном рисунке. Как видно, выбор вспомогательных функций существенно влияет на поведение (x) вблизи граничных точек рассматриваемого интервала и особенно
разительно меняет результат экстраполяции данных за его пределами.
Полиномиальная сплайн-интерполяция
Более сложный тип интерполяции – так называемая интерполяция В-сплайнами (Листинг 62). В отличие от обычной сплайн-интерполяции сшивка элементарных В-сплайнов производится не в точках xi а в других точках u i , координаты которых
предлагается ввести пользователю. Сплайны могут быть полиномами 1, 2 или 3 степени (линейные, квадратичные или кубические). Применяется интерполяция В-сплайнами точно так же, как и обычная сплайн-интерполяция, различие состоит только в определении вспомогательной функции коэффициентов сплайна.
84
Профессиональные математические пакеты
Листинг 62. Полиномиальная сплайн-интерполяция
interp(s, x, y, t) – функция, аппроксимирующая данные векторов х и у с помощью В- сплайнов;
s:=bspline(x, y, u, n) – вектор значений коэффициентов В-сплайна; где s – вектор вторых производных, созданный функцией bspline; х, у — векторы данных x i , yi ; t – точка, в
которой вычисляется интерполирующая функция; u – вектор значений аргумента, в которых производится сшивка В-сплайнов; n – порядок полиномов онлайновой интерполяции (1, 2 или 3).
Размерность вектора u должна быть на 1, 2 или 3 меньше размерности векторов х и у. Первый элемент вектора u должен быть меньше или равен первому элементу вектора х: u1 x1 , а последний – больше или равен последнему элементу х.
Сплайн-экстраполяция
Все описанные выше функции интерполяции работают также и как функции экстраполяции данных. Для вычисления экстраполяции достаточно просто указать соответствующее значение аргумента, которое лежит за границами рассматриваемого интервала. С этой точки зрения разницы в применении в MathCAD между интерполяцией и экстраполяцией нет.
На практике при построении экстраполяции следует соблюдать известную осторожность, не забывая о том, что ее успех определяется значимостью ближайших к границе интервала точек – чем дальше от них, тем сомнительнее будет результат.
Многомерная интерполяция
Двумерная сплайн-интерполяция приводит к построению поверхности z(x, y) , проходящей через массив точек, описывающий сетку на координатной плоскостиx i , yi , i 1..n . Поверхность создается участками двумерных кубических сплайнов,
являющихся функциями и имеющих непрерывные первые и вторые
производные по обеим координатам.
Многомерная интерполяция строится с помощью тех же встроенных функций, что и одномерная, но имеет в качестве аргументов не векторы, а соответствующие матрицы.
interp(s, x, z, v) – скалярная функция, аппроксимирующая данные выборки двумерного поля по координатам х и у кубическими сплайнами, s – вектор вторых производных, созданный одной из сопутствующих функций cspline, pspline или lspline; х – матрица размерности n 2 , определяющая диагональ сетки значений аргумента (элементы обоих столбцов соответствуют меткам х и у и расположены в порядке возрастания); z – матрица значений функции размерности n n ; v – вектор из двух элементов, содержащий значения аргументов х и у, для которых вычисляется интерполяция.
85