Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

fndir

関数の方向導関数

構文

df = fndir(f,y)

説明

df = fndir(f,y) は、(列) ベクトル y の方向における、f の関数 f の方向導関数の pp 型です。つまり、df は関数 Dyf(x):=limt0(f(x+ty)f(x))/t を記述します。

yn 列の行列で、f が d 値の場合、df の関数は prod(d)*n 値です。x におけるその値はサイズ [d,n] に再形成され、j 番目の "列" に、y の j 番目の列の方向における x での f の方向導関数をもちます。df に f の実際のサイズを明示的に反映させる場合は、代わりに次を使用します。

df = fnchg( fndir(f,y), 'dim',[fnbrk(f,'dim'),size(y,2)] );

fndirf の関数の pp 型に依存しているため、有理関数と st 型の関数のいずれでも機能しません。

たとえば、fm 変量 d ベクトル値関数を記述し、x がそのドメイン内の点である場合、スカラー値双一次多項式を記述するこの特定の pp 型 f などでは、

f = ppmak({0:1,0:1},[1 0;0 1]); x = [0;0];
[d,m] = fnbrk(f,'dim','var');
jacobian = reshape(fnval(fndir(f,eye(m)),x),d,m)

は、その点における関数のヤコビアン (この特定の "スカラー" 値関数の場合は、その勾配となり、原点で 0) です。

関連する例として、次のステートメントは規則的なメッシュにフランケ関数 (への適切な近似) の勾配をプロットします。

xx = linspace(-.1,1.1,13); yy = linspace(0,1,11);
[x,y] = ndgrid(xx,yy); z = franke(x,y);
pp2dir = fndir(csapi({xx,yy},z),eye(2));
grads = reshape(fnval(pp2dir,[x(:) y(:)].'),...
    [2,length(xx),length(yy)]);
quiver(x,y,squeeze(grads(1,:,:)),squeeze(grads(2,:,:)))

以下のプロットが得られます。

アルゴリズム

f の関数は pp 型に変換され、その多項式区分の方向導関数は 1 つのベクトル演算で正式に計算され、再び組み合わされて f の関数の方向導関数の pp 型を形成します。

参考

| | |