2012-01-08 19 views
3

fR私はいくつかの関数の高次の導関数を評価したいと思います。 私には2つの可能性があります。明示的な式対Rの記号的な導関数対Rの記号的な導関数対

  1. Iは、F (K)、(私は私の特定の場合に行うことができる)FK番目の誘導体、そして、私はそれを評価するための一般的な表現を決定いずれ。
  2. または、の容量を利用して、記号的派生(機能D())を実行します。

1より2のメリットは何ですか? f (k)は再帰式ではありません。どうすればf (k)は再帰的ですか?

ご了承ください。

+0

あなたは何をしようとしていますか?あなたの質問は不明です。 Ryacasと他の代数的コンピュータ言語は、解析的(派生的ではない)の派生的な導関数(「派生」ではない)を計算することができます。そうすれば、Rは導関数を表すさまざまな関数の値を計算することができます。 f "? –

+0

私はRの中の"象徴的な "派生語について話します(助けてください(D)) "なぜ "は長すぎて説明には関係がありません "どのような関数f "私たちは、デリバティブが計算できる任意の関数を言う... 私はあなたが指摘する利点を知りたいと思います。計算時間、メモリ、スピードの面では、... – Marco

+0

@G。 Grothendieck:ご意見ありがとうございました – Marco

答えて

12

記号的な区別は、手作業よりもエラーが起こりにくいです。

は、低次のために私は象徴的分化が大幅に計算時間がかかるだろうが、あなたはすぐにそれが proc.timesystem.timeまたは rbenchmarkパッケージを使用しているか決定するためにあなたの特定の状況を時間を計ることができると思いませんでした。また、 these examplesを参照してください。

小切手と手書きの両方の差別化を試したい場合があります。 Ryacasパッケージ対Rのderiv(例えばDなどと関連した機能)について

は、後者は、ユーザが自分自身を(derivの三argが順序指定)反復することを必要とせずに繰り返し分化を行うための施設を持っており、それが持っていますSimplify機能はRには存在しませんが、Ryacasは慎重にチェックする必要があります。なぜならyacasは時折少しバグが多い可能性があるからです。

> library(Ryacas) 
> x <- Sym("x") 
> y <- (x^2+x)^2 
> dy <- deriv(y, x, 2) # 2nd deriv 
> dy 
expression(2 * (2 * x + 1)^2 + 4 * (x^2 + x)) 
> Simplify(dy) 
expression(2 * (6 * x^2 + 6 * x + 1)) 

EDIT:例に追加しました:

> Eval(dy, list(x = 3)) 
[1] 146 
> Eval(Simplify(dy), list(x = 3)) 
[1] 146 
> 
> f <- function(x) {} 
> body(f) <- yacas(Simplify(dy))[[1]] 
> f 
function (x) 
2 * (6 * x^2 + 6 * x + 1) 
> f(3) 
[1] 146 
> 
> # double check 
> w <- 3 
> eval(D(D(expression((w^2+w)^2), "w"), "w")) 
[1] 146 

またdemo("Ryacas-Function")を試してみてください。ここ

は一例です。

EDIT 2:エラーを修正し、例を追加しました。

関連する問題