fncmb
関数を用いた算術
構文
fn = fncmb(function,operation)
f = fncmb(function,function)
fncmb(function,matrix,function)
fncmb(function,matrix,function,matrix)
f = fncmb(function,op,function)
説明
目的は、関与する関数の関連する部分を明示的に処理することなく、スプライン空間内でのスケーリングや追加の標準の線形演算の実行を容易にすることです。
fn = fncmb(function,operation)
は、operation
によって指定された演算である function
の関数の値に適用することで取得された関数 (の説明) を返します。演算の性質は、operation
が "スカラー"、"ベクトル"、"行列"、"文字ベクトルまたは string スカラー" のいずれであるかに応じて、次のように異なります。
スカラー | 関数をそのスカラーで乗算します。 |
ベクトル | ベクトルを関数の値に追加します。関数はベクトル値でなければなりません。 |
行列 | 行列を関数の係数に適用します。 |
文字ベクトルまたは string スカラー | その文字ベクトルまたは string スカラーによって指定された関数を関数の係数に適用します。 |
残りのオプションは "一変量" 関数でのみ機能します。詳細については、「制限」を参照してください。
f = fncmb(function,function)
は、2 つの関数の点単位の和 (の説明) を返します。2 つの関数は同じ型でなければなりません。入力引数が 2 つのみのこの特定のケースは一変量関数のみで機能するため、上記の表には含まれていません。
fncmb(function,matrix,function)
は fncmb(fncmb(function,matrix),function)
と同じです。
fncmb(function,matrix,function,matrix)
は fncmb((fncmb(function,matrix),fncmb(function,matrix)))
と同じです。
f = fncmb(function,op,function)
は、文字ベクトルまたは string スカラー op
で指定された、2 つの関数の点単位の組み合わせによって取得されたスプラインの pp 型を返します。引数 op
は、'+'
、'-'
、'*'
のいずれかにすることができます。2 番目の関数が定数である場合は、ここでその定数を指定するだけで十分です。
例
fncmb(fn,3.5)
は、fn
の関数 (の係数) に 3.5 を乗算します。
fncmb(f,3,g,-4)
は、それぞれ重みが 3 と –4 の f
の関数と g
の関数の線形結合を返します。
fncmb(f,3,g)
は、f
の関数の 3 倍を g
の関数に加算します。
f
の関数 f がスカラー値となる場合、f3=fncmb(f,[1;2;3])
には、x での値が 3 ベクトル (f(x), 2f(x), 3f(x)) である関数の説明が含まれます。このツールボックス全体にわたる規則によって、後続のステートメント fnval(f3, x) は 1 "列" の行列を返す点に注意してください。
f
が R3 内で曲面を記述する場合、つまり、f
の関数が 3 ベクトル値 二変量である場合は、f2 = fncmb(f,[1 0 0;0 0 1])
が (x, z) 面へのその曲面の投影を記述します。
次のコマンドはスピロヘータのような図を生成します。
c = rsmak('circle'); fnplt(fncmb(c,diag([1.5,1]))); axis equal, hold on sc = fncmb(c,.4); fnplt(fncmb(sc,-[.2;-.5])) fnplt(fncmb(sc,-[.2,-.5])) hold off, axis off
t
が長さ n+k
のノット シーケンスで、a
が n
列の行列である場合、fncmb(spmak(t,eye(n)),a)
は spmak(t,a)
と同じです。
fncmb(spmak([0:4],1),'+',ppmak([-1 5],[1 -1]))
は、ブレーク -1:5
を持つ区分的多項式で、区間 [0 .. 4] において、関数 x|→ B(x|0,1,2,3,4) + x に一致します (ただし、0 と 1 のいずれにもアクティブなブレークはないため、区間 [0 .. 4] の外部では、この関数と異なります)。
fncmb(spmak([0:4],1),'-',0)
は fn2fm(spmak([0:4],1),'pp')
と同じ効果があります。
sp
が次数 <k
のスプラインの B 型を記述すると仮定すると、
fn2fm(fncmb(sp,'+',ppmak(fnbrk(sp,'interv'),zeros(1,k))),'B-')
の出力は、同じスプラインの B 型を記述しますが、次数は k
まで増加します。
制限
fncmb
は、fncmb(function,operation)
を除き、"一変量" 関数の場合、つまり、入力に 1 つだけ関数が存在する場合にのみ動作します。
さらに、2 つの関数を伴う場合は、それらは同じタイプでなければなりません。つまり、それらは両方が B 型であるか、または両方が pp 型であり、さらに、ノットまたはブレーク、次数、およびターゲットが同じでなければなりません。この唯一の例外は、形式 fncmb(function,op,function)
のコマンドです。
アルゴリズム
係数は抽出され (fnbrk
を介して)、指定された行列または演算で操作 (および、おそらく加算) され、その後関数の説明の残りと再度組み合わされます (ppmak
、spmak,rpmak,rsmak,stmak
を介して)。確かに、関数が有理の場合は、行列は分子の係数にのみ適用されます。ここでも、与えられたベクトルで関数値を変換しようとして、関数が pp 型である場合は、定数項に対応する係数のみがそのように変換されます。
2 つの関数の入力がある場合は、次の場合を "除いて" それらを同じタイプにしなければなりません (下記の「制限」を参照)。
fncmb(f1,op,f2)
は、関数の pp 型を返します。
ここで、op
は '+', '-'
、 '*'
のいずれかで、f1
、f2
は任意の多項式型です。さらに、f2
がスカラーまたはベクトルの場合は、常にそのスカラーまたはベクトルに等しい関数になります。