st 型スプラインの作成と操作
st 型の紹介
テンソル積の構成とは大きく異なる多変量関数型は、scattered translates 型、略して st 型です。その名のとおり、いくつかの多項式の項に加え、1 つの固定関数 ψ の任意の、または散在する並行移動 (scattered translates) ψ(· –cj) を使用します。明示的に、このような型は以下の関数を記述します。
これは、"基底関数" ψ、"centers" と呼ばれるサイトのシーケンス (cj)、n 個の係数による対応するシーケンス (aj) に関するものです。最後の k 個の係数 an-k+1,...,an が "多項式部分" p に含まれます。
基底関数に放射対称性がある場合、つまり、ψ(x) がその引数 x のユークリッド長 |x| のみに依存する場合、ψ は "放射基底関数" と呼ばれ、それに応じて f は通常 RBF と呼ばれます。
現在、ツールボックスでは 1 種類の st 型のみ、すなわち、二変量薄板スプラインとその 1 次偏導関数のみが機能します。薄板スプラインの場合、基底関数は ψ(x) = φ(|x|2) であり、φ(t) = tlogt (つまり、放射基底関数) です。多項式部分は線形多項式 p(x)=x(1)an – 2+x(2)an – 1+an です。それに応じて、1 番目の引数に関する 1 次偏導関数は基底関数 ψ(x)=φ(|x|2) を使用します。ここで、φ(t) = (D1t)·(logt+1)、D1t = D1t(x) = 2x(1)、p(x) = an です。
st 型の作成とプロパティ
st 型の関数は、以下のコマンドによってその中央シーケンス centers
と係数シーケンス coefs
から組み立てることができます。
f = stmak(centers, coefs, type);
ここで、type
には 'tp00'
、'tp10'
、'tp01'
のいずれかを指定でき、それぞれ、薄板スプライン、1 番目の引数に関する薄板スプラインの 1 次偏導関数、2 番目の引数に関する薄板スプラインの 1 次偏導関数を示します。もう 1 つの選択肢 'tp'
があります。これは多項式部分のない薄板スプラインを示しており、tpaps
などによる薄板スプラインの作成時にのみ使用されます。
st 型の関数 f は、その係数に線形に依存します。つまり、以下を意味します。
ここで、ψj は基底関数 Ψ の並行移動または多項式です。指定されたサイト xi の指定された値に関数 f が一致するように、これらの係数 aj を決定するものとします。その後、選点行列 (ψj(xi)) が必要となります。この行列は、コマンド stcol
(centers,x,type)
によって取得できます。実際に、st 型はその係数配列の j 番目の "列" coefs(:,j)
として、aj をもつため、stcol
が選点行列の "転置" を提供できる点にも注目する必要があります。したがって、コマンド
values = coefs*stcol(centers,x,type,'tr');
は、centers
および type
によって指定された st 関数のエントリ x
における値を提供します。
st 型は、区分的多項式型とは対照的に、変数の数にかかわらず、その複雑度が同じであるため魅力的です。非常にシンプルでありながら、中心の選択は完全に自由であるため、高い柔軟性と適応性をもちます。
マイナス面は、放射基底関数の最も魅力的な選択肢が、任意のサイトでの評価にすべての係数が伴う薄板スプラインと共有される点です。たとえば、fnplt
を介してスカラー値薄板スプラインをプロットするには、サイトの 51 行 51 列グリッドの評価が必要となり、これは 1000 個以上の係数がある場合には、厄介なタスクとなります。1000 か所のデータ サイトで関数値に一致する st 型の関数を取得するために、これらの 1000 個の係数を決定しようとすると、状況はさらに悪化します。それには、次数 1000 の完全な線形システムを解く必要があり、直接法によって実行する場合、このタスクには O(10^9) フロップスが必要となるからです。この線形システムの選点行列を作成する (stcol
によって) だけでも、O(10^6) フロップスを要します。
薄板スプライン内挿および近似を作成するコマンド tpaps
は、728 個を超えるデータ点がある場合には反復法を使用しますが、これらの反復の収束には時間がかかることがあります。
st 型の操作
tpaps
を用いて (または、直接 stmak
を介して)、近似または内挿薄板スプライン st
を作成した後、以下のコマンドを使用できます。
fnbrk
: 一部を取得するか、基本区間を変更するfnval
: それを評価するfnplt
: それをプロットするfnder
: 2 つの 1 次偏導関数を作成する (中心で無限大となるため、これより次数の高い導関数は作成しない)これは、st 型がこのツールボックスの他の型とは本質的に大きく異なることを示す 1 例に過ぎません。したがって、全般的に他の
fn...
コマンドは st 型では動作しません。たとえば、fnjmp
を使用するのは意味がなく、fnmin
またはfnzeros
は一変量関数の場合のみ動作します。また、st 型の関数でfnint
を使用しても意味がありません。このような関数は閉じた形で積分できないからです。A
が、st
によって記述された関数の値に適用できるものである場合は、コマンドAst =
fncmb
(st,A)
をst
で使用できます。たとえば、A
は'sin'
となることがあります。この場合、Ast
は、その係数がst
の係数の正弦である st 型の関数となります。実質的に、Ast
は、st
でA
を構成することで取得された関数を記述します。ただし、薄板スプラインのより次数の高い導関数の特異点のために、fndir
またはfntlr
をこのようなst
に適用可能にしてもあまり意味はないようです。