Maxima 在微分积分时有问题吗?

Does Maxima have problems differentiating integrals?

当我向 Maxima 询问

的值时
diff(integrate(f(y),y,0,x),x);

然后正确推导出这个表达式是f(x)。但是,如果我将表达式稍微修改为

diff(integrate(f(y)^(1/2),y,0,x),x);

然后 Maxima 询问 x 是正数、零还是负数。回答肯定或否定会导致 f(x)^(1/2) 的正确且相同的结果。回答零会出错,因为由常数推导的定义不明确。

这是 Maxima 的局限性还是有什么方法可以让 Maxima 在不询问 x 符号的情况下得到正确的结果?

我有 Maxima 5.41.0 版,我正在通过 wxMaxima 18.02.0 版使用它。

问题似乎来自 integrate,而不是 diff:

(%i2) integrate (f(y), y, 0, x);
                            x
                           /
                           [
(%o2)                      I  f(y) dy
                           ]
                           /
                            0
(%i3) integrate (sqrt(f(y)), y, 0, x);
Is x positive, negative or zero?

p;
                         x
                        /
                        [
(%o3)                   I  sqrt(f(y)) dy
                        ]
                        /
                         0
(%i4) integrate (sqrt(f(y)), y, 0, x);
Is x positive, negative or zero?

n;
                          0
                         /
                         [
(%o4)                  - I  sqrt(f(y)) dy
                         ]
                         /
                          x

重新排序积分的限制是可以的,虽然可能不是必需的,并且它在 %i2 和 %i3 之间不一致。我想这是一个错误。

之后diff达到预期效果:

(%i5) diff (%o2, x);
(%o5)                         f(x)
(%i6) diff (%o3, x);
(%o6)                      sqrt(f(x))
(%i7) diff (%o4, x);
(%o7)                      sqrt(f(x))

您可以通过告诉 Maxima x 是大于还是小于零来抑制问题。我不知道这对您要解决的问题是否有意义。

(%i8) assume (x > 0);
(%o8)                        [x > 0]
(%i9) integrate (sqrt(f(y)), y, 0, x);
                         x
                        /
                        [
(%o9)                   I  sqrt(f(y)) dy
                        ]
                        /
                         0
(%i10) diff (%, x);
(%o10)                     sqrt(f(x))