Pers.narod.ru. Обучение. Сплайн-интерполяция в 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
, заполненного случайной неубывающей последовательностью значений.
Гораздо интереснее двумерные сплайны, в том числе, для моделирования поверхностей. Приведём законченный расчёт, сначала формирующий матрицу данных M
размерностью 10x10
, а затем строящий двумерный сплайн.
Дополнительно показано, как с помощью стандартной функции CreateMesh
(построение сеток, почитать о ней можно в справке MathCAD) и сплайнов смоделировать красивую и гладкую 3D-поверхность.
Повращать её и поэкспериментировать самостоятельно Вы сможете, скачав приложенный файл MathCAD (формат .XMCD, версия 14 и выше).
Скачать этот пример в формате XMCD (219 Кб)
Если просто нужно построить классический интерполяционный сплайн, это можно сделать гораздо более компактным кодом.
Скачать этот пример в формате MCD (7 Кб)
гостевая; E-mail |