【问题标题】:How to use Maxima's diff in function definition?如何在函数定义中使用 Maxima 的 diff?
【发布时间】:2011-12-12 04:56:34
【问题描述】:

我想在另一个函数中使用一个函数的导数。在 Maxima 中应该如何做到这一点?

例如:

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

现在g(x) 按预期产生8x^3-8但是 g(0) 给出错误,因为diff(f(0),0) 没有意义。但是我应该如何正确定义 g

【问题讨论】:

    标签: math differential-equations maxima


    【解决方案1】:

    请注意,quote-quote 仅在解析代码时才被理解。如果您只在解释器中工作,那没关系,但如果您将内容放入脚本中,则可能会产生意想不到的效果。

    另一种方法。它在解释器和脚本中的工作方式相同。

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

    参见“定义”。

    【讨论】:

      【解决方案2】:

      Michael 的回答很好,但每次调用 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

      【讨论】:

      • 是什么让 g(x) := ''(diff(f(x), x) - 8);工作,但不 h(x) := ''diff(f(x), x) - 8; ?在 h 中,差异没有得到评估。
      • @shinjin:为了让:= 运算符评估RHS,整个右手边必须用'' 包裹。我认为它不会解析 RHS 以查找引用,直到它被调用。另请注意,您可以使用等效的define(g(x), ...),而不是g(x) := ''(...)
      【解决方案3】:

      不确定这是否是最简单的答案,但它似乎对我来说是正确的

      (%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
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-06-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-08-22
          • 1970-01-01
          相关资源
          最近更新 更多