eval_cshep2d 2次元の3次シェパード補間の評価

## 呼び出し手順

            zp                                            = eval_cshep2d(xp, yp, tl_coef)
            [zp, dzpdx, dzpdy]                            = eval_cshep2d(xp, yp, tl_coef)
            [zp, dzpdx, dzpdy, d2zpdxx, d2zpdyy, d2zpdxy] = eval_cshep2d(xp, yp, tl_coef)

## 引数

xp, yp

  同じ大きさの実数ベクトル (または行列)

tl_coef

  3次シェパード補間関数を定義する (cshep2d型の) tlist scilab 構造体 (以下では `S`と呼びます)

zp

  v`xp` および `yp`と同じ大きさのベクトル(または行列)で, これらの点における補間`S`を評価します

dzpdx,dzpdy

  `xp` および `yp`と 同じ大きさのベクトル(または行列)で, これらの点における`S`の1階微分の評価値

d2zpdxx,d2zpdxy,d2zpdyy

  `xp` および `yp`と 同じ大きさのベクトル(または行列)で, これらの点における`S`の2階微分の評価値

## 説明

この関数は,cshep2dで計算される 3次シェパード補間関数の評価ルーチンで, 以下のようになります:

## 注意

補間式 S は C2 (2階連続微分可能)ですが, 十分遠い補間点(x,y)について0 により 拡張されます. これにより,補間点のかなり外側の領域に不連続が発生しますが, 実用上は問題とはなりません (一般に,補間点の外側での評価(すなわち補外)は かなり精度が劣化します).

## 例

    // cshep2dの例を参照
    // この例は補間点から離れた動作を示します...
    deff("z=f(x,y)","z = 1+ 50*(x.*(1-x).*y.*(1-y)).^2")
    x = linspace(0,1,10);
    [X,Y] = ndgrid(x,x);
    X = X(:); Y = Y(:); Z = f(X,Y);
    S = cshep2d([X Y Z]);
    // 正方 [0,1]x[0,1] の内部および外側の評価
    m = 40;
    xx = linspace(-1.5,0.5,m);
    [xp,yp] = ndgrid(xx,xx);
    zp = eval_cshep2d(xp,yp,S);
    // 小面を計算 (補外領域の色,
    // 補間領域に別の色を描画)
    [xf,yf,zf] = genfac3d(xx,xx,zp);
    color = 2*ones(1,size(zf,2));
    // 補間領域の小面に対応する添字
    ind=find( mean(xf,"r")>0 & mean(xf,"r")<1 & mean(yf,"r")>0 & mean(yf,"r")<1 );
    color(ind)=3;
    clf();
    plot3d(xf,yf,list(zf,color), flag=[2 6 4])
    legends(["extrapolation region","interpolation region"],[2 3],1)
    show_window()

## 参照

- cshep2d

## 履歴

5.4.0 以前は,入力引数の虚部は暗黙的に無視されていました.