Main Content

fnrfn

型の区画の調整

構文

g = fnrfn(f,addpts)

説明

g = fnrfn(f,addpts) f より多くの項を使用して、同じ関数を記述します。これは、異なる型の 2 つ以上の関数の和を求める場合や、細かい局所的な変更を可能にするために型の自由度の数値を増やす場合に役立ちます。厳密なアクションは f の型によって異なります。

f の型が B 型または BB 型の場合、addpts のエントリが既存のノット シーケンスに挿入されます。これは次の制約に従います。「どのノットの多重度もスプラインの次数を超えることはない」。f によって与えられた関数についてこの調整されたノット シーケンスをもつ同等の B 型が返されます。

f の型が pp 型の場合、addpts のエントリが既存のブレーク シーケンスに挿入されます。これは次の制約に従います。「ブレーク シーケンスは厳密に増加している」。f の関数についてこの調整されたブレーク シーケンスをもつ同等の pp 型が返されます。

fnrfn は、st 型の関数では機能しません。

f の関数が m 変量の場合、addpts は cell 配列 {addpts1,..., addptsm} でなければならず、調整は変数ごとに実行されます。この cell 配列の i 番目のエントリが空の場合、i 番目の変数のノットまたはブレーク シーケンスは変更されません。

B 型のスプラインを作成し、それをプロットして、中間調整を 2 回適用します。スプライン自体にきわめて近くなることを想定して、得られた調整済みスプラインの制御多角形もプロットします。

k = 4; sp = spapi( k, [1,1:10,10], [cos(1),sin(1:10),cos(10)] ); 
       fnplt(sp), hold on 
       sp3 = fnrfn(fnrfn(sp)); 
       plot( aveknt( fnbrk(sp3,'knots'),k), fnbrk(sp3,'coefs'), 'r') 
       hold off 
3 回目の調整を行うと、2 つの曲線が区別できなくなります。

fnrfn を使用して、同じ次数の 2 つの B スプラインを追加します。

B1 = spmak([0:4],1); B2 = spmak([2:6],1); 
       B1r = fnrfn(B1,fnbrk(B2,'knots')); 
       B2r = fnrfn(B2,fnbrk(B1,'knots')); 
       B1pB2 = spmak(fnbrk(B1r,'knots'),fnbrk(B1r,'c')+fnbrk(B2r,'c')); 
       fnplt(B1,'r'),hold on, fnplt(B2,'b'), fnplt(B1pB2,'y',2) 
       hold off 

アルゴリズム

調整済みノット シーケンスの B 型係数の計算には標準の "ノット挿入" アルゴリズムが使用されますが、調整済みブレーク シーケンスの追加のブレークでの局所的な多項式係数の計算にはホーナー法が使用されます。

参考

| |