2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Выбор ПО для символьных вычислений
Сообщение02.12.2010, 13:48 
Здравствуйте! Присматриваюсь к пакетам для символьных вычислений - Maxima, Axiom и производные, Reduce. Не знаю, что выбрать. Кратко:
Maxima:
+ явно живой проект, регулярно выходят новые версии. Довольно много информации в Сети.
+ для построения графиков используется gnuplot.
- судя по отзывам, в некоторых задачах даёт неверный результат.

Axiom и производные:
- строго типизированный язык => очень трудно работать без знания правил приведения типов.
- очень мало информации в Сети. На форумах, даже иноязычных найти что-то почти нереально. Тем более, не встречал ещё ни одного русскоговорящего человека, с которым можно было бы посоветоваться на предмет работы в Axiom, OpenAxiom и FriCAS. Конечно, есть книга на офиц. сайте, гигантская по количеству страниц, но не очень удобная.
- судя по слухам, непонятно, есть ли будущее у Axiom. Сайты у OpenAxiom и FriCAS выглядят так, будто их разработчики не заинтересованы в продвижении своих продуктов.
- откровенно плохая, на мой взгляд, система построения графиков. Я так и не нашёл, можно ли как-то прикрутить gnuplot.
- На мой взгляд, hyperdock - это нечто. Сама документация по содержанию неплохая. Но то, что она работает в графическом режиме, мне не нравится. Запускать из неё всё равно ничего не собираюсь, поэтому, лучше бы её организовали как в Максиме.
+- Из всех трёх больше всех понравился OpenAxiom, т.к., он меньше всех похож на свалку идей. Всё работает без проблем. Аварийных вылетов пока не замечено, чего не могу сказать о FriCAS. Во время работы он у меня не раз падал, либо внезапно вываливал на экран свой hyperdoc.
+ где-то встречалось, что, вроде бы, спокойно решаются те задачи, которые не может решить Maxima. Сам не пробовал, т.к. не хватает знания, чтобы опробовать в нём эти задачи.

Reduce:
+ опять же, на уровне слухов, есть задачи, которые можно решить только в Reduce, и нигде больше.
+ gnuplot для вывода графики.
- найти информацию в Сети практически невозможно. Такое впечатление, что об этой системе никто не знает (впрочем, как и об Axiom & Ko). Есть книга, но, при быстром просмотре я не нашёл, как сделать некоторые вещи.
- не ясно, жив ли проект. Какое-то шевеление вроде есть, но долго ли оно будет продолжаться.
- мне пока довелось работать только win-версией. Собрать из исходников в Linux ни разу не получилось. PSL-версия не компилируется из-за наличия каких-то ошибок, CSL-версия собирается нормально, но при установке машина почему-то намертво зависает.

Вообще, из всего этого богатства самыми достойными кажутся Maxima и Axiom. Но, использовать Максиму страшно (см. выше). Axiom же просто бесит сообщениями о несоответствии типов. В качестве примера - простейшая задача.
$s=\int_1^4 sin(x) \cdot cos(x) dx$
В Maxima получить числовой ответ проще простого:
Код:
s: integrate(sin(x)*cos(x),x,1,4);
float(s);


В Axiom получить символьный ответ просто. А как получить числовой ответ? Подставить ::Float - не проходит! Несоответствие типов, будь они не ладны!

В общем, понимаю, что вопрос поставлен несколько некорректно, но всё же, интересно узнать мнение тех, кто пользуется каким-либо из перечисленных пакетов (или несколькими сразу).

 
 
 
 Re: Выбор ПО для символьных вычислений
Сообщение02.12.2010, 16:46 
Аватара пользователя
rv82 в сообщении #382752 писал(а):
можно решить только в Reduce, и нигде больше.

:shock:

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

Лично мне в большинстве ситуаций хватает Mathematica и PARI/GP (о последнем я на это форуме узнал -- его maxal пропагандирует, даже где-то туториалы были на форуме).

(Оффтоп)

rv82 в сообщении #382752 писал(а):
Код:
s: integrate(sin(x)*cos(x),x,1,4);
float(s);

Ужос. Неужели в maxima нет специальной функции для численного интегрирования?

 
 
 
 Re: Выбор ПО для символьных вычислений
Сообщение28.12.2010, 14:05 
Аватара пользователя
Для задач из курсов «мат. анализ I/II», и в какой-то степени III, хватает стандартных средств maxima, всё остальное на maxima можно запрограммировать (вопрос в количестве усилий). Axiom с наследниками лучше приспособлены для «абстрактной алгебры», теории чисел итп. Главные «фишки» Axiom основаны на свойствах этого языка — как раз строгая типизация, с полиморфизмом, с частичной поддержкой зависимых типов и subtyping. Кроме того, к Axiom (любой ветке) можно приладить язык Aldor, в котором уже полноценные зависимые типы и subtyping, кроме того, этот язык компилируемый, так что можно писать довольно высокопроизводительные приложения со всякими символьными расчётами. Главная проблема с Aldor — замысловатая лицензия (в стиле «бесплатно и опенсорсно для некоммерческого использования», «for academic usage please contact us»).

