Краткие сведения об интерполяции в пакете Mathcad
Лабораторная работа 5
Интерполирование средствами пакета Mathcad
Цель: Изучить встроенные функции пакета Mathcad, предназначенные для интерполирования функций; изучить свойства кубических сплайнов; научиться использовать интерполирование функций при решении конкретных задач.
Краткие сведения об интерполяции в пакете Mathcad
В математическом пакете Mathcad имеется несколько функций, реализующих некоторые виды многоинтервальной интерполяции, в частности кусочно-линейную и сплайн интерполяцию. Также, если воспользоваться возможностью пакета решать системы линейных алгебраических уравнений, то можно определить коэффициенты канонического полинома или полинома Ньютона и решить тем самым задачу глобальной интерполяции. Для полинома Лагранжа достаточно просто записать соответствующе выражение.
Глобальная интерполяция. Ниже приведен пример построение полинома в каноническом виде (4.2):
Кусочно-линейная интерполяция. Встроенная функция linterp(vx, vy, x) осуществляет кусочно-линейную интерполяцию. Аргументами этой функции являются два вектора vx и vy, содержащие исходные данные и независимая переменная x. Ниже приведен пример использования этой функции:
Сплайн-интерполяция. Следующие четыре функции обеспечивают интерполяцию кубическими сплайнами:
lspline(vx, vy)
pspline(vx, vy) – функции, возвращающие коэффициенты
cspline(vx, vy)сплайнов;
interp(vs, vx, vy, x) – функция, возвращающая значение сплайна в
точке x по исходным векторам vx и vy и по
коэффициентам сплайна vs.
Функции lspline, pspline и cspline отличаются граничными условиями, определяющими поведения сплайнов вне интервала интерполяции. В первой функции используется условие свободных концов сплайнов, а в двух других – условия нагруженных концов сплайнов.
Пример сплайн-интерполяции:
Задание 1.Построить графики функции, заданной таблицей значений, используя различные виды интерполяции: глобальную интерполяцию, кусочно-линейную интерполяцию и интерполяцию кубическими сплайнами.
Исходные данные находятся в приложении к работе (таблица 1).
Рекомендации к выполнению задания. Для ввода исходных данных сформируйте два вектора, например, X и Y, содержащие данные из таблицы, и постройте по этим данным точечный график.
Определите коэффициенты канонического интерполяционного полинома, следуя рассмотренному выше примеру, а затем и сам полином P(x). Постройте на одном графике исходные данные и функцию P(x) на заданном интервале изменения аргумента. Исследуйте поведение интерполяционного полинома за пределами интервала интерполяции.
Следуя приведенному в описании примеру примените кусочно-линейную интерполяцию. Для этого определите новую функцию, например, y(x) аналогично тому, как это показано в примере, и постройте на одном графике исходные данные и функцию y(x).
Используя встроенные в Mathcad функции проведите интерполяцию данных кубическими сплайнами. Постройте на одном графике сплайны, коэффициенты которых вычислены с помощью функций lspline, pspline и cspline. Сравните результаты. Посмотрите как ведут себя сплайны за пределами интервала интерполяции (т.е. при экстраполяции).
Постройте графики первых трех производных от рассчитанных сплайн функций. Убедитесь, что первые две производные являются непрерывными.
Задание 2. Применить различные виды интерполяции для решения следующей задачи:
Автомобиль двигался неравномерно по прямой дороге в течение одной минуты. Через каждые 5 секунд фиксировались показания спидометра. Необходимо определить:
a) зависимость ускорения от времени;
b) путь, пройденный автомобилем за все время движения;
c) зависимость пройденного пути от времени
Исходные данные находятся в приложении к работе (таблица 2).
Пояснения. Данная задача, приближенно может быть решена достаточно просто, если предположить, что в промежутках времени между определениями показаний спидометра, автомобиль двигался равноускоренно или равнозамедленно. В этом случае пройденный путь определяется по известным формулам равнопеременного движения:
, (*)
.
Каждое слагаемое в выражении (*) определяет путь, пройденный автомобилем за соответствующий интервал времени с ускорением .
С другой стороны, в задаче о прямолинейном неравномерном движении пройденный путь S определяется интегралом (в случае прямолинейного движения пройденный путь совпадает с перемещением):
, (**)
где V(t) – зависимость скорости от времени, T – время движения.
По условию задачи, функция V(t) задана лишь в некоторых дискретных точках, в связи с чем, непосредственное вычисление интеграла (**) оказывается невозможным. Тем не менее, указанный интеграл может быть вычислен приближенно одним из численных методов. Например, можно воспользоваться методом трапеций. При этом результат будет абсолютно аналогичен выражению (*), поскольку в основе метода трапеций лежит аппроксимация функции V(t) прямой линией на интервале (кусочно-линейная интерполяция), что с физической точки зрения, эквивалентно предположению о равноускоренном или равнозамедленном движения автомобиля на этом промежутке времени.
Mathcad способен вычислять определенные интегралы используя встроенные алгоритмы различных численных методов, но подынтегральная функция должна быть задана некоторым выражением, допускающим вычисление её значения в любой точке, а не таблицей значений. Поэтому, в тех случаях, когда подынтегральная функция задана табличным способом, для вычисления интеграла средствами пакета Mathcad исходную функцию необходимо заменить интерполяционной функцией.
Рекомендации к выполнению задания. Отобразите исходные данные графически. По исходным данным постройте три функции V1(t), V2(t) и V3(t) использую, соответственно, глобальную, кусочно-линейную и сплайн интерполяцию. Постройте графики функций V1(t), V2(t) и V3(t) вместе с исходными данными (на отдельных шаблонах). Внимательно посмотрите на поведение функции V1(t) и сделайте вывод о целесообразности ее дальнейшего использования.
Используя построенные интерполяционные функции определите зависимости ускорения и пройденного пути от времени и постройте графики этих зависимостей.
Задание 3. Используя встроенные в Mathcad возможности программирования написать собственную функцию для кусочно-квадратичной интерполяции. Применить построенную функцию для интерполирования табличных данных. Исходные данные взять из таблицы 1 приложения к работе.
Пояснения. Для того, чтобы пояснить способ выполнения этого задания рассмотрим возможную программную реализацию алгоритма кусочно-линейной интерполяции (экстраполяции).
Программа-функция lfit, как и ее встроенный аналог linterp, имеет три параметра: два вектора vx и vy, содержащие исходные данные, и аргумент x – точка, в которой вычисляется значение интерполяционной функции. Алгоритм состоит из двух этапов. Сначала определяется номер интервала k, в который попадает значение аргумента x. Для этого в программе использован цикл while (переменная n определят номер последнего элемента в векторе vx). Затем вычисляется значение интерполяционной функции и вычисленное значение возвращается в качестве результата.
Для реализации кусочно-квадратичной интерполяции потребуется несколько модифицировать алгоритм определения номера интервала и изменить интерполяционную формулу.
Отчет. Для отчета необходимо представить распечатки документов Mathcad с выполненными заданиями и сделать анализ результатов.
Приложение к работе 4
Таблица 1.
Вариант | x | 0.0 | 0.2 | 0.4 | 0.6 | 0.8 | 1.0 | 1.2 | 1.4 | 1.6 | 1.8 | |
y | 0.0 | 0.01 | 0.2 | 1.2 | 1.4 | 2.0 | 2.5 | 3.0 | 3.2 | 3.21 | ||
x | ||||||||||||
y | 12.5 | 8.9 | 7.5 | 5.3 | 3.8 | 2.3 | 1.5 | 1.2 | 1.05 | 1.0 | ||
x | ||||||||||||
y | 0.0 | 1.2 | 6.7 | 12.6 | 9.8 | 5.8 | 3.6 | 1.5 | 1.1 | 0.7 | ||
x | 0.55 | 0.8 | 0.93 | 1.16 | 1.31 | 1.48 | 1.78 | 2.06 | 2.58 | 2.89 | ||
y | 0.44 | 0.8 | 1.63 | 1.26 | 1.07 | 1.11 | 0.83 | 0.37 | 0.21 | 0.15 | ||
x | 1.0 | 1.6 | 2.2 | 2.8 | 3.4 | 4.0 | 4.6 | 5.2 | 5.8 | 6.4 | ||
y | 145.67 | 136.53 | 128.34 | 90.56 | 30.76 | 15.3 | 12.76 | 11.89 | 11.15 | 10.89 | ||
x | 0.0 | 0.5 | 1.0 | 1.5 | 2.0 | 2.5 | 3.0 | 3.5 | 4.0 | 4.5 | ||
y | 1.0 | 0.65 | 0.2 | 0.05 | 0.02 | 0.05 | 0.02 | 0.65 | 0.9 | 1.0 | ||
x | 1.0 | 1.6 | 2.2 | 2.8 | 3.4 | 4.0 | 4.6 | 5.2 | 5.8 | 6.4 | ||
y | 12.8 | 13.1 | 13.67 | 14.2 | 30.8 | 50.76 | 62.45 | 65.43 | 66.1 | 66.67 | ||
x | 1.0 | 1.8 | 2.6 | 3.4 | 4.2 | 5.0 | 5.8 | 6.6 | 7.4 | 8.2 | ||
y | 31.5 | 5.3 | 2.1 | 1.12 | 0.07 | -0.1 | -2.5 | -7.8 | -12.5 | -27.2 | ||
x | -2.8 | -2.7 | -2.0 | -1.0 | 0.0 | 0.5 | 1.0 | 1.5 | 2.0 | 2.5 | ||
y | -11.4 | -5.4 | -1.2 | -0.2 | 0.0 | 0.25 | 2.0 | 6.5 | 12.8 | 23.6 | ||
x | 0.0 | 0.5 | 1.0 | 1.5 | 2.0 | 2.5 | 3.0 | 3.5 | 4.0 | 4.5 | ||
y | 0.0 | 0.35 | 0.8 | 0.95 | 0.98 | 0.95 | 0.8 | 0.35 | 0.1 | 0.0 | ||
x | 0.0 | 0.3 | 0.6 | 0.9 | 1.2 | 1.5 | 1.8 | 2.1 | 2.4 | 2.7 | ||
y | -1.0 | 0.1 | 1.3 | 1.7 | 0.3 | 0.7 | 2.5 | 3.0 | 2.9 | 2.7 | ||
x | -5.0 | -4.0 | -3.0 | -2.0 | -1.0 | 0.0 | 1.0 | 2.0 | 3.0 | 4.0 | ||
y | 12.5 | 7.8 | 2.3 | 0.4 | -4.1 | 0.2 | 1.9 | 4.8 | 9.4 | 10.5 | ||
x | -3.0 | -2.5 | -2.0 | -1.5 | -1.0 | -0.5 | 0.0 | 0.5 | 1.0 | 1.5 | ||
y | 4.5 | 4.6 | 4.4 | 3.5 | 1.3 | 0.2 | 0.1 | 0.3 | 0.2 | 0.2 | ||
x | -1.5 | -1.25 | -1.0 | -0.75 | -0.5 | -0.25 | 0.0 | 0.25 | 0.5 | 0.75 | ||
y | 0.1 | 0.12 | 0.7 | 1.4 | 2.9 | 1.6 | 0.6 | 0.2 | 0.1 | 0.05 | ||
x | ||||||||||||
y | 0.0 | 2.7 | 9.3 | 10.4 | 10.6 | 10.7 | 10.6 | 9.8 | 9.1 | 8.7 |
Вариант | x | 0.0 | 0.2 | 0.4 | 0.6 | 0.8 | 1.0 | 1.2 | 1.4 | 1.6 | 1.8 | |
y | 0.01 | 0.03 | 0.28 | 1.9 | 1.5 | 1.3 | 1.1 | 1.6 | 2.2 | 2.28 | ||
x | ||||||||||||
y | 1.5 | 1.9 | 2.5 | 5.7 | 4.8 | 3.3 | 2.5 | 1.6 | 1.0 | 0.8 | ||
x | 0.0 | 0.25 | 0.5 | 0.75 | 1.0 | 1.25 | 1.5 | 1.75 | 2.0 | 2.25 | ||
y | 0.0 | 1.3 | 6.9 | 11.6 | 8.7 | 6.2 | 4.1 | 1.6 | 1.3 | 0.5 | ||
x | 0.5 | 0.8 | 1.1 | 1.4 | 1.7 | 2.0 | 2.3 | 2.6 | 2.9 | 3.1 | ||
y | 0.4 | 0.85 | 1.67 | 1.16 | 1.67 | 1.21 | 0.74 | 0.28 | 0.19 | 0.13 | ||
x | 1.0 | 1.6 | 2.2 | 2.8 | 3.4 | 4.0 | 4.6 | 5.2 | 5.8 | 6.4 | ||
y | 45.6 | 36.5 | 28.3 | 9.5 | 3.7 | 5.3 | 2.7 | 1.8 | 1.1 | 1.8 |
Таблица 2.
Вариант | t, сек | |||||||||||||
v, км/ч | ||||||||||||||
Вариант | t, сек | |||||||||||||
v, км/ч | ||||||||||||||