Сплайн интерполяция в mathcad

Сплайн интерполяция в mathcad

БлогNot. MathCAD: интерполяция одной формулой

MathCAD: интерполяция одной формулой

На практике мы редко программируем численные методы в MathCAD, гораздо чаще нам нужно быстро найти готовую формулу, желательно, встроенную в пакет.

Для большинства нужных случаев одномерной и двумерной интерполяции такие решения есть.

Возьмём 2 любых вектора одинаковой размерности, содержащих значения Xi и Y(Xi) соответственно:

Нумерация элементов векторов и матриц для удобства установлена со значения 1 вместо стандартного 0 .

Для N точек на плоскости построить регрессию порядка M , 0 , можно, создав простую функцию вида

Функция считает значение полинома степенной регрессии в заданной точке x малое.

Если вместо 4 поставить 1 — получится МНК первого порядка (сглаживание точек прямой линией), при значении 2 построится кусочек параболы, а при максимально допустимом для 5 точек значении порядка регрессии 4 мы построили кривую, совпадающую и с каноническим степенным полиномом, и с полиномом Лагранжа.

В последних версиях MathCAD значение интерполяционного полинома степени N-1 в точке x малое можно вычислить и функцией

Неудобство лишь в том, что p(x) будет возвращать вектор из двух элементов (обратите внимание, что выводится на график значение p(x)1 ). Зато во втором элементе сразу будет "лежать" погрешность в точке вычисления.

На практике высокие степени полиномов обычно не нужны, если мы хотим провести гладкую и дифференцируемую кривую через известные точки, обычно хорошим решением оказывается интерполяционный сплайн 3 порядка, значение которого в точке x малое можно вычислить функцией

На каждом интервале [Xi,Xi+1] такой сплайн представляется функцией от третьей степени x и является гладкой дважды дифференцируемой кривой.

Вот реализация всех трёх формул и график:

Скачать этот пример в формате .xmcd (MathCAD 14/15) (31 Кб)

13.06.2014, 11:01; рейтинг: 15273

Как было описано выше, интерполяция использует значения некоторой функции, заданные в ряде точек, чтобы предсказать значения функции между ними. В MathCad можно соединять точки данных прямыми линиями (линейная интерполяция) или соединять их отрезками кубического полинома (кубическая сплайн-интерполяция).

Читайте также:  Интернет знакомства по всему миру

Функции интерполяции определяют кривую, точно проходящую через заданные точки. Из-за этого результат очень чувствителен к ошибкам данных. Кроме того, необходимо убедиться, что каждый элемент массива, который используется в любой из функций, описанных в этом разделе, содержит определенное значение. Поскольку MathCad присваивает значение 0 любым элементам, которые явно не определены.

При линейной интерполяции MathCad соединяет существующие точки данных прямыми линиями. Это выполняется функцией linterp.

Эта функция соединяет точки данных отрезками прямых, создавая таким образом ломаную. Интерполируемое значение для конкретного x: есть ордината y соответствующей точки ломаной.

Для значений x, расположенных перед первой точкой в векторе vx, MathCad продолжает ломаную прямой линией, проходящей через первые две точки данных. Для значений x, расположенных за последней точкой vx, MathCad продолжает ломаную прямой линией, проходящей через последние две точки данных.

Для получения наилучших результатов x должно находится между самыми большими и самыми маленькими значениями vx — маловероятно, что будут полезны значения, вычисленные для вне этого диапазона. Функция linterp предназначена для интерполяции, а не для экстраполяции. Рис. 8.2 показывает некоторые примеры линейной интерполяции.

Рис. 8.2. Линейная интерполяция

Кубическая сплайн-интерполяция позволяет провести кривую через набор точек таким образом, что первые и вторые производные кривой непрерывны в каждой точке. Эта кривая образуется путем создания ряда кубических полиномов, проходящих через наборы из трех смежных точек. Кубические полиномы затем состыковываются друг с другом, чтобы образовать одну кривую.

MathCad поставляется с тремя сплайн функциями:

Они возвращают вектор коэффициентов вторых производных, который мы будем называть vs. Этот вектор vs обычно используется в функции interp, описанной ниже. Аргументы vx и vy должны быть вещественными векторами одинаковой длины. Значения вектора vx должны быть расположены в порядке возрастания.

Эти три функции отличаются только граничными условиями:

· функция lspline генерирует кривую сплайна, которая приближается к прямой линии в граничных точках;

Рис. 8.3. Кубическая сплайн-интерполяция

Читайте также:  Викс конструктор сайтов вход

· функция pspline генерирует кривую сплайна, которая приближается к параболе в граничных точках.

