Nickolay.info. Обучение. Сплайн-интерполяция в MathCAD

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

Сначала следует получить коэффициенты сплайна одной из функций lspline(vx,vy), pspline(vx,vy) или cspline(vx,vy).

Все они позволяют построить кубический сплайн (кривую 3 порядка с 2 непрерывными производными) с заданными краевыми условиями, а именно, lspline - линейными (2-я производная равна 0 на концах сплайна), pspline - параболическими, cspline - кубическими. Данные задаются в виде 2 векторов vx и vy, значения vx должны быть упорядочены по возрастанию. После этого функция interp(vs,vx,vy,x) может получить по найденным коэффициентам значение сплайна в заданной точке x. Вектор, который вернула функция lspline, cspline или pspline как раз и передаётся в качестве параметра vs.

Рассчитаем все 3 возможных сплайна для vx={0,1,...,50} и vy, заполненного случайной неубывающей последовательностью значений.

Кубический интерполяционный сплайн в MathCAD

Гораздо интереснее двумерные сплайны, в том числе, для моделирования поверхностей. Приведём законченный расчёт, сначала формирующий матрицу данных M размерностью 10x10, а затем строящий двумерный сплайн.

Дополнительно показано, как с помощью стандартной функции CreateMesh (построение сеток, почитать о ней можно в справке MathCAD) и сплайнов смоделировать красивую и гладкую 3D-поверхность.

Повращать её и поэкспериментировать самостоятельно Вы сможете, скачав приложенный файл MathCAD (формат .XMCD, версия 14 и выше).

Построение двумерного сплайна и сеточной поверхности в MathCAD

 Скачать этот пример в формате XMCD (219 Кб)

Если просто нужно построить классический интерполяционный сплайн, это можно сделать гораздо более компактным кодом.

Построение интерполяционного сплайна в MathCAD

 Скачать этот пример в формате MCD (7 Кб)

Рейтинг@Mail.ru

вверх гостевая; E-mail