gradient
シンボリックなスカラー場の勾配ベクトル
説明
例
関数の勾配を求める
ベクトル 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); v = [x,y,z]; gradient(f,v)
ans(x, y, z) =
関数の勾配のプロット
関数 f(x,y)
の勾配を求め、矢印 (速度) 表示でプロットします。
ベクトル [x,y]
について f(x,y)
の勾配ベクトルを求めます。勾配は、以下の成分をもつベクトル g
となります。
syms x y f = -(sin(x) + sin(y))^2; v = [x y]; g = gradient(f,v)
g =
ここで、これらの成分によって定義されるベクトル場をプロットします。MATLAB® には、このタスクのためにプロット関数quiver
が用意されています。この関数ではシンボリック引数は受け入れられません。まず、g
の成分の式にあるシンボリック変数を数値で置き換えます。次に quiver
を使用します。
[X,Y] = meshgrid(-1:.1:1,-1:.1:1); G1 = subs(g(1),v,{X,Y}); G2 = subs(g(2),v,{X,Y}); quiver(X,Y,G1,G2)
行列乗算の勾配
R2021b 以降
シンボリック行列変数を使用して、スカラーを返す行列乗算を定義します。
syms X Y [3 1] matrix A = Y.'*X
A =
についての行列乗算の勾配を求めます。
gX = gradient(A,X)
gX =
についての行列乗算の勾配を求めます。
gY = gradient(A,Y)
gY =
多変数関数の勾配
R2021b 以降
次の多変数関数の勾配を求めます。
これを、ベクトル について行います。
シンボリック行列変数を使用して、関数 とその勾配を、ベクトル で表現します。
syms x [1 3] matrix f = sin(x)*sin(x).'
f =
g = gradient(f,x)
g =
の要素で勾配を表現するには、symmatrix2sym
を使用して、結果をシンボリック スカラー変数のベクトルに変換します。
g = symmatrix2sym(g)
g =
また、 と をスカラー変数のシンボリック式に変換して、関数 gradient
の入力として使用することもできます。
g = gradient(symmatrix2sym(f),symmatrix2sym(x))
g =
勾配を含むベクトル微積分恒等式の求解
R2023a 以降
シンボリック行列変数 として 3 行 1 列のベクトルを作成します。 の既存の定義を維持したまま、 の関数であるスカラー場をシンボリック行列関数 として作成します。
syms X [3 1] matrix syms A(X) [1 1] matrix keepargs
について の勾配を求めます。関数 gradient
は未評価の式を返します。
gradA = gradient(A,X)
gradA(X) =
の勾配の発散が のラプラシアン、つまり に等しいことを示します。
divOfGradA = divergence(gradA,X)
divOfGradA(X) =
lapA = laplacian(A,X)
lapA(X) =
の勾配の回転がゼロ、つまり であることを示します。
curlOfGradA = curl(gradA,X)
curlOfGradA(X) =
入力引数
f
— シンボリックなスカラー場
シンボリック式 | シンボリック関数 | シンボリック行列変数 | シンボリック行列関数
シンボリックなスカラー場。シンボリック式、シンボリック関数、シンボリック行列変数、またはシンボリック行列関数として指定します。
f
がシンボリック スカラー変数の関数であり、f
がsym
型またはsymfun
型である場合、ベクトルv
はsym
型またはsymfun
型でなければならない。f
がシンボリック行列変数の関数であり、f
がsymmatrix
型またはsymfunmatrix
型である場合、ベクトルv
はsymmatrix
型またはsymfunmatrix
型でなければならない。
データ型: sym
| symfun
| symmatrix
| symfunmatrix
v
— 勾配を求める対象のベクトル
シンボリック スカラー変数のベクトル | シンボリック関数 | シンボリック行列変数 | シンボリック行列関数
勾配を求める対象のベクトル。シンボリック スカラー変数、シンボリック関数、シンボリック行列変数、またはシンボリック行列関数のベクトルとして指定します。
v
を指定せず、f
がシンボリック スカラー変数の関数である場合、既定では、gradient
はsymvar(f)
で定義された変数の順序で、f
のシンボリック スカラー変数からベクトルv
を構成する。v
がsymmatrix
型のシンボリック行列変数である場合、v
は1
行N
列またはN
行1
列のサイズでなければならない。v
がスカラーの場合、gradient(f,v) = diff(f,v)
となる。v
がsym([])
のような空のシンボリック オブジェクトの場合、gradient
は、空のシンボリック オブジェクトを返します。
行ベクトルまたは列ベクトル v
についてスカラー関数 f
の勾配を求める際、gradient
は常に列ベクトルとして出力を返すという規則を使用します。たとえば、f
が 1 行 1 列のスカラー、v
が 1 行 3 列の行ベクトルの場合、gradient(f,v)
は v
のそれぞれの要素について f
の導関数を求め、その結果を 3 行 1 列の列ベクトルとして返します。
データ型: sym
| symfun
| symmatrix
| symfunmatrix
制限
関数
gradient
はテンソル微分をサポートしません。勾配がベクトルではなくテンソル場または行列である場合、関数gradient
はエラーを返します。現在、Symbolic Math Toolbox™ は、シンボリック行列変数の関数
dot
または関数cross
と、symmatrix
型およびsymfunmatrix
型の関数をサポートしていません。ベクトル微積分の恒等式がドット積またはクロス積を含む場合、ツールボックスは代わりに他のサポートされている関数でそれらの恒等式を表示します。シンボリック行列の変数と関数をサポートするすべての関数のリストを表示するには、コマンドmethods symmatrix
とmethods symfunmatrix
を使用します。
詳細
勾配ベクトル
ベクトル に対する f(x) の勾配ベクトルは、f の 1 次偏導関数のベクトルです。
バージョン履歴
R2011b で導入R2023a: シンボリック行列関数の勾配の計算
関数 gradient
は、入力引数として、symfunmatrix
型のシンボリック行列関数を受け入れます。例については、勾配を含むベクトル微積分恒等式の求解を参照してください。
参考
curl
| divergence
| diff
| hessian
| jacobian
| laplacian
| potential
| quiver
| vectorPotential
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)