fn2fm
指定した型への変換
構文
g = fn2fm(f,form)
sp = fn2fm(f,'B-',sconds)
fn2fm(f)
説明
g = fn2fm(f,form)
は、f
によって記述されるものと同じ関数を、文字ベクトルまたは string スカラー form
で指定された型で記述します。B 型、pp 型、BB 型、および 2 つの有理スプライン型の form
の選択肢はそれぞれ、'B-'
、'pp'
、'BB'
、'rB'
、'rp'
です。
B 型は与えられた節点シーケンスで与えられた次数の B スプラインの重み付き和として関数を記述し、BB 型 (バーンスタイン-ベジエ型) は、そのシーケンス内の各節点が最大多重度 k で現れる特殊な場合です。pp 型は局所的な多項式係数に関して関数を記述します。B 型は関数の作成や整形に適していますが、pp 型の方がより低コストで評価できます。
多項式型の対応する有理数型への変換は、多項式型の関数がベクトル値で、最後の成分が分母として指定されている場合のみ可能です。有理数型の対応する多項式型への変換では、有理数型の関数の分母を区分的多項式関数の追加の成分として解釈し直すことで、このプロセスが単純に反転されます。
st 型との間での変換は、現在は不可能です。
form
が 'B-'
(および、f
が pp 型) である場合は、各内部ブレークに対する f
内の関数の実際の滑らかさを推定しなければなりません。これを行うには、各内部ブレークについて、近傍の導関数のサイズに比べて、そのブレークを超えるジャンプが、"小さく" ない 1 次導関数を探します。これに使用される既定の許容誤差は 1.e-12
です。
sp = fn2fm(f,'B-',sconds)
では、pp 型から B 型への変換に使用される許容誤差 (厳密に 0 と 1 の間) を、入力引数 sconds
として指定できます。
代わりに、少なくとも f
の pp 型がもつ "内部" ブレーク数と同じ数の整数エントリをもつベクトルとして、sconds
を入力することもできます。その場合、sconds(i)
は i
番目の "内部" ブレークをまたがる際に使用される滑らかさ条件の数を指定します。f
の関数がテンソル積の場合は、sconds
(与えられている場合) は cell 配列でなければなりません。
fn2fm(f)
は、旧バージョンであると思われる型を現在のバージョンに変換します。
例
sp = fn2fm(spline(x,y),'B-')
は MATLAB® コマンド spline
によって提供される内挿 3 次スプラインを、pp 型ではなく B 型で返します。
p0 = ppmak([0 1],[3 0 0]); p1 = fn2fm(fn2fm(fnrfn(p0,[.4 .6]),'B-'),'pp');
スプラインには、fnrfn
によって導入された追加のブレークすべてにわたるいずれの導関数においても不連続点がないため、p0
と等しい p1
(係数内の丸めを除く) を返します。このため、B 型への変換では、これらの追加のブレークが無視され、pp 型への変換では、節点の多重度 (スプラインの基本区間の端点で B 型への変換によって導入された節点の多重度と同様に) が保持されません。
注意事項
B 型から pp 型へ移行する場合、最初と最後の節点 t(1)
または t(end)
のジャンプ不連続点は失われます。これは、pp 型が、f を、それぞれ最初と最後の多項式区分の拡張によって基本区間の外部で定義されたものと見なすためです。たとえば、sp=spmak([0 1],1)
は区間 [0
..1
] の特性関数を返しますが、pp=fn2fm(spmak([0 1],1),'pp')
は定数多項式 x|→1 です。
アルゴリズム
多変量 (テンソル積) 関数の場合、各変数で一変量アルゴリズムが適用されます。
B 型 (または、BB 型) から pp 型への変換の場合、ユーティリティ コマンド sprpp
と、左の端点で反復される節点挿入を使用して、すべての多項式区分の B 型を局所的な指数形式に変換します。
B 型から BB 型への変換は、各節点を十分な回数挿入して、その多重度をスプラインの次数にまで増やすことで実現されます。
pp 型から B 型への変換では、スプラインのタイプ: pp 型および B 型で説明されている双対関数を使用します。このような変換では、さらなる情報なしで、f
の関数の各内部ブレークにわたる実際の滑らかさを確認しなければなりません。