最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
シンボリック式または関数の微分
関数 sin(x^2)
の微分を求めます。
syms f(x) f(x) = sin(x^2); df = diff(f,x)
df(x) = 2*x*cos(x^2)
x = 2
における微分値を求めます。結果を double に変換します。
df2 = df(2)
df2 = 4*cos(4)
double(df2)
ans = -2.6146
次の式の 1 次導関数を求めます。
syms x t diff(sin(x*t^2))
ans = t^2*cos(t^2*x)
微分の変数を指定していないため、diff
では symvar
で定義される既定の変数が使用されます。この式では、既定の変数は x
です。
symvar(sin(x*t^2),1)
ans = x
次に、以下の式の変数 t
について 1 次導関数を求めます。
diff(sin(x*t^2),t)
ans = 2*t*x*cos(t^2*x)
次の式の 4 次、5 次および 6 次導関数を求めます。
syms t d4 = diff(t^6,4) d5 = diff(t^6,5) d6 = diff(t^6,6)
d4 = 360*t^2 d5 = 720*t d6 = 720
以下の式の変数 y
について 2 次導関数を求めます。
syms x y diff(x*cos(x*y), y, 2)
ans = -x^3*cos(x*y)
式 x*y
の 2 次導関数を計算します。微分の変数を指定しない場合、diff
では変数 symvar
によって決まる変数が使用されます。この式では、symvar(x*y,1)
は x
を返します。したがって、diff
は x*y
の x
についての 2 次導関数を計算します。
syms x y diff(x*y, 2)
ans = 0
入れ子にされた diff
の呼び出しを使用し、微分の変数を指定しない場合、diff
は呼び出しごとに微分の変数を決定します。たとえば、次のように関数 diff
を 2 回呼び出して、式 x*y
を微分します。
diff(diff(x*y))
ans = 1
最初の diff
の呼び出しでは、x
について x*y
を微分し、y
を返します。2 回目の呼び出しでは、diff
は y
について y
を微分し、1
を返します。
したがって、diff(x*y, 2)
は diff(x*y, x, x)
と等価で、diff(diff(x*y))
は diff(x*y, x, y)
と等価です。
次の式を変数 x
と y
について微分します。
syms x y diff(x*sin(x*y), x, y)
ans = 2*x*cos(x*y) - x^2*y*sin(x*y)
また、すべての微分変数を与えることで、高階数混合微分を計算することもできます。
syms x y diff(x*sin(x*y), x, x, x, y)
ans = x^2*y^3*sin(x*y) - 6*x*y^2*cos(x*y) - 6*y*sin(x*y)
高階数混合微分を計算する場合、微分階数の指定に n
は使用しません。代わりに、微分の変数をすべて明示的に指定します。
パフォーマンスを向上させるため、diff
ではすべての混合微分が可換であると仮定されます。たとえば、次のようになります。
工学および科学のほとんどの問題は、この仮定で十分とされます。
多変数式または多変数関数 F
を微分の変数を指定せずに微分する場合、入れ子形式で呼び出す diff
と diff(F,n)
が返す結果が異なる場合があります。これは、入れ子形式の呼び出しでは、微分ステップごとに独自の微分変数が決定され、使用されるためです。diff(F,n)
のような呼び出しでは、微分の変数は symvar(F,1)
によって微分の変数が決定されると、すべての微分ステップでも使用されます。
abs
または sign
を含む式または関数を微分する場合、引数が実数であることを確認します。abs
や sign
の引数が複素数の場合、関数 diff
は形式上導関数を計算しますが、abs
や sign
は複素数について微分可能ではないため、一般的に結果は有効ではありません。
curl
| divergence
| functionalDerivative
| gradient
| hessian
| int
| jacobian
| laplacian
| symvar