Разница между определенной и неопределенной интеграцией в системе Mathematica?

Я заметил, что математика гасит определенные определенные интегралы, но если я делаю индеифинитное интегрирование и вычитаю предельные значения результирующей функции, это легко даст мне ответ.

Существуют ли различные алгоритмы для вычисления определенных и неопределенных интегралов? Есть ли причина, по которой описанная выше процедура не выполняется системой Mathematica вручную?

Примеры:

Как люди в комментарии просили примеры, вот два.

Timing[Integrate[(r - c x)/(r^2 + c^2 - (2 r) c x)^(3/2), x]]
Out:={0.010452,(-c+r x)/(r^2 Sqrt[c^2+r^2-2 c r x])}

Немедленное получение выходных данных. Пока

Integrate[(r - c x)/(r^2 + c^2 - (2 r) c x)^(3/2), {x, -1, 1}]

Продолжает работать и замедляет работу моего старого компьютера. По прошествии некоторого времени он возвращает нежелательно длинный результат с большим количеством случаев. Это система Mathematica 7. В этом интеграле или в комплексных числах и т.д. нет сингулярностей. Чтобы получить значение, давайте прервем вычисление примерно на минуту и найдем значение с помощью фундаментальной теоремы исчисления вручную.

g = (r - c x)/(r^2 + c^2 - (2 r) c x)^(3/2)
l = Integrate[g, x] /. x -> -1;
u = Integrate[g, x] /. x -> 1;
u - l
Out:= (-c+r)/(r^2 Sqrt[c^2-2 c r+r^2])-(-c-r)/(r^2 Sqrt[c^2+2 c r+r^2])
FullSimplify[%] 
Out:= ((-c+r)/Sqrt[(c-r)^2]+(c+r)/Sqrt[(c+r)^2])/r^2

Что на самом деле правильно. Наконец, для полноты, давайте сравним вывод и время для определенного интеграла:

Timing[Integrate[(r - c x)/(r^2 + c^2 - (2 r) c x)^(3/2), {x, -1, 
   1}]]
Out:= {174.52,If[(Re[c/r+r/c]>=2||2+Re[c/r+r/c]<=0||c/r+r/c\[NotElement]Reals)&&((Im[r] Re[c]+Im[c] Re[r]<=0&&((Im[c]+Im[r]) (Re[c]+Re[r])>=0||Im[c]^3 Re[r]+Im[r] Re[c] (Im[r]^2-Re[c]^2+Re[r]^2)>=Im[c] (Im[c] Im[r] Re[c]+Re[r] (Im[r]^2 ... blah blah half a page

Обратите внимание на три минуты вычисления и очень запутанный ответ.

Настоящий пример из моей работы, я заметил это и был озадачен, но забыл об этом после крайнего срока подачи, до сегодняшнего дня, когда я снова столкнулся с той же проблемой.

f = 1/((-I c + k^2/2 - 1/2 (a + k)^2) (I d + k^2/2 - 
    1/2 (-b + k)^2)) + 1/((I c + k^2/2 - 1/2 (-a + k)^2) (I c + I d + 
    k^2/2 - 1/2 (-a - b + k)^2)) + 1/((I d + k^2/2 - 
    1/2 (-b + k)^2) (I c + I d + k^2/2 - 
    1/2 (-a - b + k)^2)) + 1/((I c + k^2/2 - 1/2 (-a + k)^2) (-I d + 
    k^2/2 - 1/2 (b + k)^2)) + 1/((-I c + k^2/2 - 
    1/2 (a + k)^2) (-I c - I d + k^2/2 - 
    1/2 (a + b + k)^2)) + 1/((-I d + k^2/2 - 1/2 (b + k)^2) (-I c - 
    I d + k^2/2 - 1/2 (a + b + k)^2))

Когда я пробовал определенный интеграл, я ждал и ждал через несколько часов (правда!) Наконец, я решил попробовать обходной путь, который сработал в кратчайшие сроки:

fl =  Integrate[f, k] /. k -> -1 ;
fu =  Integrate[f, k] /. k -> 1 ;
F = fu - fl;
F1 = F /. {a -> .01, c -> 0, d -> 1};

Пожалуйста, обратите внимание , что я не говорю об сингулярности, как предлагал один комментарий. Интеграция [1/x, {x, -1, 1}] почти сразу возвращает Интеграция:: idiv: Integral of 1/x не сходится на {-1,1}. > > , что является вполне разумным результатом.

-121--979939-

Почему Elsif not Else Если в программировании ПЛК Im программист ПЛК, и мне интересно, почему используется зарезервированное слово elsif (т.е. без Е). Я знаю, что Элсейф или любая другая комбинация не используется в качестве зарезервированных слов. Есть ли история для использования...

Программист ПЛК и я задаются вопросом, почему используется зарезервированное слово elsif (т.е. без E). Я знаю, что Элсейф или любая другая комбинация не используется в качестве зарезервированных слов. Существует ли история для использования в других языках. Если да, то почему? Просто чтобы сэкономить на наборе причины для меня я, кажется, ошибаюсь, набирая e, вероятно, 5 раз в день.

7
задан mrebus 20 September 2011 в 21:13
поделиться