当r在Mathematica中具有象征意义时,如何找到函数的导数?

jsc*_*oot 15 wolfram-mathematica symbolic-math

我有一个功能f(t)=2/(2-t).在2^(-r)*r!没有使用Mathematica的情况下,在t = 0(即)得到第r个导数并不是那么困难 .在Mathematica计算的情况下,我可以得到r = 4时的r次导数,如下所示:D[2/(2-t), {t, 4}].但是当r是任意整数时,如何在Mathematica中获得t = 0的rth导数?我试图使用这个表达式,但它没有按预期工作:

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

是否有可能像人类一样在Mathematica中象征性地进行上述数学运算?

Dan*_*lau 16

对于分析函数,您可以使用SeriesCoefficient.

nthDeriv[f_, x_, n_] := n!*SeriesCoefficient[f[x], {x, x, n}]
Run Code Online (Sandbox Code Playgroud)

你的例子:

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

nthDeriv[f, t, n]
(*
-> Out[39]= n!*Piecewise[{{-2*(2 - t)^(-1 - n), n >= 0}}, 0]
*) 
Run Code Online (Sandbox Code Playgroud)

  • +1确实,`SeriesCoefficient`文档的"更多信息"部分是:"在SeriesCoefficient [f,{x,Subscript [x,0],n}]的形式中,n的顺序可以是符号."两个问题:1)为什么这个符号评估功能保留给`SeriesCoefficient`而不授予`D`?2)我不确定我是否理解`{x,x,n}`形式.第二个参数通常用于x0,即系列开发周围的点,导致扩展中的`(x-x0)`项.但是`(xx)的意思是什么?在`系列`你不能这样做. (2认同)
  • @Sjoerd(1)D不做任何假设,而Series和SeriesCoefficient"假定",某些地方实际存在某种形式的系列表示.有些方法虽然很笨拙,但这种假设很精细.此外,SeriesCoefficient已经包含了一些从符号求和能力中借用的一般"第n项"技术.我怀疑尝试将其中的任何一个改进为D(可能会产生比它解决的更多问题)是有意义的. (2认同)

Dr.*_*ius 13

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] &
 *)
Run Code Online (Sandbox Code Playgroud)

编辑

要不就

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

*编辑*

注意:虽然FindSequenceFunction[]在这种简单的情况下工作,但在更一般的情况下不要赌它.

编辑

要获得以阶乘函数表示的结果,只需执行以下操作:

FunctionExpand@FindSequenceFunction[Table[D[2/(2-t),{t, n}],{n,1,5}], r] /.t->0
(*
-> 2^-r Gamma[1 + r]
*)
Run Code Online (Sandbox Code Playgroud)