Собственно, главная разница между maxima и axiom — первая приспособлена больше для «школьных» задач (в смысле, вычислений в давно изученных областях математики), вторая — больше для исследований, как фундаментальных, так и прикладных.

 
 
 
 Re: Выбор ПО для символьных вычислений
Сообщение01.01.2011, 11:58 
Аватара пользователя
По поводу форков Axiom: следует использовать либо FriCAS либо OpenAxiom, так как у просто Axiom ровно один разработчик (он и причина организации форков). Спец по этим вопросам в нашей окрестности д.ф.-м.н. Андрей Грозин рекомендует FriCAS. Возможно с вопросами проще обращаться именно к нему потому, что он сам участвует в разработке (в частности курирует прикручивание к Axiom стороннего вьювера и к texmacs) и правке багов.

Да, для численного интегрирования лучше использовать более другие пакеты, типа SciLAB. Для своих целей я пишу программ с использованием библиотек ROOT. Подробнее о том, что это такое тут

P.S. Reduse — это была любимая программа для использования в физике высоких энергий.

 
 
 
 Re: Выбор ПО для символьных вычислений
Сообщение29.01.2011, 00:39 
Аватара пользователя
caxap в сообщении #382802 писал(а):
Ужос. Неужели в maxima нет специальной функции для численного интегрирования?


Код:
(%i1) quad_qag(sin(x)*cos(x),x,1,4,3);
(%o1)        [- .06766170068463222, 1.037629375303094e-14, 31, 0]

 
 
 
 Re: Выбор ПО для символьных вычислений
Сообщение29.01.2011, 00:47 
Аватара пользователя
а об использовании Maple Вы не думали?

 
 
 
 Re: Выбор ПО для символьных вычислений
Сообщение29.01.2011, 23:35 
Аватара пользователя
Есть такой монстр - SAGE. Это риальне монстр, но он умеет довольно много. Для работы с ним полезно знать основы python, но вовсе необязательно. Для некоторых символьных задач он использует maxima (которую тащит с собой вместе с компилятором common lisp :shock: ), PARI/GP и др.

Хотя я предпочитаю голую maxima, на мой взгляд очень неплохой вариант.
Эх, когда-то звали туда разработчиком... :)

Речь об открытых системах, разумеется. Насчет Mathematica хз, работал с ней немного, но наплеваться все равно успел.

 
 
 
 Re: Выбор ПО для символьных вычислений
Сообщение30.01.2011, 20:51 
Аватара пользователя

(Оффтоп)

у sage есть не веб gui?

 
 
 
 Re: Выбор ПО для символьных вычислений
Сообщение30.01.2011, 20:58 

(Оффтоп)

allchemist в сообщении #406435 писал(а):
наплеваться все равно успел
А на что именно, помните?

 
 
 
 Re: Выбор ПО для символьных вычислений
Сообщение30.01.2011, 21:09 
Аватара пользователя

(Оффтоп)

allchemist в сообщении #406435 писал(а):
Насчет Mathematica хз, работал с ней немного, но наплеваться все равно успел.

Я, когда с ней впервые познакомился, тоже плевался много. Окончательно добивало её платность и тормознутость на фоне свободной и быстрой maxima, например. Но постепенно всё больше стал ощущать прелести и мощь первой системы и все глюки и слабость второй. Если я бы был фанатичным Столлманом, то использовал бы только maxima. Но (лично мне) матпакет нужен для одного дела -- быстренько что-то подсчитать в одну--две строчки, не изобретая велосипеды. Огромная библиотека Mathematica это позволяет.

Это моё ИМХО, просьба не комментировать.

 
 
 
 Re: Выбор ПО для символьных вычислений
Сообщение30.01.2011, 21:32 
Аватара пользователя

(Оффтоп)

Цитата:
у sage есть не веб gui?

Говорят, что есть какой-то sage-ide, но я не пользовался. веб gui там довольно убог, к сожалению.
Цитата:
А на что именно, помните?

В первую очередь, у нее свой синтаксис, непохожий на остальные программы. (Больше всего добивали точки вместо знаков умножения). Как следствие плохая переносимость, много ручной работы. Но это не та проблема, из-за которой стоит ставить черту.
Цитата:
Огромная библиотека Mathematica это позволяет.

Ага, там действительно много полезных вещей.

 
 
 
 Re: Выбор ПО для символьных вычислений
Сообщение31.01.2011, 11:15 
Аватара пользователя
Не знаю, насколько Вам это поможет, но для символьных вычислений можно использовать пакет sympy для языка python. Сразу оговорюсь, что не являюсь специалистом в sympy, но Ваш пример осилил:
код: [ скачать ] [ спрятать ]
Используется синтаксис Python
from sympy import *

x=Symbol('x')
a=Symbol('a')
b=Symbol('b')

s=integrate(sin(x)*cos(x), (x,a,b))
pprint(s)

a_val=1.0
b_val=4.0
s=s.subs(a,a_val)
s=s.subs(b,b_val)

pprint(s)
print s.evalf()
 


Результатом вышеприведенного кода будет следующее:
Используется синтаксис Text
   2         2  
sin (b)   sin (a)
─────── - ───────
   2         2  
   2           2    
sin (4.0)   sin (1.0)
───────── - ─────────
    2           2    
-0.0676617006846322
 

 
 
 [ Сообщений: 12 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group