15

関数の導関数を別の関数で使用したい。Maximaでこれをどのように行うべきですか?

例えば:

f(x) := 2*x^4;
g(x) := diff(f(x),x)-8;

期待どおりにg(x)生成されるようになりましが、意味がないため、エラーが発生します。しかし、どうすればgを適切に定義できますか?8x^3-8 g(0)diff(f(0),0)

4

4 に答える 4

18

quote-quote は、コードが解析されたときにのみ理解されることに注意してください。インタープリターでのみ作業する場合は問題ありませんが、スクリプトに何かを入れると、意図しない効果が生じる可能性があります。

これを行う別の方法。インタープリターでもスクリプトでも同じように機能します。

define (g(x), diff (f(x), x) - 8);

「定義」を参照してください。

于 2012-05-30T21:24:51.387 に答える
13

マイケルの答えは良いですが、g(x)呼び出されるたびに差別化を行います。(また、通常、適切にローカライズされblockていることを確認するためにステートメントでラップされています)。y

RHS を定義時に一般的に評価するように強制する方法がありxます。
構文は次のとおりです。

(%i1) f(x) := 2*x^4;
                                            4
(%o1)                            f(x) := 2 x
(%i2) g(x) := ''(diff(f(x), x) - 8);
                                          3
(%o2)                          g(x) := 8 x  - 8
(%i3) g(0);
(%o3)                                 - 8

ブロック構成と比較します。

(%i4) h(x) := block([y], subst([y = x], diff(f(y), y) - 8));
(%o4)        h(x) := block([y], subst([y = x], diff(f(y), y) - 8))
(%i5) h(0);
(%o5)                                 - 8

RHS が評価されていないことを示す (%o4) に注意してください。

参照: http://www.math.utexas.edu/pipermail/maxima/2007/004706.html

于 2011-12-19T00:43:32.400 に答える
4

これが最も簡単な答えかどうかはわかりませんが、私にとっては正しいことをしているようです

(%i) g(x) := subst([y = x], diff(f(y), y) - 8);

(%i) g(x);
         8 x^3 - 8
(%i) g(0);
         -8
(%i) g(1);
         0
于 2011-12-12T05:39:14.363 に答える