Maple

Dec 20, 2014 12:32

Maple, популярная, но очень отвратительная система математических вычислений, легко считает интеграл int(ln(cos(4.+ 0.5*z)),z = 2...3.) (численно), но наотрез отказывается считать int(ln(cos(3.+ 0.5*z)),z = 2. .. 3.). При этом неопределенный интеграл она охотно пишет через дилогарифм (а значения дилогарифма умеет считать!) Я в ступоре. Это что, ( Read more... )

Leave a comment

roman_rogalyov December 20 2014, 09:48:16 UTC
В первом случае аргумент логарифма положительный, во втором - отрицательный.

Reply

potap December 20 2014, 12:27:16 UTC
Ну и что?
Мейпл-хелп утверждает, что значение логарифма всегда однозначно определено:
For complex-valued expressions x, ln(x) = ln(abs(x))+I*argument(x), where -Pi

Reply

roman_rogalyov December 20 2014, 12:46:48 UTC
Возможно, мэйпл сбоит при изготовлении комплекснозначного выражения из поданного ему как бы вещественного.

Reply

potap December 20 2014, 12:51:01 UTC
Ну я на это и намекал, когда писал слово "тупость" (позднее исправленное на "небрежность"). Неужели за 20+ лет нельзя было такую тривиальную вещь отладить и выправить?

Reply

roman_rogalyov December 20 2014, 14:32:10 UTC
Ох.. Тут Вас хоть честно предупреждают, что программа не работает. А у меня вот фортрановская программа (с багом, как позже выяснилось), будучи откомпилирована разными компиляторами (ifort и gfortran 4.4), давала разные ответы. Причём gfortran, как позже выяснилось - правильный (несмотря на баг), а ifort - нет.

Вообще, у программистов как бы общепринято, что забота о типе переменной (комплексная, вещественная и т.д.) это дело пользователя. По крайней мере у меня такое впечатление.

Reply

potap December 21 2014, 00:29:55 UTC
Не понял, кто меня предупреждает.
В Maple типы указывать вовсе необязательно.
Почитав комменты внизу, я догадался, как поправить выражение для интеграла, чтобы считалось правильно. Однако, подсчет заканчивается успешно только с точностью до 15 знаков, Начиная с 16, процесс бодро занимает 4Г оперативной памяти, лезет в своп и дохнет. Как это гадко!

Reply

roman_rogalyov December 21 2014, 08:35:07 UTC
//Не понял, кто меня предупреждает.//
"Наотрез отказывается считать" я приравниваю к честному предупреждению. Могло бы и просто неправильно посчитаться.

Мне недавно прорекламировали Maple, спасибо Вам за указание на глюки - отложу более близкое знакомство с ним.

Reply

potap December 21 2014, 08:39:31 UTC
>"Наотрез отказывается считать" я приравниваю к честному предупреждению.
Да, согласен, что-то сразу не понял.
Говорят, Mathematica считает лучше, но у нее синтаксис трудный, я не осилил. Пытаюсь осилить pari-gp и sage.

Reply

roman_rogalyov December 21 2014, 12:08:11 UTC
С не очень большими матрицами (и некоторыми тензорами) хорошо разбирается REDUCE, с приведением подобных в очень больших многочленах (до 2 Гб) и. стало быть, с разложением в ряды с большим числом членов - FORM. Оба легко справлялись с несложными вычислениями до 500 знаков.

Reply

potap December 21 2014, 13:04:51 UTC
Reduce я знаю чисто понаслышке, а ФОРМ у меня установлен, и я им пользуюсь для больших символьных вычислений с некоммутативными пееменными, например, в универсальных обертывающих алгебрах.

Reply

potap December 21 2014, 02:33:18 UTC
Да, выражение ln(-1.) оценивается мэйплом молча как 0.+3.141592654*I. А почему под знаком интеграла этого не происходит? Налицо программистская безграмотность.

Reply


Leave a comment

Up