Как найти функцию r-й производной, когда r является символом в Mathematica?
У меня есть функция f(t)=2/(2-t)
. Трудно получить r-ю производную при t = 0 (т.е. 2^(-r)*r!
) без использования Mathematica. В случае вычисления Mathematica я могу получить r-ю производную, когда r = 4, как это: D[2/(2-t), {t, 4}]
. Но как я могу получить r-ю производную при t = 0 в Mathematica, когда r - ЛЮБОЕ целое число? Я попытался использовать это выражение, но оно не сработало, как ожидалось:
Simplify[D[2/(2 - t), {t, r}], Assumptions -> Element[r, Integers]] /. {t->0}
Можно ли сделать вышеуказанную математику символически в Mathematica так же, как мы, люди?
Ответы
Ответ 1
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
[email protected][Table[g[r, t], {r, 1, 5}] /. t -> 0]
(*
-> 2^-#1 Pochhammer[1, #1] &
*)
Edit
Или просто
FindSequenceFunction[Table[D[2/(2 - t), {t, n}], {n, 1, 5}], r] /. t -> 0
(*
-> 2^-r Pochhammer[1, r]
*)
* Редактировать *
Примечание. Хотя FindSequenceFunction[]
работает в этой простой ситуации, не делайте ставку на нее в более общих случаях.
Edit
Чтобы получить результат, выраженный в терминах факторной функции, просто выполните:
[email protected][Table[D[2/(2-t),{t, n}],{n,1,5}], r] /.t->0
(*
-> 2^-r Gamma[1 + r]
*)
Ответ 2
Для аналитических функций вы можете использовать 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]
*)
Ответ 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]))
Он также может быть использован для поиска повторяющихся анти-производных.
Ответ 4
Другие ответы заставляют меня задаться вопросом, не понимаю ли я основной вопрос, но я думаю, что вы должны смотреть на 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}