B-laŭparta interpola funkcio

* En la matematika subkorpo de cifereca analitiko **B-laŭparta interpola funkcio** estas laŭparta interpola funkcia funkcio kiu havas minimuman subtenon kun respekto al donita grado, glatecon, kaj dispartigitan domajnon. Fundamentaj teoremaj diras, ke ĉiu laŭparta interpola funkcia funkcio de donita grado, glateco kaj dispartigo de domajno, povas esti prezentita kiel lineara kombinaĵo de B-laŭpartaj interpolaj funkcioj de tiu la sama grado kaj glateco, kaj super tiu la sama dispartigo. La termino *B-laŭparta interpola funkcio* estis elpensita far Isaac Jakobo Schoenberg kaj estas mallongigo por *baza laŭparta interpola funkcio*. B-laŭpartaj interpolaj funkcioj povas esti komputitaj en ciferece stabila maniero per la algoritmo de de Boor.

* En komputila projektado kaj komputila grafiko la termino **B-laŭparta interpola funkcio** ofte uziĝas por nomi laŭpartan interpolan funkcian kurbon parametrigitan per laŭpartaj interpolaj funkciaj funkcioj kiu estas esprimita kiel linearaj kombinaĵoj de B-laŭpartaj interpolaj funkcioj (en la matematika senco pli supre).

## Difino 
Estu donitaj *m*+1 nodoj *t**i* en [0,1] kun
:t_0 

**B-laŭparta interpola funkcio** de grado *n* estas parametra kurbo

:\mathbf{S}:[0,1] \to \mathbb{R}^2

konsistanta el **bazaj B-laŭpartaj interpolaj funkcioj** de grado *n*

:\mathbf{S}(t)= \sum_{i=0}^{m+1} \mathbf{P}_{i} b_{i,n}(t) \mbox{ , } t \in [0,1].

La **P***i* estas nomata kiel **apogaj punktoj** aŭ **punktoj de de Boor**. Plurlatero povas esti konstruita per trakonekto de la apogaj punktoj per linioj, komencante de **P**0 kaj finante ĉe **P***n*. Ĉi tiu polurlatero estas nomata kiel la **plurlatero de de Boor**.

La *m*-*n* bazaj B-laŭpartaj interpolaj funkcioj de grado *n* povas esti difinitaj per la **rikura formulo de Cox-de Boor**

:b_{j,0}(t) := \begin{cases}
1 & t_j \leq t 

:b_{j,n}(t) := \frac{t - t_j}{t_{j+n} - t_j} b_{j,n-1}(t) + \frac{t_{j+n+1} - t}{t_{j+n+1} - t_{j+1}} b_{j+1,n-1}(t).

Kiam la nodoj estas samdistancaj oni diras ke la B-laŭparta interpola funkcio estas **uniforma** alie oni nomas ĝin kiel **ne-uniforma**.

### Uniforma B-laŭparta interpola funkcio 
Kiam la B-laŭparta interpola funkcio estas uniforma, la bazaj B-laŭpartaj interpolaj funkcioj por donita grado *n* estas simple ŝovintaj kopiojn unu de la alia. Alternativa ne-rekursia difino por la *m*-*n* bazaj B-laŭpartaj interpolaj funkcioj estas

:b_{j,n}(t) = b_n(t - t_j), \qquad\; j = 0, \ldots, m-n-1

kun

:b_{n}(t) := (n+1) \sum_{i=0}^{n+1} \omega_{i,n}(t - t_i)_+^{n} \,\; 

kaj

:\omega_{i,n} := \prod_{j=0, j \neq i}^{n+1} \frac{1}{t_j - t_i} \,\;

kie

:(t - t_i)_+^n \,\;

estas la senpintigita pova funkcio.

## Notoj 
Kiam la nombro de nodoj estas la sama kiel la grado, la B-Laŭparta interpola funkcio degeneras en Bezier-an kurbon. La formo de la bazaj funkcioj estas difinita per la pozicio de la nodoj. Skaligo aŭ movo de la noda vektoro ne aliigas la bazajn funkciojn.

La laŭparta interpola funkcio estas enhavata en la konveksa koverto de siaj apogaj punktoj.

Baza B-laŭparta interpola funkcio de grado *n*
:b_{i,n}(t)\,\;
estas ne-nulo nur en la intervalo [*t**mi*, *t**mi+n+1*] tio estas
:b_{i,n}(t) = \begin{cases}
>0 & t_{i} \le t 
En aliaj vortoj se ni manipulas unu apogan punkton ni nur ŝanĝas la lokan konduton de la kurbo kaj ne la mallokan konduton kiel ĉe Bézier-aj kurboj.

## Ekzemploj 
### Konstanta B-laŭparta interpola funkcio 
La konstanta B-laŭparta interpola funkcio estas la plej simpla laŭparta interpola funkcio. Ĝi estas difinita sur nur unu interaĵo de nodoj kaj eĉ ne estas kontinua sur la nodoj. Ĝi estas nure nadla funkcio por la malsama nodaj interaĵoj.

:b_{j,0}(t) = 1_{[t_j,t_{j+1})} =
\begin{cases}
1 & t_j \le t 

