D 
詳細とオプション
- Dは一変量関数の微分としても知られている.
- 記号 ∂ を使い,
pd
または\[PartialD]として下付き文字を付けて,以下のように微分を入力することができる. -
D[f,x] ∂xf D[f,{x,n}] ∂{x,n}f D[f,x,y] ∂x,yf D[f,{{x,y}}] ∂{{x,y}}f - \[InvisibleComma]あるいは
,
を使うとコンマが不可視にできる. - 偏微分D[f[x],x]は
で定義できる.高次の微分D[f[x,y],x,y]は再帰的に
等で定義できる. - 微分係数 n および m の次数は記号的なもので,正の整数であると仮定される.
- 記号的な f についての微分D[f[x],{x,n}]はDerivative[n][f][x]として表すことができる.
- ある関数 f についてDerivative[n][f][x]が未知であることもあるが,Nを適用して近似することは可能である. »
- Derivative[n][f][x]の値を加えることで新たな微分規則を加えることができる. »
- リストについては,D[{f1,f2,…},x]は再帰的に{D[f1,x],D[f2,x],…}に等しい. »
- D[f,{array}]は,事実上,array の各要素をDに縫い込む.
- D[f,{array,n}]はD[f,{array},{array},…]に等しい.ただし,{array}は n 回繰り返されるものとする.
- D[f,{array1},{array2},…]は,通常は,First[Outer[D,{f},array1,array2,…]]に等しい. »
- 一般的な配列の微分には以下がある.
-
D[f,{{x1,x2,…}}] 勾配 {D[f,x1],D[f,x2],…} D[f,{{x1,x2,…},2}] ヘッセ {{D[f,x1,x1],D[f,x1,x2],…},{D[f,x2,x1],D[f,x2,x2],…},…} D[{f1,f2,…},{{x1,x2,…}}] ヤコビ {{D[f1,x1],D[f1,x2],…},
{D[f2,x1],D[f2,x2],…},…} - f がスカラーで x={x1,…}のとき,x0={x01,…}における多変量テイラー(Taylor)級数は以下で与えられる.
-
- ただし,fi=D[f,{x,i}]/.{x1x01,…}はテンソル階数
の配列である. » - f と x が両方とも配列のとき,D[f,{x}]は最初に f の各要素に縫い込まれ,次に x の各要素に縫い込まれる.結果は次元がJoin[Dimensions[f],Dimensions[x]]の配列である. »
- VectorSymbol,MatrixSymbolあるいはArraySymbolを使って,変数あるいは関数の値が,ベクトル,行列,あるいは配列であることを示すことができる.
- Dは,範囲を区切られた変数や特定の演算子の構造を考慮しつつ積分や総和の演算子を形式的に微分する.
- 演算子の微分例
-

は積分によって範囲を区切られていない

は積分によって範囲を区切られている

は積分変換によって範囲を区切られていない

