Одним из способов является полином Лагранжа , который представляет собой метод получения полинома, который будет проходить через все заданные точки данных.
Во время моего первого курса в университете я написал небольшой инструмент для этого в 2D, и вы можете найти его на этой странице , он называется Lagrange solver. Страница Википедии также имеет пример реализации.
Вот как это работает: у вас есть полином n-го порядка, p(x)
, где n - это количество точек, которые у вас есть. Он имеет вид a_n x^n + a_(n-1) x^(n-1) + ...+ a_0
, где _
- индекс, ^
- степень. Затем вы превращаете это в набор уравнений:
p(x_1) = y_1
p(x_2) = y_2
...
p(x_n) = y_n
Вы преобразуете вышеприведенное в расширенную матрицу и решаете для коэффициентов a_0 ... a_n
. Тогда у вас есть многочлен, который проходит через все точки, и теперь вы можете интерполировать между точками.
Обратите внимание, однако, что это может не подходить для вашей цели, так как не дает возможности отрегулировать кривизну и т. Д. - вы застряли с одним решением, которое нельзя изменить.