15

我想在另一个函数中使用函数的导数。这应该如何在千里马中完成?

例如:

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

现在按预期g(x)产生,给出错误,因为没有意义。但是,我应该如何正确定义g8x^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

注意 (%o4),它表明 RHS 未被评估。

参考: 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 回答
0

g(X) := at(diff(f(x),x)-8,x=X);

于 2021-12-21T07:30:12.403 回答