· функция cspline генерирует кривую сплайна, которая может быть кубическим полиномом в граничных точках.

Чтобы провести кубический сплайн через набор точек (рис. 8.3):

· создайте векторы vx и vy, содержащие координаты x и y,через которые нужно провести кубический сплайн. Элементы vx должны быть расположены в порядке возрастания. (Хотя мы используем имена vx, vy и vz, нет никаких ограничений на имена этих переменных; можно использовать любые имена);

Рис. 8.4. Экстраполяция

Вектор vs содержит вторые производные интерполяционной кривой в рассматриваемых точках;

Интерполируемое значение для конкретного x: есть ордината y соответствующей точки сплайна. Для значений x, расположенных перед первой точкой вектора vx, MathCad продолжает сплайн первой из составляющих его кубических парабол. Для значений x, расположенных за последней точкой vx, MathCad продолжает сплайн первой из составляющих его кубических парабол.

Для получения наилучших результатов x должно находится между самыми большими и самыми маленькими значениями vx — маловероятно, что будут полезны значения, вычисленные для х вне этого диапазона. Сплайны предназначены для интерполяции, а не для экстраполяции.

Линейное предсказание (экстраполяция)

Иногда необходимо оценить значения формул в точках, находящихся вне области расположения сетки, на которой заданы значения функции. В MathCad есть функция predict, которая позволяет это сделать.

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

Функция predict использует последние m исходных значений данных, чтобы вычислять коэффициенты предсказания. Как только это сделано она использует последние m точек, чтобы предсказать координаты (m+1)-ой точки, фактически создавая скользящее окно шириной в m точек (рис. 8.4).

Mathcad для студентов

Mathcad для начинающих

Скачать программы бесплатно

Интерполяция и экстраполяция в Mathcad

Интерполяцией в Mathcad это восстановление функции по известным ее значениям или значениям ее производных в отдельных точках. Задача интерполяции экспериментальных данных сводится к тому, чтобы предсказать в промежуточных точках значение функции, заданной таблично. То есть исходные данные можно представить в виде таблицы, куда сводятся дискретные экспериментальные значения, полученные в некоторых точках наблюдений или в определенные интервалы времени. В Mathcad можно соединять табличные точки прямой линией (линейная интерполяция) либо отрезками кубического полинома (кубическая сплайн-интерполяция).

Читайте также:  Почему течет шланг от стиральной машины

Линейная интерполяция в Mathcad реализуется посредством функции linterp(vx,vy,x), где vx, vy — векторы данных. Причём данные должны быть упорядочены по возрастанию; x — аргумент, для которого возвращается значение y

Кубическая сплайн-интерполяция позволяет провести через набор точек гладкую кривую так, чтобы в этих точках были непрерывны первая и вторая производные. Интерполяция осуществляется двумя функциями. В начале вычисляется вектор вторых производных в рассматриваемых точках, затем вычисляется значение функции в точке x -> interp(vs,vx,vy,x). Для построения вектора вторых производных в Mathcad имеется набор из 3-х функций, которые отличаются лишь граничными условиями: cspline(vx,vy) — генерирует кривую, являющуюся кубическим полиномом в граничных точках; pspline(vx,vy) — соответственно, параболу; lspline(vx,vy) — прямую.

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

Под экстраполяцией в Mathcad понимают предсказание поведения функции за пределами области ее определения. В нашем случае эта задача сводится к определению значений некоторого параметра за пределами области, в которой значения этого параметра известны. В ближайших к правой границе точек, на основе которых производится экстраполяция в Mathcad, n — количество точек, в которых производится экстраполяция данных. Результаты, получаемые на основе функции predict(v,m,n) в значительной мере зависят от параметра m. На листинге представлены результаты работы функции на примере данных об объеме выпускаемой продукции за 12 месяцев

Ссылка на основную публикацию
Снять пароль с роутера tp link
Домашняя беспроводная сеть Wi-Fi должна быть защищена паролем. Но ведь бывают разные случаи, скажете вы. Например, вы хотите пригласить друзей...
Скопировать контакты с андроид на компьютер
Мы уже рассказывали о том, как скопировать контакты со смартфона на смартфон. Но иногда проще перебросить контактную книгу на компьютер....
Скопировать строку таблицы значений 1с в другую
Не претендуя на полноту описания функций и методов работы с таблицей значений 1с привожу некоторые аспекты, которые в своё время...
Снять пароль с макроса excel
Здравствуйте, друзья! Последние дни бился над такой задачей: Имеется файл .xls, в нем макрос на VBA, защищенный паролем. Файл создается...
Adblock detector