1

我按照以下说明生成泰勒级数:

f(x) := ''(ratdisrep(taylor(qExct('x),'x,0,5)));

qExct 是一个未定义的函数:我想对任何作为平滑函数的 qExct 执行某种计算。

知道了这一点,我如何将变量设置x为某个值(例如 1)?

如果我这样做:

f(1);

然后最大值返回我以下错误:

diff: variable must not be a number; found: 1

如果我这样做:

f(D);

然后它考虑D一个变量并将所有出现的变量替换为x变量D。特别是,它使用 d/dD 而不是 d/dx 来区分。但是,我想要的是仅在 x^n 项x中用数字替换变量,1并保持导数不变......</p>

我该怎么做呢 ?

4

2 回答 2

1

表达式中的变量在diffMaxim 中并非处处都被识别为虚拟(正式)变量,因此当您尝试评估 时f(1),Maxima 将 1 代入diff表达式并导致错误。我认为这是一个错误。我将对此进行错误报告。

作为一种解决方法,您可以使用pdiffMaxima 附带的附加包(位置导数)。该表示法与 Maxima 中默认使用的 dy/dx 表示法略有不同。

(%i1) load (pdiff) $
(%i2) f(x) := ''(ratdisrep(taylor(qExct('x),'x,0,2)));
                                    2
                     qExct     (0) x
                          ""(2)
(%o2)        f(x) := ---------------- + qExct     (0) x + qExct(0)
                            2                ""(1)
(%i3) f(h);
                                2
                   qExct   (0) h
                        (2)
(%o3)              -------------- + qExct   (0) h + qExct(0)
                         2               (1)
(%i4) ev (%, qExct=sin);
(%o4)                                  h
(%i5) ev (%o3, h=1);
                     qExct   (0)
                          (2)
(%o5)                ----------- + qExct   (0) + qExct(0)
                          2             (1)

我认为显示中的虚假""f(x) := ...轻微的显示错误;我认为你可以忽略它们。

在您的 Maxima 安装中有pdiffin的文档。share/pdiff/pdiff-doc.pdf

于 2015-04-01T17:56:33.053 回答
1

这是另一个解决方案,它使用at而不是pdiff.

(%i1) f(x) := ''(ratdisrep(taylor(qExct('x),'x,0,2)));
                                !
                   2            !
               2  d             !
              x  (--- (qExct(x))!     )
                    2           !
                  dx            !                         !
                                !x = 0       d            !
(%o1) f(x) := ------------------------- + x (-- (qExct(x))!     ) + qExct(0)
                          2                  dx           !
                                                          !x = 0
(%i2) at(f(x), x=1);
                           !
                     !     !
        2            !     !
       d             !     !
       --- (qExct(x))!     !
         2           !     !
       dx            !     !                           !
                     !x = 0!                     !     !
                           !x = 1   d            !     !
(%o2)  -------------------------- + -- (qExct(x))!     !      + qExct(0)
                   2                dx           !     !
                                                 !x = 0!
                                                       !x = 1
(%i3) %, qExct=sin;
                                !
                          !     !
               2          !     !
              d           !     !
              --- (sin(x))!     !
                2         !     !
              dx          !     !                         !
                          !x = 0!                   !     !
                                !x = 1   d          !     !
(%o3)         ------------------------ + -- (sin(x))!     !
                         2               dx         !     !
                                                    !x = 0!
                                                          !x = 1
(%i4) %, nouns;
(%o4)                                  1

请注意,这f(1)是通过 评估的at(f(x), x=1)

嵌套at表达式很麻烦;我已经修复了它(在 Maxima 的源代码中),这样就不会再发生了。

于 2015-04-01T20:02:54.573 回答