Есть ли у Максимы проблемы с дифференцированием интегралов?

Когда я спрашиваю у Максимы значение

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?

У меня есть версия 5.41.0 Maxima, и я использую ее через версию 18.02.0 wxMaxima.


person Heygard Flisch    schedule 03.06.2021    source источник


Ответы (1)


Похоже, вопрос исходит от 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))

Вы можете подавить вопрос, сообщив Максиме, больше или меньше нуля 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))
person Robert Dodier    schedule 04.06.2021