関数の導関数を別の関数で使用したい。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)
関数の導関数を別の関数で使用したい。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)
quote-quote は、コードが解析されたときにのみ理解されることに注意してください。インタープリターでのみ作業する場合は問題ありませんが、スクリプトに何かを入れると、意図しない効果が生じる可能性があります。
これを行う別の方法。インタープリターでもスクリプトでも同じように機能します。
define (g(x), diff (f(x), x) - 8);
「定義」を参照してください。
マイケルの答えは良いですが、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
これが最も簡単な答えかどうかはわかりませんが、私にとっては正しいことをしているようです
(%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