from_power_basis#
- метод класса BSpline.from_power_basis(pp, bc_type='not-a-knot')[источник]#
Построить полином в базисе B-сплайна из кусочно-полиномиальной функции в степенном базисе.
Пока принимает
CubicSplineтолько экземпляры.- Параметры:
- ppCubicSpline
Кусочно-полиномиальная функция в степенном базисе, созданная с помощью
CubicSpline- bc_typestring, optional
Тип граничного условия, как в
CubicSpline: один изnot-a-knot,natural,clamped, илиperiodic. Необходимо для создания экземпляраBSplineкласс. По умолчаниюnot-a-knot.
- Возвращает:
- b
BSplineobject Новый экземпляр, представляющий начальный полином в базисе B-сплайна.
- b
Примечания
Добавлено в версии 1.8.0.
Принимает только
CubicSplineэкземпляры на данный момент.Алгоритм следует из дифференцирования тождества Марсдена [1]: каждый из коэффициентов функции интерполяции сплайнами в базисе B-сплайнов вычисляется следующим образом:
\[c_j = \sum_{m=0}^{k} \frac{(k-m)!}{k!} c_{m,i} (-1)^{k-m} D^m p_{j,k}(x_i)\]\(c_{m, i}\) - коэффициент CubicSpline, \(D^m p_{j, k}(x_i)\) - m-я производная двойного полинома в \(x_i\).
kвсегда равно 3 на данный момент.First
n - 2коэффициенты вычисляются в \(x_i = x_j\), например,\[c_1 = \sum_{m=0}^{k} \frac{(k-1)!}{k!} c_{m,1} D^m p_{j,3}(x_1)\]Последний
nod + 2коэффициенты вычисляются вx[-2],nod- количество производных на концах.Например, рассмотрим \(x = [0, 1, 2, 3, 4]\), \(y = [1, 1, 1, 1, 1]\) и bc_type =
naturalКоэффициенты CubicSpline в степенном базисе:
\([[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [1, 1, 1, 1, 1]]\)
Вектор узлов: \(t = [0, 0, 0, 0, 1, 2, 3, 4, 4, 4, 4]\)
В этом случае
\[c_j = \frac{0!}{k!} c_{3, i} k! = c_{3, i} = 1,~j = 0, ..., 6\]Ссылки
[1]Том Лихе и Кнут Моркен, Методы сплайнов, 2005, Раздел 3.1.2