Иллюстрированный самоучитель по Mathematica 3/4

Примитивы, использующие сплайны (Spline)

Подпакет Spline вместе с уже описанным подпакетом NumericalMath'SplineFit' (сплайновая регрессия) обеспечивает представление данных с помощью сплайна. В подпакете Spline определена единственная функция Spline [points, type], которая создает графический примитив, представляющий сплайн-кривую типа type (Cubic, Bezier или CompoziteBezier – см. описание подпакета NumericalMath'SplineFit').

Среди ее опций важно отметить следующие (как и ранее, приведены значения, используемые по умолчанию): SplineDots › None, SplinePoints › 25, Max-Bend › 10.0 и SplineDivision › 20.0.

Рисунок 14.85 показывает задание массива из пяти точек на плоскости и соединение их отрезками прямых и кубическими сплайн-функциями. Хорошо видна аналогия сплайна с гибкой линейкой.

Иллюстрированный самоучитель по Mathematica 3/4 › Расширения графики (пакет Graphics) › Примитивы, использующие сплайны (Spline)
Рис. 14.85. Пример интерполяции пяти точек отрезками прямой и сплайнами

Сплайн-функции в данном случае применяются в порядке задания точек в списке pts. В этом случае возможно создание замкнутых линий (рис. 14.85 является наглядным примером этого).

Следует отметить, что хотя сплайн-аппроксимация дает хорошие результаты при умеренном числе точек, при малом их числе и неудачном выборе типа сплайнов результат может оказаться неудовлетворительным. Рисунок 14.86 иллюстрирует такую ситуацию.

Иллюстрированный самоучитель по Mathematica 3/4 › Расширения графики (пакет Graphics) › Примитивы, использующие сплайны (Spline)
Рис. 14.86. Пример срыва сплайн-интерполяции точек

Рисунок 14.87 показывает возможность построения сплайн-функции вместе с точками, через которые она проходит.

Иллюстрированный самоучитель по Mathematica 3/4 › Расширения графики (пакет Graphics) › Примитивы, использующие сплайны (Spline)
Рис. 14.87. Построение исходных точек и проходящей через них сплайн-функции

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.