Чего не хватает во многих из этих ответов, так это того, что вы, возможно, не захотите подгонять к своим данным одну кубическую кривую Безье.В более общем случае вы хотели бы подогнать последовательность произвольных кубических кривых Безье, то есть кусочно кубическую подгонку Безье, к произвольному набору данных.
Есть хороший тезис, датированный 1995 годом, в комплекте с кодом MATLAB, который делает это:
% Lane, Edward J. Fitting Data Using Piecewise G1 Cubic Bezier Curves.
% Thesis, NAVAL POSTGRADUATE SCHOOL MONTEREY CA, 1995
http://www.dtic.mil/dtic/tr/fulltext/u2/a298091.pdf
Чтобы использовать это, вы должны как минимумукажите количество узловых точек, т. е. количество точек данных, которые будут использоваться подпрограммами оптимизации для подбора.При желании вы можете сами указать точки узлов, что повышает надежность посадки.Тезис показывает несколько довольно жестких примеров.Обратите внимание, что подход Лейна гарантирует непрерывность G1 (направления смежных касательных векторов идентичны) между кубическими сегментами Безье, т.е. гладкими соединениями.Однако могут быть разрывы в кривизне (изменения в направлении второй производной).
Я переопределил код, обновив его до современного MATLAB (R2015b).Свяжитесь со мной, если хотите.
Вот пример использования всего трех узловых точек (выбираемых автоматически кодом) для подгонки двух кубических сегментов Безье к фигуре Лиссажу.
![Lissajous figure](https://i.stack.imgur.com/TZUXH.png)