は積分変換によって範囲を区切られている
- 与えられた変数に明示的に依存しない式はどれもゼロ偏微分を持つとみなされる.
- NonConstants{u1,…}の設定は ui が x, y, 等のすべての変数に依存し,ゼロ偏微分を持たないように指定する. »
例題
すべて開く すべて閉じる例 (7)
D[x ^ n, x]D[Sin[x] ^ 10, {x, 4}]D[Cos[x], {x, n}]D[Sin[x y] / (x ^ 2 + y ^ 2), x, y]D[x f[x]f'[x], x]N[Zeta'[2]]Subscript[∂, x, x]ArcTan[x]スコープ (89)
基本的な用法 (12)
D[x ^ 2 Sin[a x], x]D[x ^ 2 Sin[a x], {x, 2}]D[Sin[x] + Cos[2x], {x, 2}] /. x -> 0f[x_] := x ^ 5 + 6x ^ 3D[f[x], x]f'[x]D[f[x], x] /. x -> 5f'[5]D[f[x], {x, 3}] /. x -> -1f'''[-1]D[x f'[x] + g[x] ^ 2, x]D[x ^ 2 E ^ (5y), x]D[x ^ 2 E ^ (5y), y]D[x ^ 2 E ^ (5y), x, y]D[x ^ 2 E ^ (5y), {x, 2}, {y, 3}]D[Subscript[x, 1] ^ 2 + Sin[Subscript[x, 1]Subscript[x, 2]], Subscript[x, 1]]D[Sin[f[x]] + f''[x], x]D[Sin[f[x]] + f''[x], f[x]]D[Sin[f[x]] + f''[x], f''[x]]D[{3t ^ 2, 4t, Sin[t]}, t]D[{{Cos[θ], -Sin[θ]}, {Sin[θ], Cos[θ]}}, θ]D[{x ^ n, {Exp[x], Log[x]}, {Sin[x], Cos[x], Tan[x]}}, x]D[x ^ 2 + 5y ^ 3, {{x, y}}]D[x ^ 2 + 5y ^ 3, {{x, y}, 2}]D[E ^ (-w)(x ^ 2 + 5y ^ 3 + z ^ 4), {{{x, y}, {z, w}}}]makeDerivativeTable[funs_List, x_] := Grid[Prepend[Transpose[{funs, D[funs, x]}], {HoldForm[f[x]], HoldForm[f'[x]]}], IconizedObject[«Grid options»]]//TraditionalFormmakeDerivativeTable[{c, x, x ^ n, a ^ x, E ^ x, Log[a, x]}, x]記号関数 (9)
D[f[x]f'[x], x]% /. f -> (Exp[# ^ 2]&)D[f[x] + g[x], x]D[f[x] g[x], x]Together[D[f[x] / g[x], x]]D[f[g[x]], x]D[f[x]g[x]h[x], x]Inactive微分を使って規則を述べる:
Inactivate[D[f[x] g[x]h[x], x], D] == D[f[x]g[x]h[x], x]D[f[x, y], x, y]% /. f -> (Exp[5#1]#2 ^ 3&)f = Sin[a#]&;df = D[f, a]結果は点 x における
の a についての微分を与える関数である:
df[x] == D[f[x], a]f = Function[{x}, Sin[a x]];D[f, x]f[x_] := x g[x] - h[x]D[f[x], x] /. x -> 5f'[5]D[InverseFunction[f][x], x]D[f[x] g[x], {x, n}]% /. {n -> 1}//ActivateD[f[g[x]], {x, n}]% /. {n -> 1}//Activate初等関数 (6)
D[a x ^ 4 + b x ^ 3 + c, x]D[(x - 7) / (2x ^ 2 + 3x + 11), x]//TogetherD[Sqrt[1 + x ^ 3], x]D[(1 + x ^ (3 / 5)) ^ (1 / 2) / (3x + 1) ^ 5, x]//TogetherD[Sin[x]Cos[x + y], x, y]D[ArcTan[x], x]D[Sec[x] / (1 + Tan[x]), x]//SimplifyD[Cos[3x + 5], {x, n}]D[(2x + 5)E ^ (x ^ 2), x]//TogetherD[Log[(x + 1) / (x - 5)], x]//TogetherD[x E ^ (x ^ x ^ x), x]//TogetherD[Sinh[x ^ 2], x]D[ArcCoth[x], {x, 2}]式のリストをきれいにフォーマットされた微分の表に変換する関数を作る:
makeDerivativeTable[funs_List, x_] := Grid[Prepend[Transpose[{funs, D[funs, x]}], {HoldForm[f[x]], HoldForm[f'[x]]}], IconizedObject[«Grid options»]]//TraditionalFormmakeDerivativeTable[{Sin[x], Cos[x], Tan[x], ArcSin[x], ArcCos[x], ArcTan[x]}, x]makeDerivativeTable[{Sinh[z], Cosh[z], Tanh[z], ArcSinh[z], ArcCosh[z], ArcTanh[z]}, z]特殊関数 (8)
D[Log[Gamma[x]], x]エアリー関数の微分は,AiryAiPrimeおよびAiryBiPrimeによって与えられる:
D[AiryAi[x], {x, 7}]D[(x + 1)AiryBi[Sin[x]], x]Zetaの微分は,原点において閉形の式を持つ:
der = D[Zeta[x], x]der /. x -> 0Derivative[1][Zeta][0]D[EllipticF[x, m], x]D[Erf[x ^ 2], x]D[BesselJ[n, x], x]D[GegenbauerC[n, m, x], x]D[Hypergeometric2F1[a, b, c, x], x]JacobiSNの微分:
D[JacobiSN[x, m] ^ 2, x]JacobiCDの微分:
D[JacobiCD[x, m], x]LogIntegralの微分:
D[LogIntegral[x], x]ExpIntegralEiの微分:
D[ExpIntegralEi[x], x]SinIntegralについての次数の n の微分:
D[SinIntegral[x], {x, n}]makeDerivativeTable[funs_List, x_] := Grid[Prepend[Transpose[{funs, D[funs, x]}], {HoldForm[f[x]], HoldForm[f'[x]]}], IconizedObject[«Grid options»]]//TraditionalFormmakeDerivativeTable[{Gamma[a, z], PolyGamma[n, z], Erf[z], FresnelS[z], EllipticK[z], AiryAiPrime[z], ChebyshevT[n, z], GegenbauerC[n, m, z], HermiteH[n, z]}, z]区分関数と一般化された関数 (8)
D[Max[x, x ^ 2], x]D[ConditionalExpression[x^(1/(3)), x > 0], x]D[PiecewiseExpand[Abs[x], Reals], x]D[PiecewiseExpand[Abs[x ^ 2 + x], x∈Reals], x]D[PiecewiseExpand[SquareWave[x / 2], -2 < x < 2], x]D[UnitStep[x], x]D[x UnitStep[x], x]D[UnitBox[x], x]D[UnitTriangle[x], x]D[HeavisideTheta[x], x]D[x HeavisideTheta[x - 2], x]D[x HeavisidePi[x], x]D[HeavisideLambda[x], x]RealAbsの微分:
D[RealAbs[x], x]RealSignの微分:
D[RealSign[x], x]D[Abs[x], x]D[Sign[x], x]Floorの微分:
D[Floor[x], x]Ceilingの微分:
D[Ceiling[x], x]D[If[x > 0, Sqrt[x], -Sqrt[-x]], x]D[Which[x > 0, Sin[x], x < 0, Cos[x], x == 0, (1/2), True, Indeterminate], x]陰的に定義された関数 (3)
陰関数の微分を計算するために,DはEqualに縫い込まれる:
eqn = y[x] ^ 2 + 3y[x] == x ^ 2 + 1;Solve[D[eqn, x], y'[x]]eqn = z[x, y] ^ 3 + 4z[x, y] == y Sin[x];Solve[D[eqn, y], D[z[x, y], y]]eqn = {z[x, y] ^ 3 + 4z[x, y], u[x, y]z[x, y]} == {y Sin[x], Cos[y]};Solve[D[eqn, y], {D[z[x, y], y], D[u[x, y], y]}]ベクトル値関数 (5)
D[{Cos[x], Sin[x], Tan[x]}, x]D[{Cos[x], Sin[x], Tan[x]}, {x, 2}]c[t_] := {t, t^2, t^3}D[c[t], t]c'[t]D[c[t], {t, 3}] /. t -> 0c'''[0]m = MatrixExp[2{{1, 1}, {0, 1}}t]D[m, t]D[m, {t, 4}]SparseArrayとして保存されてたベクトル値関数の微分:
v = SparseArray[{1 -> f[t], 8 -> g[t]}, {10}]D[v, t]%//NormalSymmetrizedArrayタイプの構造配列オブジェクトとして表された行列の微分:
m = SymmetrizedArray[{{1, 1} -> f[t], {1, 2} -> g[t], {2, 2} -> h[t]}, {2, 2}, Symmetric[{1, 2}]]D[m, t]%//Normalベクトル引数の関数 (6)
vars = Array[Subscript[x, #]&, 5];
f = (#.#)&[Differences[vars]]D[f, {vars}]MatrixForm[D[f, {vars, 2}]]vars = Array[Subscript[x, #]&, 5];
f = Drop[vars, 1] Differences[vars]MatrixForm[D[f, {vars}]]D[f, {vars, 2}]D[Det[{{x, y}, {u, v}}], {{{x, y}, {u, v}}}]SparseArrayとして保存されたベクトル値関数の勾配:
v = SparseArray[{1 -> f[Subscript[x, 1], Subscript[x, 5], Subscript[x, 10]], 8 -> g[Subscript[x, 1], Subscript[x, 7], Subscript[x, 10]]}, {10}]結果は非零の項だけを含む別のSparseArrayである:
D[v, {{Subscript[x, 1], Subscript[x, 2], Subscript[x, 3], Subscript[x, 4], Subscript[x, 5], Subscript[x, 6], Subscript[x, 7], Subscript[x, 8], Subscript[x, 9], Subscript[x, 10]}}]Normal[%]SparseArrayとして計算されたヘッシアン:
vars = Array[Subscript[x, #]&, 1000];
f = (#.#)&[Differences[vars]];D[f, {SparseArray[vars], 2}]勾配はSparseArrayとして計算することもできるが,その場合は事実上密行列になる:
D[f, {SparseArray[vars]}]SparseArrayとして計算されたヤコビアン:
vars = Array[Subscript[x, #]&, 1000];
f = Drop[vars, 1] Differences[vars];D[f, {SparseArray[vars]}]記号配列の引数と関数 (8)
D[MatrixSymbol["a", {m, n}][x].VectorSymbol["v", n][x], x]D[Inverse[MatrixSymbol["a", {n, n}][x]], x]D[TensorProduct[MatrixSymbol["a", {m, n}][x], ArraySymbol["b", {p, q, r}][x]], x]D[VectorSymbol["v", n].VectorSymbol["v", n], VectorSymbol["v", n]]D[Variance[VectorSymbol["v", n, Reals]], VectorSymbol["v", n, Reals]]D[Det[MatrixSymbol["a", {n, n}]], MatrixSymbol["a", {n, n}]]D[Norm[MatrixSymbol["a", {n, n}, Reals], "Frobenius"], MatrixSymbol["a", {n, n}, Reals]]D[ArrayDot[ArraySymbol["a", {p, q, r}], ArraySymbol["a", {p, q, r}], 3], ArraySymbol["a", {p, q, r}]]D[ArraySymbol["a", {p, q, r}], ArraySymbol["a", {p, q, r}]]D[LinearSolve[MatrixSymbol["a", {n, n}], VectorSymbol["v", n]], MatrixSymbol["a", {n, n}]]D[Total[ArraySymbol["a", {m, n, p, q, r}], 3], ArraySymbol["a", {m, n, p, q, r}]]D[ArraySymbol["f", {p, q, r}][MatrixSymbol["g", {m, n}][VectorSymbol["v", d]]], VectorSymbol["v", d]]積分と積分変換 (6)
D[Integrate[f[x], x], x]D[Integrate[f[t], {t, 1, x}], x]D[Integrate[f[t, a], {t, 1, x}], a]D[FourierTransform[f[t], t, ω], ω]D[InverseFourierTransform[f[ω], ω, t], t]D[FourierCosTransform[f[t], t, ω], ω]D[InverseFourierSinTransform[f[ω], ω, t], t]D[LaplaceTransform[Gamma[t], t, s] s]D[LaplaceTransform[Gamma[t], t, s], t]D[InverseLaplaceTransform[Gamma[s], s, t], t]D[Convolve[f[x], g[x], x, y], y]D[MellinConvolve[f[x], g[x], x, y], y]積分のInactive形式を微分して微積分の基本定理を得る:
Inactivate[Integrate[f[t], {t, a, x}], Integrate]D[%, x]D[Inactive[Integrate][f[x], {x, a[x], b[x]}], x]非アクティブなFourierTransformを微分する:
ft = Inactive[FourierTransform][Exp[(-x^2/2)], x, k]D[ft, k]Activate[ft]D[%, k] == Activate[%%]総和と総和変換 (4)
Sum[Gamma[n x], {n, 1, k}]D[%, x]D[Sum[Gamma[n x], {n, 1, k}], n]D[DiscreteConvolve[f[n], g[n], n, z], z]総和のInactiveな形を微分する:
Inactive[Sum][f[k, y], {k, a, b}]D[%, y]Inactive[ZTransform][f[k], k, z]D[%, z]非アクティブなGeneratingFunctionを微分する:
gf = Inactive[GeneratingFunction][E ^ (-n), n, z]D[gf, z]Activate[gf]D[%, z] == Activate[%%]//Simplify指標付き微分 (9)
KroneckerDelta因子を含む指標付き変数について微分する:
D[Sum[f[x[i]], {i, 1, n}], x[j]]Inactiveを使って総和の展開を阻止する:
D[Inactive[Sum][f[x[i]], {i, 0, 3}], x[2]]Activate[%]総和因子は,名前が曖昧になるのを防ぐために,必要であれば名前が変えられる:
D[ArcTan[Sum[f[x[i], i], {i, 1, n}]], x[i]]D[Inactive[Table][x[i] ^ 2, {i, 3}], x[2]]Activate[%]D[Inactive[Table][Sin[α[i] ^ 2], {i, 10}], {α[j], 2}]Activate[% /. j -> 4]D[Inactive[Sum][f[Indexed[x, {α}]]g[Indexed[x, {α}]], {α, 5}], Indexed[x, {γ}]]D[Inactive[Table][f[Subscript[x, α]]g[Subscript[x, α]], {α, 5}], Subscript[x, γ]]D[Sin[x[1]] + Cos[x[3]], {Inactive[Table][x[i], {i, 3}]}]Activate[%]ダミー変数を導入し,指標付き変数の記号の表について2回微分する:
D[f[x[α]], {Inactive[Table][x[β], {β, n}], 2}]Activate[% /. {n -> 3, α -> 2}]vars = Inactive[Table][x[j], {j, 4}]D[Inactive[Table][f[x[i]], {i, n}], {vars}]ベクトルのそれ自身についてのベクトル微分は恒等行列を与える:
D[vars, {vars}]Activate[%]微分で定義される関数 (5)
f'[x_] := fp[x]D[f[x ^ 3], x]f'[a] = f0D[f[x]^2, x] /. x -> ag''[x] = gpp[x]D[g[x] ^ 3 / 4, {x, 2}]f'[5] = 1;g[3] = 5;g'[3] = 4;D[f[g[x]], x] /. x -> 3Derivativeで偏微分を定義する:
Derivative[0, 2][f][u_, v_] := fnp[u, v]D[f[a, x ^ 2], {x, 2}]オプション (1)
アプリケーション (47)
微分の幾何学 (5)
f[x_] := Sin[3x]tangent[h_] := f[Pi] + h f'[Pi]基本の点 π からの変位 h が小さい場合,接線は f についての素晴らしい近似を与える:
TableForm[Table[{h, tangent[h], f[Pi + h]}, {h, 0.01`4, 0.02`4, .0025`4}], TableHeadings -> {{}, {h, HoldForm@tangent[h], HoldForm@f[π + h]}}]狭いプロット範囲については,接線と f は視覚的には区別できない:
Row[{Plot[{f[x], tangent[x - Pi]}, {x, Pi - 1, Pi + 1}], Plot[{f[x], tangent[x - Pi]}, {x, Pi - 0.01, Pi + 0.01}]}]微分は{x,f[x]}と{x+h,f[x+h]}を接続する割線の勾配の極限を与える:
f[x_] := x ^ 3 + 2x + 2f'[x] == Limit[(f[x + h] - f[x]/h), h -> 0]dropdowns[h_] := Line[{{1, f[1]}, {1 + h, f[1]}, {1 + h, f[1 + h]}}]
points[h_] := {PointSize[Large], Point[{1, f[1]}], Point[{1 + h, f[1 + h]}]}
labels[h_] := {Text[Style["TraditionalForm(1, f(1))", 16], {1, f[1]}, {1, -1.5}], Text[Style["TraditionalForm(1 + h, f(1 + h))", 16], {1 + h, f[1 + h]}, {-1.1, 1}]}
title[h_] := StringForm["Derivative[1][f](1) == `1`, (f(1 + h) - f(1)/(1 + h) - 1) == `2`", ToBoxes[f'[1]], ToBoxes[(f[1 + h] - f[1]) / h]]Manipulate[Plot[{f[x], f[1] + (x - 1)(f[1 + h] - f[1]/h)}, {x, 0, 3}, PlotRange -> {{0, 3}, {0, 20}}, ImageSize -> Medium, LabelStyle -> Larger, Epilog -> {dropdowns[h], points[h], labels[h]}, PlotLabel -> title[h]], {{h, 1}, 0.000001, 1, Appearance -> "Labeled"}, SaveDefinitions -> True]f[x_] := x ^ 3 + 3x ^ 2 + 5x - 13tangent[a_][x_] := f'[a](x - a) + f[a]tangent[4][x]//SimplifyPlot[{f[x], tangent[4][x]}, {x, 0, 8}, Epilog -> {StandardOrange, PointSize[Large], Point[{4, f[4]}]}]f[x_] := +x ^ 2 - 3.5x + 2normal[a_][x_] := (a - x) / f'[a] + f[a]normal[1][x]//SimplifyPlot[{f[x], normal[1][x]}, {x, -1, 4}, AspectRatio -> 1, PlotRange -> {-3, 2}, Epilog -> {StandardOrange, PointSize[Large], Point[{1, f[1]}]}]f[x_] := x ^ 2 + 5tangent[a_][x_] := f'[a](x - a) + f[a]sol = Solve[tangent[a][0] == -4, a]Plot[{f[x], tangent[a /. sol][x]}, {x, -6, 6}, PlotStyle -> {StandardBlue, {StandardOrange}}, PlotRange -> {-20, 40}, Epilog -> {StandardOrange, PointSize[Large], Point[{{-3, 14}, {3, 14}}]}]関数の特徴付け (5)
f[x_] := x ^ 3 + 3x ^ 2 - 3x - 1Plot[f[x], {x, -4, 2}]Solve[D[f[x], x] == 0, x]f[x_] := Piecewise[{{2Sin[x] ^ 2Cos[x], -Pi ≤ x ≤ Pi}}, Undefined]sol = Solve[D[f[x], x] == 0, x]二次微分検定によると,これらすべてが極大値または極小値である:
FullSimplify[f''[x] /. sol]Plot[f[x], {x, -Pi, Pi}, Epilog -> {PointSize[Large], Point[{x, f[x]} /. sol]}]ある区間における平均値の定理を満足する c のすべての値を求める:
f[x_] := x ^ 3 - 3x{a, b} = {-2, 2};sol = Solve[(f[b] - f[a]/b - a) == f'[c] && a < c < b, c]secant[x_] := (f[b] - f[a])(x - a) / (b - a) + f[a]{tangent1[x_], tangent2[x_]} = (f[c] + f'[c](x - c)) /. sol;Plot[{f[x], secant[x], tangent1[x], tangent2[x]}, {x, -2.5, 2.5}, PlotLegends -> "Expressions", Epilog -> {StandardOrange, PointSize[Large], Point[{{a, f[a]}, {b, f[b]}}], StandardBlue, Point[{c, f[c]} /. sol]}]f[x_] := x ^ 2 / (x - 1)sol = Solve[D[f[x], x] == 0, x]fi = Reduce[D[f[x], x] > 0]fd = Reduce[D[f[x], x] < 0]Plot[{Piecewise[{{f[x], fi}}, Undefined], Piecewise[{{f[x], fd}}, Undefined]}, {x, -3, 5}, Epilog -> {PointSize[Large], Point[{x, f[x]} /. sol]}, PlotLegends -> LineLegend[{"Increasing", "Decreasing"}]]f[x_] := (x - 1) / (x ^ 2 + 1)sol = Solve[D[f[x], {x, 2}] == 0, x]cp = Reduce[D[f[x], {x, 2}] > 0]cn = Reduce[D[f[x], {x, 2}] < 0]Plot[{Piecewise[{{f[x], cp}}, Undefined], Piecewise[{{f[x], cn}}, Undefined]}, {x, -3, 6}, Epilog -> {PointSize[Large], Point[{x, f[x]} /. sol]}, PlotLegends -> LineLegend[{"Concave Up", "Concave Down"}]]積分との関係 (2)
多変量微分とベクトル微分 (6)
f[x_, y_] := x ^ 4 + y ^ 4 - 20x ^ 2 - 10x y - 25sol = NSolve[D[f[x, y], {{x, y}}] == {0, 0}, {x, y}, Reals]Sign@D[f[x, y], {x, 2}] /. solSign@Det[D[f[x, y], {{x, y}, 2}]] /. sol二次微分検定から,最初の2点(プロット中の赤と青)は極小値で,3番目の点(プロット中の緑)は鞍点である:
Show[Plot3D[f[x, y], {x, -5, 5}, {y, -5, 5}, PlotRange -> 200, ClippingStyle -> None, Mesh -> {5, 0}, PlotStyle -> Opacity[.65], BoxRatios -> {1, 1, 3 / 4}, ViewPoint -> {1.2, -2.5, 0}], Graphics3D[{PointSize[.04], Riffle[{StandardRed, StandardBlue, StandardGreen}, Point[{x, y, f[x, y]}] /. sol]}]]Helix[r_, c_, t_] := {r Cos[t], r Sin[t], c t}ParametricPlot3D[Helix[1, 1 / 11, t], {t, 0, 30}, Boxed -> False, Axes -> False]Curvature[expr_, t_] := Norm[Cross[D[expr, t], D[expr, {t, 2}]]] / Norm[D[expr, t]] ^ 3FullSimplify[Curvature[Helix[r, c, t], t], 0 < t < Pi / 2 && r > 0 && c > 0]ArcCurvatureを使って同じ結果を得る:
FullSimplify[ArcCurvature[Helix[r, c, t], t], 0 < t < Pi / 2 && r > 0 && c > 0]{f0, f1, f2, f3} = Table[D[E^x, {x, i}] /. x -> 0, {i, 0, 3}];
(f0(x - 0)^0/0!) + (f1(x - 0)/1!) + (f2 (x - 0)^2/2!) + (f3(x - 0)^3/3!)𝕏 = {x, y, z};
𝕏0 = {0, 0, 0};
{f0, f1, f2} = Table[D[E^x - y + z, {𝕏, i}] /. {x -> 0, y -> 0, z -> 0}, {i, 0, 2}];
(f0/0!) + (f1.(𝕏 - 𝕏0)/1!) + (f2.(𝕏 - 𝕏0).(𝕏 - 𝕏0)/2!)//ExpandmultTaylorSeries[f_, x_, x0_, n_] := Underoverscript[∑, i = 0, n]((D[f, {x, i}] /. Thread[x -> x0]).Sequence@@Table[x - x0, i]/i!)multTaylorSeries[E ^ x, {x}, {0}, 3]//ExpandmultTaylorSeries[E ^ (x - y + z), {x, y, z}, {0, 0, 0}, 2]//ExpandGrad[f[x, y], {x, y}] == {D[f[x, y], x], D[f[x, y], y]}f[x_, y_] := x ^ 2 / 4 - 3x ^ 2y - 2x y + y ^ 4 / 4grad[x_, y_] = {D[f[x, y], x], D[f[x, y], y]}unitGrad[x_, y_] := grad[x, y] / Sqrt[grad[x, y].grad[x, y]]Manipulate[ContourPlot[f[x, y], {x, -2, 2}, {y, -2, 2}, Epilog -> Arrow[{p, p + unitGrad@@p}], PerformanceGoal -> "Quality", Contours -> 20, PlotRange -> {{-2, 2}, {-2, 2}, {-30, 30}}, ImageSize -> Medium], {{p, {.01, -0.1}}, Locator}, SaveDefinitions -> True]平面上のベクトル場の回転は,その成分の微分を引くことで計算できる:
Curl[{f[x, y], g[x, y]}, {x, y}] == D[g[x, y], x] - D[f[x, y], y]v[x_, y_] := {x ^ 2y, x + y}curl[{x_, y_}] = D[x + y, x] - D[x ^ 2y, y]2D回転をある点におけるベクトル場の「回転」の展開図として可視化する.赤と緑はそれぞれ時計回りと反時計回りの回転と回転の大きさに比例した半径を表す:
Manipulate[VectorPlot[v[x, y], {x, -2, 2}, {y, -2, 2}, ImageSize -> Medium, Epilog -> {If[curl[s] > 0, Green, Red], Thick, Dashed, Point[s], Circle[s, Abs[curl[s] / 3]]}], {{s, {0, 0}}, {-2, -2}, {2, 2}}, SaveDefinitions -> True]ベクトル場の発散は,その成分の微分の総和を求めることで計算できる:
Div[{f[x, y], g[x, y]}, {x, y}] == D[f[x, y], x] + D[g[x, y], y]v[x_, y_] := {x ^ 2, x ^ 3 - y ^ 2 / 2}div[{x_, y_}] = D[x ^ 2, x] + D[x ^ 3 - y ^ 2 / 2, y]2Dの発散を,ある点におけるベクトル場のフローの展開図として可視化する.赤と緑はそれぞれ出て行く流れと入ってくる流れを表す.半径はフローの大きさに比例する:
Manipulate[Show[VectorPlot[v[x, y], {x, 0, 4}, {y, 0, 4}, ImageSize -> Medium], Graphics[{If[div[s] > 0, Green, Red], Thick, Point[s], Circle[s, Abs[div[s] / 10]]}]], {{s, {2, 2}}, {0, 0}, {4, 4}}, SaveDefinitions -> True]微分方程式 (6)
eqn = E ^ (1 - x + 1 / y[x]) / (-1 + x) + Subscript[, 1] + ExpIntegralEi[1 - x + 1 / y[x]] == 0;y'[x] == Apart[(y'[x] /. Solve[D[eqn, x], y'[x]][[1]])]Dを使って常微分方程式と偏微分方程式を指定する:
ode = D[y[x], x] - Sqrt[(y[x] / x)] == y[x] / x;pde = x D[g[x, y], y] + y D[g[x, y], x] == -3x y g[x, y]これらはDSolveを使って解くことができる:
DSolve[ode, y, x]DSolve[{pde, g[x, 0] == E ^ (-x ^ 2)}, g, {x, y}]weqn = D[u[x, y, t], {t, 2}] == Laplacian[u[x, y, t], {x, y}];ic = {u[x, y, 0] == (1 / 10)(x - x ^ 2)(2y - y ^ 2), D[u[x, y, t], t] == 0 /. t -> 0};bc = {u[x, 0, t] == 0, u[0, y, t] == 0, u[1, y, t] == 0, u[x, 2, t] == 0};DSolveを使ってこの系を解く:
(sol = FullSimplify[u[x, y, t] /. DSolve[{weqn, ic, bc}, u, {x, y, t}][[1]], K[1]∈PositiveIntegers && K[3]∈PositiveIntegers])//TraditionalFormInactive総和からいくつかの項を抽出する:
h[x_, y_, t_] = sol /. {∞ -> 3}//ActivateAnimate[Plot3D[h[x, y, t], {x, 0, 1}, {y, 0, 2}, Ticks -> None, PlotRange -> {-1 / 36, 1 / 36}, MeshStyle -> Red, PerformanceGoal -> "Quality"], {t, 0, 8}, SaveDefinitions -> True, DefaultDuration -> 12]Dを使ってラプラス演算子を指定する:
ℒ = D[u[x, y], {x, 2}] + D[u[x, y], {y, 2}];ℬ = DirichletCondition[u[x, y] == 0, True];単位円板上の演算子の小さい方から4つの固有値と固有関数を求める:
{vals, funs} = DEigensystem[{ℒ, ℬ}, u[x, y], {x, y}∈Disk[], 4];vals//TraditionalFormContourPlot[#, {x, y}∈Disk[]]& /@ N[funs]Dを使って積分微分方程式を指定する:
eqn = D[y[x], x] == 1 + Sin[a x] - Subsuperscript[∫, 0, x]y[t]ⅆt;sol1 = DSolve[eqn, y[x], x]sol2 = DSolve[{eqn, y[0] == -1}, y[x], x]Plot[Evaluate[Table[y[x] /. sol2[[1]], {a, -3, 3, 0.9}]], {x, 0, 5}]f[x_] := a x ^ 2 + b x + csol = Solve[ForAll[x, Exists[f[x], D[f[x], {x, 2}] + D[f[x], x] - 2f[x] == x ^ 2]], {a, b, c}, Reals]f[x] /. sol[[1]]変化率 (5)
h[t_] := 25t - 4.905t ^ 2v[t_] = D[h[t], t]a[t_] = D[h[t], {t, 2}]sol = Solve[v[t] == 0, t]h[t] /. sol[[1]]Plot[{h[t], v[t], a[t]}, {t, 0, 5.1}, PlotLegends -> "Expressions"]a[t_] := π r[t] ^ 2roc = a'[t]半径が5m/s の割合で増大する場合の,半径 10 m における面積の変化率を求める:
roc /. {r'[t] -> Quantity[5, "Meters" / "Seconds"], r[t] -> Quantity[10, "Meters"]}x[t_] := t ^ 5 - 11t + Sin[3t] / 12粒子の速度,加速度,ジャーク,スナップ(振動),クラックル,ポップを計算する:
{velocity, acceleration, jerk, snap, crackle, pop} = Table[D[x[t], {t, i}], {i, 6}];Plot[Evaluate[{x[t], velocity, acceleration, jerk, snap, crackle, pop}], {t, 0, 3}, Exclusions -> None, PlotLegends -> {"position", "velocity", "acceleration", "jerk", "snap", "crackle", "pop"}, PlotRange -> All]eqn = 1 / r[t] == 1 / r1[t] + 1 / r2[t]rT = Solve[eqn /. {r1[t] -> 25, r2[t] -> 10}, r[t]]roc = Solve[D[eqn, t], r'[t]]roc /. {r1[t] -> 25, r1'[t] -> 5, r2[t] -> 10, r2'[t] -> -5} /. First[rT]v[l_] := l ^ 3sa[l_] := 6l ^ 2立方体の体積の表面積に対する変化率を連鎖法則を使って計算する:
D[v[l], l] / D[sa[l], l]% /. Last[Solve[sa == sa[l], l]]隠関数 (3)
{x0, y[x0]} = {1, Sqrt[2]};sol = Solve[D[2y[x] ^ 2 == 5x ^ 4 - x ^ 2, x], y'[x]]slope = y'[x] /. sol /. x -> x0tangent[x_] = slope (x - x0) + y[x0]Show[Plot[tangent[x], {x, -3, 3}, PlotStyle -> Red, PlotRange -> {-10, 10}], ContourPlot[2y ^ 2 == 5x ^ 4 - x ^ 2, {x, -3, 3}, {y, -15, 15}], Graphics[{PointSize[Large], Red, Point[{x0, y[x0]}]}]]eqn = x ^ 2y[x] ^ 2 + x y[x] == 2sol = Solve[D[eqn, x], y'[x]]Solve[{(y'[x] /. sol[[1]]) == -1, eqn}, {x, y[x]}, Reals]eqn = x[t] ^ 3 + y[t] ^ 2 - 1 / z[t] == 10dz = Solve[D[eqn, t], z'[t]]dz /. {x[t] -> 4, x'[t] -> -2, y[t] -> 7, y'[t] -> 13, z[t] -> 1}最適化 (3)
片側が納屋に面している2000フィートの矩形フェンスの最大面積を求める:
a[l_, w_] := l wp[l_, w_] := 2l + wsol = Solve[p[l, w] == 2000, l]area = a[l, w] /. First[sol]max = Solve[D[area, w] == 0, w]a[l, w] /. First[sol] /. First[max]D[area, {w, 2}] /. First[max]sol = Solve[p[l, w] == 2000, w]max = Solve[D[a[l, w] /. First[sol], l] == 0, l]a[l, w] /. First[sol] /. First[max]Manipulate[Column[{Show[Plot[Piecewise[{{l, -w / 2 ≤ x ≤ w / 2}}, Undefined] /. w -> 2000 - 2l, {x, -1000, 1000}, PlotStyle -> Red, PlotRange -> {{-1100, 1100}, {0, 1000}}, ImageSize -> 240], Graphics[{Red, Line[{{-w / 2, 0}, {-w / 2, l}}] /. w -> 2000 - 2l, Line[{{w / 2, 0}, {w / 2, l}}] /. w -> 2000 - 2l}]], Row[{"Length = ", NumberForm[l, {4, 0}], " ft."}],
Row[{"Width = ", NumberForm[2000 - 2l, {4, 0}], " ft."}],
Row[{"Area = ", NumberForm[2000l - 2l^2, {6, 0}], " ft."}]}, Alignment -> Center], {{l, 500, "Length"}, 0, 1000, Appearance -> "Labeled"}, SaveDefinitions -> True]eqn = y ^ 2 == 2xd[x_, y_] := Sqrt[(x - 1) ^ 2 + (y - 5) ^ 2]sol = Solve[eqn, x]dis = d[x, y] /. First[sol]minpoint = Solve[{eqn, D[dis, y] == 0}, {x, y}, Reals]D[dis, {y, 2}] /. First[minpoint]//NManipulate[Column[{ParametricPlot[{t ^ 2 / 2, t}, {t, -3.5, 3.5}, PlotStyle -> Red, ImageSize -> Small, PlotRange -> {{-1, 6.5}, {-4, 6}}, Epilog -> {PointSize[Large], Point[{1, 5}], Line[{{t ^ 2 / 2, t}, {1, 5}}], Red, Point[{t ^ 2 / 2, t}], Gray, Point[{x, y}] /. First[minpoint]}], {x, y} == NumberForm[N[{t ^ 2 / 2, t}], {3, 2}], "Distance" == NumberForm[N[Sqrt[(t ^ 2 / 2 - 1) ^ 2 + (t - 5) ^ 2]], {4, 2}]}, Alignment -> Center], {{t, 0, y}, -3.5, 3.5, ImageSize -> Small}, SaveDefinitions -> True]//TraditionalForm2リットルまでの水が入る蓋のない円筒形の缶で材料が最小のものを求める:
sa[r_, h_] := Pi r(r + 2h)v[r_, h_] := Pi r ^ 2hhr = Solve[v[r, h] == 2000, h]sa[r_] = sa[r, h] /. First[hr]min = Solve[D[sa[r], r] == 0, r, Reals]//ND[sa[r], {r, 2}] /. First[min]{r, h /. First[hr], sa[r]} /. First[min]Manipulate[Column[{Show[ParametricPlot3D[{r Cos[s], r Sin[s], h}, {s, 0, 2Pi}, {h, 0, 2000 / (Pi r ^ 2)}, PlotRange -> {{-12, 12}, {-12, 12}, {0, 50}}, Mesh -> None, ImageSize -> Small], ParametricPlot3D[{r t Cos[s], r t Sin[s], 0}, {s, 0, 2Pi}, {t, 0, 1}, Mesh -> None]], "Radius" == NumberForm[N[r], {5, 2}], "Height" == NumberForm[N[2000 / Pi / r ^ 2], {5, 2}], "Surface Area" == NumberForm[N[Pi r(r + 4000 / (Pi r ^ 2))], {5, 2}]}, Alignment -> Center], {{r, 4, "Radius"}, 3.5, 12, Appearance -> "Labeled", ImageSize -> Small}]//TraditionalFormロピタルの定理 (3)
f[x_] := Sin[4x]g[x_] := Sin[2x]Limit[f[x], x -> 0] == Limit[g[x], x -> 0] == 0
近くの区間では
と
の両方が定義されていて
なので,ロピタル(L'Hôpital)の規則を使うことができる:
Resolve[Subscript[∀, x, (-1/10) < x < (1/10)](-∞ < f'[x] < ∞ && g'[x] > 0)]事実,
と
は連続的で
なので,
は自明に計算することができる:
f'[0] / g'[0]Limitを使って結果を確かめる:
Limit[(f[x]/g[x]), x -> 0]Plot[{f[x], g[x], f[x] / g[x]}, {x, -1 / 3, 1 / 3}, PlotLabels -> Automatic]f[x_] := x + x ^ 2g[x_] := 5x ^ 2 - 4x - 5Limit[f[x], x -> ∞] == Limit[g[x], x -> ∞] == ∞すべての
について
と
の両方が定義され,
なので,ロピタルの規則を使うことができる:
Resolve[Subscript[∀, x, 10 < x](-∞ < f'[x] < ∞ && g'[x] > 0)]Limit[f'[x], x -> ∞] == Limit[g'[x], x -> ∞] == ∞{f''[x], g''[x]}(f''[x]/g''[x])Limitを使って結果を可視化する:
Limit[f[x] / g[x], x -> ∞] == Limit[f'[x] / g'[x], x -> ∞] == (1/5)f[x_] := x ^ 2g[x_] := 2Coth[x^2]Limit[f[x], x -> 0] == 0Limit[g[x], x -> 0] == ∞g'[0]しかし,
は存在し,すべての
について正でありすべての
について負である:
Resolve[Subscript[∀, x, x < 0]g'[x] > 0 && Subscript[∀, x, x > 0]g'[x] < 0]
は明らかにすべての実数
について定義されているので,ロピタルの規則は次の形で適用することができる:
Limit[f[x]g[x], x -> 0] == Limit[f'[x] / (-g'[x] / g[x] ^ 2), x -> 0]f'[x] / (-g'[x] / g[x] ^ 2)% /. x -> 0% == Limit[%%, x -> 0]記号配列微分 (6)
u = RandomInteger[{-10 ^ 6, 10 ^ 6}, {7}] / 10 ^ 6;
eps = RandomInteger[{-10 ^ 6, 10 ^ 6}, {7}] / 10 ^ 16;t0 = Variance[u];N[Variance[u + eps] - t0, 20]v = VectorSymbol["v", 7, Reals];
d1 = D[Variance[v], v]t1 = t0 + (d1 /. v -> u).eps;N[Variance[u + eps] - t1, 20]d2 = D[d1, v]t2 = t1 + 1 / 2Normal[d2].eps.eps;第2導関数は
には依存しないので,二次近似は厳密値に等しい:
Variance[u + eps] - t2a = RandomInteger[{-10 ^ 6, 10 ^ 6}, {7, 7}] / 10 ^ 6;
eps = RandomInteger[{-10 ^ 6, 10 ^ 6}, {7, 7}] / 10 ^ 16;t0 = Det[a];N[Det[a + eps] - t0, 20]m = MatrixSymbol["m", {7, 7}];
d1 = D[Det[m], m]t1 = t0 + ArrayDot[d1 /. m -> a, eps, 2];N[Det[a + eps] - t1, 20]d2 = D[d1, m]t2 = t1 + 1 / 2ArrayDot[ArrayDot[Normal[d2 /. m -> a], eps, 2], eps, 2];N[Det[a + eps] - t2, 20]ペア
のリストとして与えられたデータ
についての最小二乗解を導出する:
m = MatrixSymbol["m", {n, 2}]dev = m.{-a, 1} - bsquareDeviations = dev.deveqna = D[squareDeviations, a] == 0eqnb = D[squareDeviations, b] == 0n = 200;data = Table[{x, 3x + 20 + RandomReal[{-15, 15}]}, {x, 1, n}];a x + b /. Solve[Normal[{eqna, eqnb}] /. m -> data, {a, b}][[1]]Show[{ListPlot[data], Plot[%, {x, 0, 200}, PlotStyle -> Red]}]最尤法を使って与えられたデータの最良フィットを与えるGammaDistributionパラメータを求める:
SeedRandom[1234];data = RandomVariate[GammaDistribution[1, 2], 1000];f = Refine[PDF[GammaDistribution[α, β]][x], x > 0]v = VectorSymbol["v", 1000];l = Total[Log[f /. x -> v]]dl = D[l, {{α, β}}]eqns = Thread[Expand[Normal[dl /. v -> data]] == 0]NSolve[eqns, {α, β}, MaxRoots -> 1]Show[{Histogram[data, Automatic, "PDF"], Plot[PDF[GammaDistribution[α, β] /. %[[1]]][x], {x, 0, 9}]}]EstimatedDistributionを使って計算した結果と比較する:
EstimatedDistribution[data, GammaDistribution[α, β]]期待収益
,標準偏差
の場合のポートフォリオの最適化問題の最適条件を求める:
x = VectorSymbol["x", n];
μ = VectorSymbol["μ", n];
Σ = MatrixSymbol["Σ", {n, n}];
Subscript[μ, p] = μ.x;
Subscript[σ, p] = Sqrt[x.Σ.x];目標は,資産重みのベクトル
がTotal[x]=1を満たすときに,
を最大化することである.製薬条件を使って,制約のないベクトル変数
が
の最初の
個の座標で構成される
を表すことができる:
A = MatrixSymbol["A", {n, n - 1}];
y = VectorSymbol["y", n - 1];
b = UnitVector[n, n];cond = D[Subscript[μ, p] / Subscript[σ, p] /. x -> A.y + b, y] == 0cond /. A.y + b -> x方程式
で表される線形回帰モデルの対数尤度関数の勾配を計算する.
は,正規分布に従う,平均が0で偏差が
のランダム変数である:
y = VectorSymbol["y", n];
X = MatrixSymbol["X", {n, k}];
β = VectorSymbol["β", k];
u = VectorSymbol["u", n];l = -n / 2Log[σsquared] - 1 / (2σsquared)u.uSubscript[l, β] = D[l /. u -> y - X.β, β]Subscript[l, β] /. y - X.β -> uSubscript[l, σ^2] = D[l, σsquared]その他のアプリケーション (3)
Table[D[Exp[x ^ 3] Sin[x], {x, n}] / n!, {n, 0, 8}] /. {x -> 0}Series[Exp[x ^ 3]Sin[x], {x, 0, 8}]D[Inactive[Integrate][E ^ (a x), x], a]lhs = % /. a -> 1Integrate[E ^ (a x), x]D[%, a]rhs = % /. a -> 1//FullSimplifylhs == rhsActivate[%]D[Inactive[Sum][Exp[a k^2], {k, -∞, ∞}], a]lhs = % /. a -> -1Sum[Exp[a k^2], {k, -∞, ∞}]D[%, a]rhs = % /. a -> -1lhs == rhsActivate[%]特性と関係 (23)
f[x_] := x ^ 2D[f[x], x] == Limit[(f[x + h] - f[x]) / h, h -> 0]DifferenceQuotientのLimitは微分Dである:
DifferenceQuotient[Sin[x], {x, h}]Limit[%, h -> 0] == D[Sin[x], x]D[Integrate[f[x], x], x]D[Integrate[f[t], {t, 0, x}], x]Integrate[D[f[x], x], x]D[Integrate[f[t], {t, 0, x}], x]Integrate内の微分:
D[Integrate[f[a, t], t], a]Dは形式的な結果をDerivativeによって返す:
D[f[x], x]InputForm[%]D[f[x, y], x]InputForm[%]Dは式を与えられた変数について微分する:
D[Sin[x], x]Derivativeは演算子で純関数の結果を返す:
Derivative[1][Sin]Zeta'[3]微分の近似にはNを使う:
N[%]D[f,{array1},…]は,事実上First[Outer[D,{f},array1,…]]に等しい:
u = {x, y};
v = {w, z};
D[f[x, y, w, z], {u}, {v}] == First[Outer[D, {f[x, y, w, z]}, u, v]]f と a が配列なら,Dimensions[D[f,{a}]]==Join[Dimensions[f],Dimensions[a]]である:
f = {{s[x, y, z], t[x, y, z]}, {u[x, y, z], v[x, y, z]}};
a = {x, y, z};
Dimensions[D[f, {a}]]% == Join[Dimensions[f], Dimensions[a]]D[f,{{x1,x2,…,xn}}]は,事実上Grad[f,{x1,x2,…,xn}]に等しい:
D[x y Sin[z], {{x, y, z}}] == Grad[x y Sin[z], {x, y, z}]D[{x y, y z , z x}, {{x, y, z}}] == Grad[{x y, y z , z x}, {x, y, z}]Div[{f1,f2,…,fn},{x1,x2,…,xn}]は f のベクトル微分のトレースである:
Div[{x ^ 2y, z x y, z ^ 3}, {x, y, z}] == Tr[D[{x ^ 2y, z x y, z ^ 3}, {{x, y, z}}]]より一般的には,Div[f,x]は f のベクトル微分の最後の2次元を簡約したものである:
F = Array[Subscript[f, ##][x, y, z]&, {3, 3}]r = TensorRank[F]Subscript[∇, {x, y, z}].F == TensorContract[D[F, {{x, y, z}}], {{r, r + 1}}]Curl[f,x]は f のベクトル微分のHodgeDualに
をかけたものである.ただし,r は f の階数である:
f = {x ^ 2y, z x y, z ^ 3};r = TensorRank[f]Curl[f, {x, y, z}] == (-1)^r(r + 1)HodgeDual[D[f, {{x, y, z}}]]スカラー f については,Laplacian[f,{x1,x2,…,xn}]は f の二次ベクトル微分のトレースである:
Laplacian[Sin[x y]Exp[z], {x, y, z}] == Tr[D[Sin[x y]Exp[z], {{x, y, z}, 2}]]より一般的には,Laplacian[f,x]は f の二次ベクトル微分の最後の2次元を簡約したものである:
F = Array[Subscript[f, ##][x, y, z]&, {3, 3}]r = TensorRank[F]Subsuperscript[∇, {x, y, z}, 2]F == TensorContract[D[F, {{x, y, z}, 2}], {{r + 1, r + 2}}]Total[a]の a についての導関数を記号配列を使って計算する:
sA = ArraySymbol["A", {m, n, p}]sDTotalA = D[Total[sA], sA]iA = Inactive[Table][Indexed[A, {i, j, k}], {i, m}, {j, n}, {k, p}]iTotalA = Inactive[Table][Inactive[Sum][Indexed[A, {i, j, k}], {i, m}], {j, n}, {k, p}]iDTotalA = D[iTotalA, {iA}]Block[{m = 2, n = 3, p = 4}, Activate[iDTotalA] === Normal[sDTotalA]]ArcCurvatureはDによって定義することができる:
f[t_] := tg[t_] := t ^ 2Simplify[ArcCurvature[{f[t], g[t]}, t] == (-Derivative[1][g][t]Derivative[2][f][t] + Derivative[1][f][t]Derivative[2][g][t]/(Derivative[1][f][t]^2 + Derivative[1][g][t]^2)^3 / 2), t > 0]DSolve[{D[f[x], {x, 2}] == 15x ^ 3 - 13x ^ 2 + 5x, f[0] == 8, f[1] == 6}, f[x], x]Dを使って同次ディリクレ境界条件がある熱伝導方程式を指定する:
{ℒ, ℬ} = {D[u[t, x], t] == D[u[t, x], {x, 2}], DirichletCondition[u[t, x] == 0, True]};この微分系の固有系はDEigensystemで求めることができる:
{vals, funs} = DEigensystem[{ℒ, ℬ}, u[t, x], t, {x, 0, Pi}, 4];valsfunsDはDifferenceDeltaを使って定義することができる:
(DifferenceDelta[Cosh[x], {x, 1, h}]/h)Limit[%, h -> 0] == D[Cosh[x], x]DはDiscreteShiftを使って定義することができる:
(DiscreteShift[Log[x], {x, h}] - Log[x]/h)Limit[%, h -> 0] == D[Log[x], x]Limit[(Abs[h + 0] - Abs[0]) / h, h -> 0, Direction -> -1]Limit[(Abs[h + 0] - Abs[0]) / h, h -> 0, Direction -> 1]D[PiecewiseExpand[Abs[x], x∈Reals], x] /. x -> 0Dは,他の変数が微分変数からは独立であると仮定する:
expr = a x ^ 2 + b x + c;D[expr, x]Dtは,他の変数が微分変数に依存するかもしれないと仮定する:
Dt[expr, x]手作業で他の変数をすべて定数として指定すると,DtもDと同じ結果を返す:
Dt[expr, x, Constants -> {a, b, c}] == D[expr, x]eqn = y[x] ^ 2 + 3y[x] == x ^ 2 + 1;Solve[D[eqn, x], y'[x]]ImplicitDを使って陰関数の導関数を計算する:
ImplicitD[y ^ 2 + 3y == x ^ 2 + 1, y, x]考えられる問題 (5)
結果が直ちに,可能な限り最も簡潔な形で返されるとは限らない:
D[Sin[x] ^ 10, {x, 4}]FullSimplify[%]Simplify[D[ArcTan[x], x]]Simplify[D[-ArcTan[1 / x], x]]Dは,不連続点,尖点,その他の特別な点を考慮しないかもしれない一般的な結果を返す:
f[x_] := 1 / x
g[x_] := 10Surd[x ^ 2, 3]D[{f[x], g[x]}, x]{f'[0], g'[0]}Plot[{f[x], g[x]}, {x, -1, 1}, PlotLegends -> "Expressions", PlotRange -> 10]関数がPiecewise式に展開できる場合は,Dはより正確な結果を返す:
D[PiecewiseExpand[g[x], x∈Reals], x]Dのキャッシュされた値は,もとになっている定義の変化に気付かないかもしれない:
f'[x_] := Sin[x];
D[f[x], {x, 2}]f'[x_] := Exp[x];
D[f[x], {x, 2}]この問題は,システムキャッシュをクリアすることで解決できる:
ClearSystemCache["Symbolic"]D[f[x], {x, 2}]D[Sin[x] ^ 2, Sin[x]]第1引数にSin[x]がないので,次の数学的に等価な入力は0を返す:
D[1 - Cos[x] ^ 2, Sin[x]]インタラクティブな例題 (2)
f[x_] := x ^ 5 - 6x ^ 3 + xg[a_] := f[a] + f'[a](x - a)Manipulate[Show[Plot[{f[x], g[a]}, {x, -3, 3}, PlotRange -> 20], Graphics[{PointSize[Large], StandardOrange, Point[{a, f[a]}]}]], {{a, -0.5}, -3, 3, Appearance -> "Labeled"}, SaveDefinitions -> True]異なる基底点
について,
のとき接線に収束する割線を可視化する:
f[x_] := x ^ 3 + 2x^2 + 2dropdowns[b_, h_] := Line[{{b, f[b]}, {b + h, f[b]}, {b + h, f[b + h]}}]points[b_, h_] := {PointSize[Large], Point[{b, f[b]}], Point[{b + h, f[b + h]}]}Manipulate[Plot[{f[x], f[b] + (f[b + h] - f[b]/h)(x - b), f[b] + f'[b](x - b)}, {x, -.5, 2.5}, PlotRange -> {0, 30}, ImageSize -> Medium, LabelStyle -> Larger, Epilog -> {dropdowns[b, h], points[b, h]}], {{h, 1}, 0.000001, 1, Appearance -> "Labeled"}, {{b, .5}, 0, 1.25, Appearance -> "Labeled"}, SaveDefinitions -> True]おもしろい例題 (2)
3Dパラメトリック関数の接線ベクトルと法線ベクトルを計算する:
curve = KnotData[{"TorusKnot", {3, 5}}, "SpaceCurve"];tangent[t_] := curve'[t] / Sqrt[curve'[t].curve'[t]]
normal[t_] := tangent'[t] / Sqrt[tangent'[t].tangent'[t]]Animate[Show[ParametricPlot3D[curve[u], {u, 0, 2Pi}, PlotRange -> 3, ImageSize -> Medium], Graphics3D[{Thick, Sphere[{curve[t]}, 0.1], StandardBlue, Arrow[{curve[t], tangent[t] + curve[t]}], StandardRed, Arrow[{curve[t], normal[t] + curve[t]}]}]], {t, 0, 2Pi}, SaveDefinitions -> True, DefaultDuration -> 10]flist = {E ^ ( x), x ^ 2, Log[x], Sin[x], ArcTan[x], Cosh[x], ArcCosh[x], ChebyshevT[n, x], EllipticE[x], BesselJ[0, x]};Grid[Join[{{f[x], Inactive[D][f[x], {x, n}]}}, Transpose[{flist, (Subscript[∂, {x, n}]#1&) /@ flist}]], IconizedObject[«Grid options»]]//TraditionalFormテクニカルノート
-
▪
- 記号数学:基本操作 ▪
- 導関数の表し方 ▪
- 未知の関数の導関数 ▪
- 実装に関するノート: 代数と解析
関連するガイド
-
▪
- 微積分 ▪
- 中学・高校における教育 ▪
- 記号的なベクトル,行列,配列 ▪
- 偏微分方程式 ▪
- 微分方程式
関連リンク
履歴
1988 で導入 (1.0) | 1996 で更新 (3.0) ▪ 2004 (5.1) ▪ 2008 (7.0) ▪ 2017 (11.1) ▪ 2024 (14.1)
テキスト
Wolfram Research (1988), D, Wolfram言語関数, https://reference.wolfram.com/language/ref/D.html (2024年に更新).
CMS
Wolfram Language. 1988. "D." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/D.html.
APA
Wolfram Language. (1988). D. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/D.html
BibTeX
@misc{reference.wolfram_2026_d, author="Wolfram Research", title="{D}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/D.html}", note=[Accessed: 09-September-2026]}
BibLaTeX
@online{reference.wolfram_2026_d, organization={Wolfram Research}, title={D}, year={2024}, url={https://reference.wolfram.com/language/ref/D.html}, note=[Accessed: 09-September-2026]}