Main Content

gradient

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

説明

g = gradient(f,v) では、直交座標のベクトル v についてスカラー関数 f の勾配ベクトルを求めます。入力 f はシンボリック スカラー変数の関数であり、ベクトル v にはスカラー微分変数を指定します。

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

gM = gradient(fM,vM) では、直交座標のベクトル vM についてスカラー関数 fM の勾配ベクトルを求めます。入力関数 fM はシンボリック行列変数の関数、ベクトル vM はサイズが 1N 列または N1 列のシンボリック行列変数です。

すべて折りたたむ

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

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

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

(3cos(y)sin(z)+2yzcos(x)2zsin(x)-3xsin(y)sin(z)2ysin(x)+3xcos(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))

ここで、これらの成分によって定義されるベクトル場をプロットします。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 object. The axes object contains an object of type quiver.

シンボリック行列変数を使用して、スカラーを返す行列乗算を定義します。

syms X Y [3 1] matrix
A = Y.'*X
A = YTX

X についての行列乗算の勾配を求めます。

gX = gradient(A,X)
gX = Y

Y についての行列乗算の勾配を求めます。

gY = gradient(A,Y)
gY = X

次の多変数関数の勾配を求めます。

f(x)=sin2(x1,1)+sin2(x1,2)+sin2(x1,3)

これを、ベクトル x=[x1,1,x1,2,x1,3] について行います。

シンボリック行列変数を使用して、関数 f とその勾配を、ベクトル x で表現します。

syms x [1 3] matrix
f = sin(x)*sin(x).'
f = sin(x)sin(x)T
g = gradient(f,x)
g = 2cos(x)I3sin(x)T

x の要素で勾配を示すには、symmatrix2sym を使用して、結果をシンボリック スカラー変数のベクトルに変換します。

g = symmatrix2sym(g)
g = 

(2cos(x1,1)sin(x1,1)2cos(x1,2)sin(x1,2)2cos(x1,3)sin(x1,3))

また、fx をスカラー変数のシンボリック式に変換して、関数 gradient の入力として使用することもできます。

g = gradient(symmatrix2sym(f),symmatrix2sym(x))
g = 

(2cos(x1,1)sin(x1,1)2cos(x1,2)sin(x1,2)2cos(x1,3)sin(x1,3))

入力引数

すべて折りたたむ

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

データ型: sym | symfun

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

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

データ型: sym

スカラー関数。シンボリック行列変数の関数であるシンボリック式として指定します。

データ型: symmatrix

勾配ベクトルを求める対象のベクトル。サイズが 1N 列または N1 列のシンボリック行列変数として指定します。

データ型: symmatrix

出力引数

すべて折りたたむ

勾配ベクトル。シンボリック スカラー変数の関数であるシンボリック式またはシンボリック関数として返されます。

データ型: sym | symfun

勾配ベクトル。シンボリック行列変数の関数であるシンボリック式として返されます。

データ型: symmatrix

詳細

すべて折りたたむ

勾配ベクトル

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

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

バージョン履歴

R2011b で導入

すべて展開する