from_power_basis#
- classmethod BSpline.from_power_basis(pp, bc_type='not-a-knot')[Quelle]#
Konstruiere ein Polynom in der B-Spline-Basis aus einem stückweisen Polynom in der Potenzbasis.
Derzeit werden nur
CubicSpline-Instanzen akzeptiert.- Parameter:
- ppCubicSpline
Ein stückweises Polynom in der Potenzbasis, wie es von
CubicSplineerstellt wurde.- bc_typeString, optional
Randbedingungstyp wie in
CubicSpline: einer vonnot-a-knot,natural,clampedoderperiodic. Notwendig für die Konstruktion einer Instanz der KlasseBSpline. Standard istnot-a-knot.
- Rückgabe:
- b
BSpline-Objekt Eine neue Instanz, die das ursprüngliche Polynom in der B-Spline-Basis darstellt.
- b
Hinweise
Hinzugefügt in Version 1.8.0.
Akzeptiert vorerst nur
CubicSpline-Instanzen.Der Algorithmus folgt der Ableitung der Marsden-Identität [1]: Jeder der Koeffizienten der Spline-Interpolationsfunktion in der B-Spline-Basis wird wie folgt berechnet:
\[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}\) - ein Koeffizient von CubicSpline, \(D^m p_{j, k}(x_i)\) - eine m-te Ableitung eines dualen Polynoms in \(x_i\).
kist derzeit immer gleich 3.Die ersten
n - 2Koeffizienten werden in \(x_i = x_j\) berechnet, z.B.\[c_1 = \sum_{m=0}^{k} \frac{(k-1)!}{k!} c_{m,1} D^m p_{j,3}(x_1)\]Die letzten
nod + 2Koeffizienten werden inx[-2]berechnet,nod- Anzahl der Ableitungen an den Enden.Betrachten Sie zum Beispiel \(x = [0, 1, 2, 3, 4]\), \(y = [1, 1, 1, 1, 1]\) und bc_type =
natural.Die Koeffizienten von CubicSpline in der Potenzbasis
\([[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [1, 1, 1, 1, 1]]\)
Der Knotenvektor: \(t = [0, 0, 0, 0, 1, 2, 3, 4, 4, 4, 4]\)
In diesem Fall
\[c_j = \frac{0!}{k!} c_{3, i} k! = c_{3, i} = 1,~j = 0, ..., 6\]Referenzen
[1]Tom Lyche und Knut Morken, Spline Methods, 2005, Abschnitt 3.1.2