Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

gradient

スカラー関数の勾配ベクトル

説明

gradient(f,v) では、直交座標のベクトル v についてスカラー関数 f の勾配ベクトルを求めます。

v を指定しない場合、gradient(f) では、スカラー関数 f の勾配ベクトルを、f に含まれるすべてのシンボリック変数で構成されるベクトルに対して求めます。このベクトルに含まれる変数の順序は、symvar によって定義されます。

関数の勾配を求める

ベクトル v に対する関数 f の勾配は、v の各要素に対する f の 1 次偏導関数のベクトルです。

ベクトル [x, y, z] について f(x, y, z) の勾配ベクトルを求めます。勾配は、以下の成分をもつベクトルとなります。

syms x y z
f = 2*y*z*sin(x) + 3*x*sin(z)*cos(y);
gradient(f, [x, y, z])
ans =
 3*cos(y)*sin(z) + 2*y*z*cos(x)
 2*z*sin(x) - 3*x*sin(y)*sin(z)
 2*y*sin(x) + 3*x*cos(y)*cos(z)

関数の勾配のプロット

関数 f(x,y) の勾配を求め、矢印 (速度) 表示でプロットします。

ベクトル [x,y] について f(x,y) の勾配ベクトルを求めます。勾配は、以下の成分をもつベクトル g となります。

syms x y
f = -(sin(x) + sin(y))^2;
g = gradient(f,[x,y])
g = 

(-2cos(x)sin(x)+sin(y)-2cos(y)sin(x)+sin(y))[-2*cos(x)*(sin(x) + sin(y)); -2*cos(y)*(sin(x) + sin(y))]

ここで、これらの成分によって定義されるベクトル場をプロットします。MATLAB® には、このタスクのためにプロット関数quiverが用意されています。この関数ではシンボリック引数は受け入れられません。まず、g の成分の式にあるシンボリック変数を数値で置き換えます。次に quiver を使用します。

[X, Y] = meshgrid(-1:.1:1,-1:.1:1);
G1 = subs(g(1),[x y],{X,Y});
G2 = subs(g(2),[x y],{X,Y});
quiver(X,Y,G1,G2)

Figure contains an axes. The axes contains an object of type quiver.

入力引数

すべて折りたたむ

スカラー関数。シンボリック式またはシンボリック関数として指定します。

勾配ベクトルを求める対象のベクトル。シンボリック ベクトルとして指定します。既定では、vf 内のすべてのシンボリック変数により構成されるベクトルです。このベクトルに含まれる変数の順序は、symvar によって定義されます。

v がスカラーの場合は、gradient(f,v) = diff(f,v) となります。vsym([]) のような空のシンボリック オブジェクトの場合、gradient は、空のシンボリック オブジェクトを返します。

詳細

すべて折りたたむ

勾配ベクトル

ベクトル x に対する f(x) の勾配ベクトルは、f の 1 次偏導関数のベクトルです。

xf(x)=(fx1,fx2,,fxn)

R2011b で導入