Maple не может взять интеграл

mtk79

В частности, 13-й.
Чудо программа при попытке численного взятия некоторого интеграла, посчитав для видимости секунд 300, "возвращает" его в первозданном виде, как бы намекая на популярное "ниасилил".
Хотя числа, которые подставлялись, не такие уж большие/маленькие, чтобы из не осилить, например, 10^{-12}. Итоговый интеграл вообще порядка единицы.
Как заставить умную программу пахать как раб на галерах работать?
ПС. Уменьшение значимых знаков N в evalf[N](expression конечно, помогает — но нет никакого доверия к результату.

Tigris

Вообще не очень частый, но продолжительный опыт общения с данным продуктом (разными версиями за последние несколько лет) привел меня к выводу, что или все им пользоваться не умеют (в частности, у нас на кафедре был прак по Maple) или разработчики неадекватны.
Этот чудо-продукт умудрялся выдавать разные ответы при выполнении одного и того же кода, считать через раз, вешать операционку и показывать еще кучу красочных фокусов.
Так что мой тебе совет воспользоваться куда более адекватным матлабом или чем то еще.

Lene81

если требуется брать интеграл именно численно, надо использовать форму
evalf(Int(proc, [xmin.. xmax, ymin...ymax, ?]

lenmas

Это нормально. Просто там условие сходимости интеграла видимо очень хитрое, так что практически не отличающиеся интегралы, один нормально берется, другой как ты описываешь "зависает". Я тогда обычно из пакета student включаю какого-нибудь Симпсона (или по трапециям можно). Так всегда сработает.

seregaohota

если требуется брать интеграл именно численно, надо использовать форму
evalf(Int(proc, [xmin.. xmax, ymin...ymax, ?]
причём Int обязательно с заглавной буквы, тогда Maple не пытается вычислить его перед этим аналитически, а потом посчитать численно полученную формулу. Причём у Maple разных версий есть три разных вида вычисления с числами с плавающей точкой.
Вполне возможно, что вместо evalf лучше вызвать evalhf - тогда счёт идёт быстрее c hard float - родным представлением чисел с плавающей точкой конкретной системы/процессора, на которой Maple в данный момент запущена. Хотя это если не ошибаюсь когда текущая точность Digits меньше вычислений c hard float, иначе вполне возможно что на лету неявно для вас вызывается счёт с внутренним представлением, чтобы добиться запрошенной точности Digits. Помощь надо читать по evalf и evalhf для конкретно вашей версии Maple на конкретно вашем компе. Или сходить по моим ссылкам выше на сайт Maple.
Вот там в частности
If Digits is set equal to (the integer part of) the special value evalhf(Digits) (approximately 15 on many 32-bit architectures) then evalf and evalhf (when both succeed) should produce similar results

seregaohota

что или все им пользоваться не умеют (в частности, у нас на кафедре был прак по Maple)
Наверно. Что за кафедра/факультет? Пусть меня позовут прак вести :)
или разработчики неадекватны.
Это уж вряд ли (c) Белое солнце пустыни
Этот чудо-продукт умудрялся выдавать разные ответы при выполнении одного и того же кода
Ну и что. Это не c++ какой, может ты перед этим кодом ещё что-то считал, достаточно одну чтрочку выполнить, или второй раз запустить ту же - у него пространство состояний среды по времени вычислений меняется. Скажем
int(x,x);
проинтегрирует
а после
x:=2; и нажатия Enter после перехода стрелкой наверх с попыткой вычислить на предыдущую строчку ругнётся что не может считать интеграл т.к. x уже числу равно.
Некоторым версиям надо явно говорить, чтобы в действительных а не комплексных числах что-то считал.
, считать через раз, вешать операционку и показывать еще кучу красочных фокусов.
Так что мой тебе совет воспользоваться куда более адекватным матлабом или чем то еще.
Бывает. Но всегда приятно думать, что это не руки кривые или неправильно используем, а инструмент кривой. Шуруповёртом тоже в принципе можно стенки сверлить.
Конечно, есть баги в больших системах, исправляемые в следующих версиях, и добавляются новые :) но обычно если у меня что не получается я воспринимаю себя как плохого танцора которому что-то мешает.
Поставь 14 версию Maple. И вообще она в основном на символьные вычисления заточена.

seregaohota

Секунд 300 это ты его небось символьно незаметно для себя заставил считать. Кидай в личку если чо.

Tigris

Прак на ф-те вмк, кафедра АНИ
Одинаковый результат выдавался при выполнении не отдельной команды, а программы в целом.
Я понимаю, что есть всякие нюансы и понимаю, что если глубоко копать и ковыряться, то можно разобраться почему не работает.
Но мое личное ощущение, что матлаб удобней (хотя может у меня такие задачи были).

mtk79

спасибо всем ответившим.
действительно, кривые руки и кривые мозги: если сначала что-то получилось посчитать (не читая хелп) командой
evalf[N](int...) — то считал, что так всегда и надо, что evalf гарантирует именно численное инт-е, а в фейлах виновата злая программа*
Сейчас исправил на Int: сначала также не посчиталось, но добавление аргумента epsilon = 1.*10^(-степень точности) дело решило. Как говорится, Маша открыла для себя новые прокладки Alldays с новой системой...
Мораль: не считайте себя умнее других. Особенно, разработчиков программ. Особенно, если лень читать хелп и инструкцию по выживанию применению.
*При этом, со старым вариантом int результаты тоже могли скакать на порядки при повышении точности N

Lene81

Одинаковый результат выдавался при выполнении не отдельной команды, а программы в целом.
Такое бывает, если алгоритм неустойчив, а автор про это не в курсе. Сам лично имею такой пример. Но я _знаю_ почему программа выдает разные ответы — потому что "ответ" это не ответ вовсе, а суперпозиция численных ошибок и от правильного отличается на десятки порядков.

Tigris

ример. Но я _знаю_ почему программа выдает разные ответы — потому что "ответ" это не ответ вовсе, а суперпозиция численных ошибок и от правильного отличается на десятки порядков.
там не численная задача, и ответ выдавался в одном случае ожидаемый, а во втором херня какая то.
Задача была в преобразовании данного уравнения мат.физики к каноническому виду.

Lene81

Я пользуюсь Мэплом с 3-й версии и выработал себе "золотое" правило: каждый воркшит и каждая программа начинается с команды restart; Только в этом случае гарантирована воспроизводимость результатов.

Tigris

Я пользуюсь Мэплом с 3-й версии и выработал себе "золотое" правило: каждый воркшит и каждая программа начинается с команды restart; Только в этом случае гарантирована воспроизводимость результатов.
и даже в этом случае не гарантировано ничего! :grin:

seregaohota

Я пользуюсь Мэплом с 3-й версии
О, respect. Я с то ли с 4, то ли с 5.2 начал, не помню. 3 вроде не юзал. Reduce вроде тогда была на лиспе.
В последних версиях если не вру при установке или в опциях можно позволить Maple иметь одно "пространство состояний среды" на все открытые окна. Запускаем пару воркшитов, в одном что-то делаем (или просто вспомогательные вычисления в новом окне а потом переключаемся и балдеем на глюки в другом :)

fabio

>Reduce вроде тогда была на лиспе.
он и щас на лиспе, и бесплатный
кстати математика считает интегралы быстрее если не нужныы тензоры ото то лудше ее пользовать
мэпл говнее с каждым разом, сначала зашифровали исходники - ранее можно было в блокноте набирать а потом эту яву включили

seregaohota

>Reduce вроде тогда была на лиспе.
он и щас на лиспе, и бесплатный
Его кто-нибудь развивает?
кстати математика считает интегралы быстрее если не нужныы тензоры ото то лудше ее пользовать
численно быстрее считает?
мэпл говнее с каждым разом, сначала зашифровали исходники - ранее можно было в блокноте набирать а потом эту яву включили
в каком смысле зашифровали? Только до кода встроенных функций не доберёшься. Текст и сейчас можно из внешнего редактора воткнуть, правда там после установки настройки по-умолчанию надо менять.
Я слышал японцам фирму продали. Ждём, когда Maple совсем загнётся, и станет бесплатная как Reduce :) Правда это шутка конечно и это вряд ли.
И ядро символьных вычислений, которое все конкуренты раньше покупали у Maple, теперь маткад у немцев вместе с приуниверситетской фирмой купил. Теперь немцы перестали бесплатно свой продукт поддерживать в связи с этим.
Оставить комментарий
Имя или ник:
Комментарий: