主要内容

。

テンソル積スプラインによる近似

ツールボックスは“ベクトル”系数と共にスプラインをスプラインをためため,以降の说明でわかるよう,テンソル积スプライングリッドグリッドへ内插またはのの装配はは容易容易ですですです。また,“二销量テンソル积ス”の例を実行。

确かに,グリッドデータへのテンソル积ス近似のほとんどは,この例で说明する详细考虑することなく,このツールボックスのspapicsapeなどのスプライン作物コマンドいずれいずれか使をますし直接取得できます。むしろ,この例はできますます背后ある论を示すための手段,このツールボックスのためでありしての状况ででます。

この節では,テンソル積スプラインの問題の次の点について説明します。

サイトと节点の选択

たとえば,与えられたデータz (i, j) = f (x (i), y (j)), i = 1: Nx, j = 1:纽约への最小二乗近似を考えてみます。曲面近似のスキーマをテストするためのフランケによって広く使用されている関数からデータを取得します(r .因特网”一些插值方法的关键比较分散的数据”,中欧海军研究生院。众议员nps - 53 - 79 - 003, 1979年3月を参照)。領域は単位正方形です。y方向よりも、x 方向で少し多くデータ サイトを選択します。また、より明確に定義するには、境界の近くでデータ密度が高くなるようにします。

x = sort([(0:10)/10,.03 .07,.93 .97]);y = sort([(0:6)/6,03 .07,.93 .97]);[xx,yy] = ndgrid(x,y);z = Franke(XX,YY);

yの関数としての最小二乗近似

これらのデータは,ベクトル値関数,つまり,y (j)における値がベクトルz (:, j)(すべてのjについて)になる関数yから得られたデータとして扱います。特に理由はありませんが,この関数を,等間隔の3つの内部節点をもつベクトル値放物線スプラインによって近似することを選択してください。つまり,このベクトル値スプラインのスプラインの次数と節点シーケンスを次のように選択します。

肯塔基州= 3;knotsy = augknt([0二十五分。5。1),肯塔基州);

その后,spap2を使用して,データへの最小二乘近似をします。

sp = spap2 (knotsy,肯塔基州,y, z);

実际には,年代KY,Knotsy.から各Nxデータセットへの離散最小二乗近似を同時に求めていることになります。

y j z j j 1 N y 1 N x

特に,ステートメント

yy =约:.05:1.1;瓦尔斯= fnval (sp、yy);

は,配列瓦尔斯を提供します。この配列のエントリ瓦尔斯(i, j)はメッシュポイントx(i),yy(j)における基于关关数fの値f(x(i),yy(j))と见なすことができます。これこれ,瓦尔斯(:,j)が,spででの近似スプライン曲曲のyy(j)における値であるですです。

これこれ,次のコマンドで取得される以の图で明らか。

网格(x, yy,瓦尔。”),视图(150年,50)

コマンドで瓦尔斯。”Matlab,Matlab銇銇銇銇銈銈銈銈銈銈銈銈銈銈銈銈銈銈銈銈銈当此®行列指向の表示であるため必要となります。これは,二销量近近で深刻な問題となることがあります。なぜなら、一般的に z(i, j) は点 (x(i), y(j)) における関数値として見なされますが、MATLAB では z(i, j) を、点 (x(j), y(i)) における関数値と見なすためです。

曲面のように見える一連の滑らかな曲線

それぞれの滑らかな曲線の最初の2つの値と最後の2つの値は実際には0である点に注意してください。これは,yy.の最初の2つのサイトと最後の2つのサイトがどちらも,sp型スプラインの基本间外外であるです。

また,リッジにに注意しください。これこれ,滑らかな曲曲が一方向ででプロットれてことが确认できますていること确认できます。

xの关键词ののへの近似

実際の曲面を得るには,さらに1ステップを実行する必要があります。以下は,spのスプラインの係数coefsyです。

cofsy = fnbrk(sp,'cofs');

抽象的に,spのスプラインは関数として考えることができます。

y | r c o e f 年代 y r B r k y y

ベクトル係数coefsy (:, r)の我番目のエントリcofsy(我,r)はx (i)(すべての我について)に対応します。これは,同じ次数kxおよび同じ適切な節点シーケンスknotsxのスプラインによる各係数ベクトルcoefsy (q,:)の近似を示しています。特殊理念はありません,今回は等间隔“4”つの内部節点をもつ“3次”スプラインスプライン使使使ます。

kx = 4;knotsx =奥克纳特([0:.2:1],kx);sp2 = spap2(knotsx,kx,x,cofsy。');

spap2节,k, x,外汇)は,外汇:,J.)がx(j)つまり,におけるにおけるデータとなると想定ている点点てててててててててててててててててて外汇の各“列”が关关値にと想定してい.x(q)(すべてqについて)におけるデータcoefsy (q,:)を近似するには,coefsy“転置”と共にspap2を提供します。

二销量近近

ここでは,得られたスプライン“曲线”の系数CXYの転置について検討します。

系数= fnbrk (sp2,“系数”)。”;

以下の“二変量”スプライン近似が提供されます。

x y | r c o e f 年代 r B k x x B r k y y

元のデータは,以下のとおりです。

x y j | z x y j 1 N x j 1 N y

このスプライン曲面をグリッド(以下に例を示します)上にプロットするために

十五= 0:.025:1;青年志愿= 0:.025:1;

以下を実行できます。

值=spcol (knotsx kx,十五)*系数* spcol (knotsy、肯塔基州、青年志愿)。”;网(十五、青年志愿值。”),视图(150年,50);

これにより以下の图が得られます。

相关数量へスプライン近似

これは有意义です。なぜなら,spcol (knotsx kx,十五)が行列であり,この行列の(i, q)番目のエントリが,節点シーケンスknotsxでは,次数kxの问番目のBスプラインの十五(i)における値Bq, kx(十五(i))に等しいためです。

行程spcol (knotsx kx,十五)Spcol(Knotsy,Ky,YV)帯状のため,次のように“大きな”XV.yv.の場合にfnvalを使用すると,効率が向上する場合がありますが,おそらくメモリ消費量が増加します。

value2 =…fnval (spmak (knotsx fnval (spmak (knotsy系数),青年志愿)。“),十五)。”;

これは実際に,以下のようにfnvalがテンソル积スプラインによって呼び出されたとき,内部で起こっていること。

value2 = fnval (spmak ({knotsx, knotsy},系数),{十五,青年志愿});

以下は,相対誤差の計算です。相対誤差とは,与えられたデータの大きさを基準とする,与えられたデータとそれらデータサイトでの近似の値との差です。

误差= z  -  spcol(knotsx,kx,x)* cofs * spcol(Knotsy,Ky,Y)。';disp(max(max(abs(abs(abs)))/ max(max(abs(z))))))

出力は0.0539で,おそらくそれほど大きいわけではありません。ただし,係数配列はサイズ8 6のみのみた。

disp(大小(系数)

サイズ15 11.のデータ配列を近似するには,次のようになります。

disp(大小(z))

次数の切り替え

ここで従うアプローチは,次のように”“偏っているように見えます。まず,与えられたデータzをyのベクトル値关键をを记述しているものと,后,近似近似曲のベクトルによって成されるをxのベクトル値关键词ををの値关键

逆の順序で考えた場合,つまり,zをxのベクトル値関数を記述するものと考え,その後,近似曲線のベクトル係数から構成される行列をyのベクトル値関数を記述するものとして扱うと,何が起こるでしょうか。

惊くかもしれませんが,最终近似は同じ(丸めを除く)にには数码実験行。

xの関数としての最小二乗近似

最初にスプライン曲線をデータに近似しますが,今回は,xを独立変数として使用するため,データ値になるのはz“行”です。それそれに応じ,z。'ではなく,zspap2に提供しなければなりません。

spb = spap2 (knotsx kx, x, z。');

これで,すべてすべて曲线(x; z(:,j))へのスプライン近似が得られ。特征,ステートメント

十五,valsb = fnval (spb)。';

は,行程valsb.を提供します。この行列のエントリvalsb (i, j)は,メッシュポイント(xv(i),y(j))における基于关键词f(xv(i),y(j))への近似とことができます。これこれ,をを用してvalsb.ををする结合に明らか。

网格(十五,y, valsb。”),视图(150年,50)

曲面曲面のようにに见える别の连の滑らか滑らか曲

これ,やはり,滑らかなプロットて,今回,曲确认ますこれて,曲ができ向,今回,曲が逆。

yの关节としてののへの近似

ここで2番目のステップで,実際の曲面を取得します。まず,係数を抽出します。

“系数”coefsx = fnbrk (spb);

その後,同じ次数肯塔基州および適切な同じ節点シーケンスknotsyのスプラインによって各系数号coefsx (r,:)を近似します。

SPB2 =Spap2(Knotsy,Ky,Y,Cofsx。');

ここでも,spbからの係数配列を転置する必要がある点に注意してください。これは,spap2が最終入力引数の列をデータ値として使用するためです。

それそれに応じ,得られた“曲”線の係数配列coefsbをを転置する必要必要がなくなりなり

COEFSB = FNBRK(SPB2,'COEFS');

二销量近近

coefsbは前出の系数配列系数と等しい(丸めを除く)と主張されています。以下はテストです。

max(max(abs(coefs - coefsb))))

出力は1.4433E-15.です。

説明は簡単です。sp = spap2(节,k, x, y)に含まれるスプラインsのの数cは,入力値yに“线路”に依存します。これこれ,cyが両方とも1行の行列の場合に,A = A.结,k,xのような行列が存在することを意味します。これにより,

c y 一个 k x

が,任意のデータyで成り立ちます。このステートメントはy“行列”でサイズがD行n列列などの场场でもり立ちり立ちり立ちこのり立ちり立ちり立ちはははは,各场は,各y(:,j)がrd内の点と見なされ,得られたスプラインは,それに応じてdベクトル値となります。したがって,係数配列cはサイズD行n列(n =长度(节)- k)となります。

特に,ステートメント

sp = spap2 (knotsy,肯塔基州,y, z);coefsy = fnbrk (sp,“系数”);

は,次を満たす行列coefsyを提供します。

系数 y z 一个 knotsy,肯塔基州,y

後続の計算

sp2 = spap2 (knotsx kx, x, coefsy。');系数= fnbrk (sp2,“系数”)。”;

によって係数配列系数が生成されます。この配列は2つの転置を考慮して次を満たします。

系数 z 一个 knotsy,肯塔基州,y 一个 Knotsx,kx,x 一个 Knotsx,kx,x z 一个 knotsy,肯塔基州,y

代替の2番目の计算で,最初最初に次を计算计算ましましまし

spb = spap2 (knotsx kx, x, z。');“系数”coefsx = fnbrk (spb);

そのため,coefsx= z”。一个Knotsx,kx,xです。后続の计算

spb2 = spap2 (knotsy,肯塔基州,y, coefsx。');“系数”coefsb = fnbrk (spb);

によって次が提供されます。

coefsb coefsx 一个 knotsy,肯塔基州,y 一个 Knotsx,kx,x z 一个 Knotsy,Ky, y

その结果,coefsb系数となります。

比较と拡张

2番目のアプローチは,spap2が呼び出されるたびに転置が実行され,ほかでは実行されないという点で,1番目のアプローチより対称的です。このアプローチは,任意の数の変数でグリッドデータに近似するために使用できます。

たとえば,“3”次元グリッド上の特定のが,サイズ[NX,NY,NZ]の3次元配列vに含まれ,v(i,j,k)が値F(x(i),y(j),z(k))を含む含む合,次から开始ます。

纽约系数=重塑(v, Nx *新西兰);

nj =j -kj(j =x,y,zのの合)と仮定して,次のようにます。

sp = spap2(knotsx,kx,x,cofs。');Coefs = Rehape(FNBRK(SP,'COEFS'),NY,NZ * NX);sp = spap2(Knotsy,Ky,Y,Cofs。');Coefs = Rehape(FNBRK(SP,'COEFS'),NZ,NX * NY);sp = spap2(knotsz,kz,z,cofs。');Coefs = Rehape(FNBRK(SP,'COEFS'),NX,NY * NZ);

详细については,动力の第17章または[C.De Boor,“高效的计算机操纵张量产品”,下载188bet金宝搏ACM Trans.Math.software 5.(1979), 173 - 182;勘误表,525]を参照してください。同じ参考文献により,最小二乗近似の使用について,ここでは特に特別なことがないことも明らかです。得られる近似が特定のデータに線形に依存する係数をもつ近似プロセス(スプライン内挿を含む)はいずれも,同じ方法で,グリッドデータへの多変量近似プロセスに拡張できます。

これはまさに,グリッドデータを近似する际,スプライン作物csapicsapespapispaps,およびspap2で使用されている方法です。また,テンソル積スプラインがグリッド上で評価されるときに,fnvalでも实用さます。