15

関数がありますf(t)=2/(2-t)2^(-r)*r!Mathematicaを使わずにt=0(すなわち)でr次導関数を得るのはそれほど難しいことではありません 。Mathematica計算の場合、次のようにr=4のときにr次導関数を得ることができますD[2/(2-t), {t, 4}]。しかし、rが任意の整数である場合、数学でt = 0でr次導関数を取得するにはどうすればよいですか?この式を使おうとしましたが、期待どおりに機能しませんでした。

Simplify[D[2/(2 - t), {t, r}], Assumptions -> Element[r, Integers]]  /. {t->0}

私たち人間と同じように、上記の数学をMathematicaで象徴的に行うことは可能ですか?

4

4 に答える 4

16

分析関数には、SeriesCoefficientを使用できます。

nthDeriv[f_, x_, n_] := n!*SeriesCoefficient[f[x], {x, x, n}]

あなたの例:

f[t_] := 2/(t - 2)

nthDeriv[f, t, n]
(*
-> Out[39]= n!*Piecewise[{{-2*(2 - t)^(-1 - n), n >= 0}}, 0]
*) 
于 2011-11-26T22:17:02.317 に答える
14
f = FindSequenceFunction[Table[D[2/(2 - t), {t, n}], {n, 1, 5}], r]

(*
-> -((2 (2 - t)^-r Pochhammer[1, r])/(-2 + t))
*)
g[r_, t_] := f
FullSimplify@FindSequenceFunction[Table[g[r, t], {r, 1, 5}] /. t -> 0]

 (*
 -> 2^-#1 Pochhammer[1, #1] &
 *)

編集

あるいは単に

FindSequenceFunction[Table[D[2/(2 - t), {t, n}], {n, 1, 5}], r] /. t -> 0
(*
-> 2^-r Pochhammer[1, r]
*)

*編集*

注:FindSequenceFunction[]この単純な状況で機能しますが、より一般的なケースでは賭けないでください。

編集

階乗関数で表現された結果を取得するには、次のようにします。

FunctionExpand@FindSequenceFunction[Table[D[2/(2-t),{t, n}],{n,1,5}], r] /.t->0
(*
-> 2^-r Gamma[1 + r]
*)
于 2011-11-26T12:51:39.517 に答える
3

時々うまくいく別のアプローチがあります(漸化式ではなく閉じた形の式を与えます):

In[1]:= InverseFourierTransform[(-I k)^n FourierTransform[1/(1 + x^2)^Log[2], x, k] , k, x]
Out[1]= (2^(-1 + n - 1/2 Log[1/x^2])
      Abs[x]^-Log[2] ((-I)^
      n ((1 + n) x Gamma[(1 + n)/2] Gamma[
      n/2 + Log[2]] Hypergeometric2F1[(1 + n)/2, n/2 + Log[2], 1/
      2, -x^2] (n + Log[4]) - 
    2 I Gamma[1 + n/2] Gamma[
      1/2 (1 + n + Log[4])] ((1 + x^2) Hypergeometric2F1[(2 + n)/
         2, 1/2 (1 + n + Log[4]), -(1/2), -x^2] - 
       Hypergeometric2F1[(2 + n)/2, 1/2 (1 + n + Log[4]), 1/
         2, -x^2] (1 + x^2 (3 + 2 n + Log[4])))) + 
 I^n ((1 + n) x Gamma[(1 + n)/2] Gamma[
      n/2 + Log[2]] Hypergeometric2F1[(1 + n)/2, n/2 + Log[2], 1/
      2, -x^2] (n + Log[4]) + 
    2 I Gamma[1 + n/2] Gamma[
      1/2 (1 + n + Log[4])] ((1 + x^2) Hypergeometric2F1[(2 + n)/
         2, 1/2 (1 + n + Log[4]), -(1/2), -x^2] - 
       Hypergeometric2F1[(2 + n)/2, 1/2 (1 + n + Log[4]), 1/
         2, -x^2] (1 + x^2 (3 + 2 n + Log[4]))))))/((1 + n) 
       Sqrt[Pi] x Gamma[Log[2]] (n + Log[4]))

また、繰り返される抗誘導体を見つけるために使用することができます。

于 2013-05-09T05:33:05.503 に答える
1

他の答えは、私が根本的な質問を理解していないのではないかと思いますが、あなたはこの種のことのDerivative代わりに見るべきだと思います。D

In[1]:= Remove[f, fD]
f = 2/(2 - #) &;
fD[r_Integer, EvaluatedAt_] := Derivative[r][f][#] &[EvaluatedAt]

これで、任意のrと値を簡単に評価できる関数ができました。

In[4]:= fD[#, 0] & /@ {1, 2, 3, 4, 5, 6}

Out[4]= {1/2, 1/2, 3/4, 3/2, 15/4, 45/4}
于 2011-11-27T20:44:56.440 に答える