### Lineara B-laŭparta interpola funkcio 
La lineara B-laŭparta interpola funkcio estas difinita sur du najbaraj nodoj generas kaj estas kontinua sur la nodoj, sed ne diferencialebla.

:b_{j,1}(t) =
\begin{cases}
\frac{t - t_j}{t_{j+1} - t_j} & t_j \le t 

### Uniforma kvadrata B-laŭparta interpola funkcio 
Kvadrataj B-laŭpartaj interpolaj funkcioj kun uniforma *nodo-vektoro* estas kutime uzata speco de B-laŭparta interpola funkcio. La miksanta funkcio povas esti facile esti antaŭkalkulita, kaj estas egala por ĉiu segmento en ĉi tiu okazo.
:b_{j,2}(t) = \begin{cases} \frac{1}{2}t^2 \\ -t^2 + t + \frac{1}{2} \\ \frac{1}{2}(1-t)^2 \end{cases}

Enmeti matrico-(formo, formi), ĝi estas:
: \mathbf{S}_i(t) = \begin{bmatrix} t^2 & t & 1 \end{bmatrix} \frac{1}{2} \begin{bmatrix}
1 & -2 & 1 \\
-2 & 2 & 0 \\
1 & 1 & 0 \end{bmatrix}
\begin{bmatrix} \mathbf{p}_{i-1} \\ \mathbf{p}_{i} \\ \mathbf{p}_{i+1} \end{bmatrix}
 por t \in [0,1]

### Kuba B-Laŭparta interpola funkcio 
B-laŭparta interpola funkcia formulaĵo por sola segmento povas esti skribita kiel:

:\mathbf{S}_{i} (t) = \sum_{k=0}^3 \mathbf{P}_{i-3+k} b_{i-3+k,3} (t) \qquad \mbox{ , } t \in [0,1]

kie **S***i* estas la *i*−a B-laŭparta interpola funkcia segmento kaj P estas la aro de apogaj punktoj, segmento *i* kaj *k* estas la lokaj apogaj punktaj indeksoj. Aro de apogaj punktoj devus esti P_i^w = ( w_i x_i, w_i y_i, w_i z_i, w_i) kie la w_i estas pezo, tiranta la kurbon al apoga punkto P_i kiel ĝi (multigas, pligrandiĝas) aŭ movanta la kurbo for kiel ĝi malgrandiĝas.

Tuta aro da segmentoj, *m*-2 kurboj (S_3,S_4,...,S_m) difinita per *m*+1 apogaj punktoj (P_0,P_1,...,P_m, m \ge 3), kiel unu B-laŭparta interpola funkcio en *t* devus esti difinita kiel:

:\mathbf{S}(t) = \sum_{i=0}^m \mathbf{P}_{i} b_{i,3} (t)

kie *i* estas la apoga punkta nombro kaj *t* estas malloka parametra donanta nodo-valorojn. Ĉi tiu formulo esprimas B-laŭpartan interpolan funkcian kurbon kiel linearan kombinaĵon de B-laŭpartaj interpolaj bazaj funkcioj, de ĉi tie estas la nomo.

Estas du tipoj de B-laŭparta interpola funkcio - uniforma kaj ne-uniforma. Ne-uniforma B-laŭparta interpola funkcio estas kurbo kie la intervaloj inter sukcesaj apogaj punktoj estas ne, ĉu ne bezone, egala (la noda vektoro de ena nodo generas estas ne egala). Komuna formo estas kie intervaloj estas sukcese reduktitaj al nulo, interpolantaj apogaj punktoj.

### Uniformaj kubaj B-laŭpartaj interpolaj funkcioj 
Kubaj B-laŭpartaj interpolaj funkcioj kun uniformo *nodo-vektoro* estas la plej kutime uzita formo de B-laŭparta interpola funkcio. La miksanta funkcio povas facile esti antaŭkalkulata, kaj estas egala por ĉiu segmento en ĉi tiu kazo. Enmeti matrico-formojn, ĝi estas:
: \mathbf{S}_i(t) = \begin{bmatrix} t^3 & t^2 & t & 1 \end{bmatrix} \frac{1}{6} \begin{bmatrix}
-1 & 3 & -3 & 1 \\
 3 & -6 & 3 & 0 \\
-3 & 0 & 3 & 0 \\
 1 & 4 & 1 & 0 \end{bmatrix}
\begin{bmatrix} \mathbf{p}_{i-1} \\ \mathbf{p}_{i} \\ \mathbf{p}_{i+1} \\ \mathbf{p}_{i+2} \end{bmatrix}
 por t \in [0,1]

## Vidu ankaŭ 
* Laŭparta interpola funkcio
* Algoritmo de de Boor
* Kurbo de Bézier

## Eksteraj ligiloj 
* [Interagaj ĝavaj apleto(https://eo.wikipedia.org/wiki/apleto)j por B-laŭpartaj interpolaj funkcioj]
* http://mathworld.wolfram.com/B-Spline.html En MathWorld
* http://www.qwerkop.de/qwerkop-projects-bspline.php
* http://math.fullerton.edu/mathews/n2003/B-SplinesMod.html

Kategorio:Komputila grafiko