2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Выбор ПО для символьных вычислений
Сообщение02.12.2010, 13:48 


17/11/09
9
Здравствуйте! Присматриваюсь к пакетам для символьных вычислений - 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 
Заслуженный участник
Аватара пользователя


07/01/10
2015
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 
Аватара пользователя


22/12/10
264
Для задач из курсов «мат. анализ 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 
Аватара пользователя


23/07/08
401
Новосибирск
По поводу форков Axiom: следует использовать либо FriCAS либо OpenAxiom, так как у просто Axiom ровно один разработчик (он и причина организации форков). Спец по этим вопросам в нашей окрестности д.ф.-м.н. Андрей Грозин рекомендует FriCAS. Возможно с вопросами проще обращаться именно к нему потому, что он сам участвует в разработке (в частности курирует прикручивание к Axiom стороннего вьювера и к texmacs) и правке багов.

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

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

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


07/03/06
1898
Москва
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 
Заслуженный участник
Аватара пользователя


14/03/10
595
Одесса, Украина
а об использовании Maple Вы не думали?

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


20/12/08
236
изниоткуда
Есть такой монстр - SAGE. Это риальне монстр, но он умеет довольно много. Для работы с ним полезно знать основы python, но вовсе необязательно. Для некоторых символьных задач он использует maxima (которую тащит с собой вместе с компилятором common lisp :shock: ), PARI/GP и др.

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

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

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


29/01/11
8
Екатеринбург

(Оффтоп)

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

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


27/04/09
28128

(Оффтоп)

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

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


07/01/10
2015

(Оффтоп)

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

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

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

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


20/12/08
236
изниоткуда

(Оффтоп)

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

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

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

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

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


25/01/09
25
Россия — Швейцария
Не знаю, насколько Вам это поможет, но для символьных вычислений можно использовать пакет 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 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group