LINUX.ORG.RU

Maxima as library


0

2

Лор, вопрос такой: как использовать Maxima как библиотеку? на платформе Windows. Что я нашёл по этому вопросу: Очень много написано тут http://www.math.utexas.edu/pipermail/maxima/2007/008152.html
Продолжение переписки http://www.math.utexas.edu/pipermail/maxima/2009/017523.html приведу его:

«Dear developers,

This is an update to the post by Bruno Daniel found here: http://article.gmane.org/gmane.comp.mathematics.maxima.general/17602

In order to work with the newer versions of Maxima (5.18.1) and SBCL (1.0.29), the code suggested by Mr. Daniel should be changed slightly:

----------------------------------------------------------»

(defpackage :my-package (:use :common-lisp))
(in-package :my-package)

(let ()
  (load "/Users/knutgj/Code/usemaxima/maxima-5.18.1/lisp-utils/defsystem.lisp")
;; This creates a lot of warnings in SBCL, but they seem to do no harm:
  (load "/Users/knutgj/Code/usemaxima/maxima-5.18.1/src/maxima.system")
  (funcall (intern (symbol-name :operate-on-system) :mk) "maxima" 
  :load :verbose t))


(let ()
  (setf maxima::*load-verbose* nil)
  (setf *debugger-hook* #'maxima::maxima-lisp-debugger)
  (let ((input-stream maxima::*standard-input*)
	(batch-flag nil))
    (progn
      (maxima::set-readtable-for-macsyma)
      (setf maxima::*read-default-float-format* 'double-float))
    (catch 'to-lisp
      (maxima::initialize-real-and-run-time)
      (intl::setlocale)
      (maxima::set-locale-subdir)
      (maxima::adjust-character-encoding)
      (maxima::set-pathnames)
      (when (boundp 'maxima::*maxima-prefix*)
	(push (pathname (concatenate 'string maxima::*maxima-prefix* "/share/locale/"))
	      intl::*locale-directories*))
      (setf (values input-stream batch-flag)
	    (maxima::process-maxima-args input-stream batch-flag))))
  )


(defparameter *maxima-package* (find-package :maxima))

(defun maxima::intern-invert-case (string)
  (intern (maxima::maybe-invert-string-case string) *maxima-package*))

также отсюда примерно такой же пример: http://d.hatena.ne.jp/niitsuma/20080328/1226706399 с такой инструкцией:

  • call maxima from sbcl
  • download maxima-5.16.3.tar.gz from http://maxima.sourceforge.net/
  • tar zxf maxima-5.16.3.tar.gz; cd maxima-5.16.3
  • LANG=C ./configure --disable-ecl --enable-sbcl --with-default- lisp=sbcl //эта инструкция не понятна вообще, так как то ли относится к настройке emacs, о котором ничего не упоминается, то ли ещё к чему-либо.
  • LANG=C make
  • LANG=C make check
  • suso make install
  • sudo checkinstall
  • cp -R src /usr/local/share/maxima/5.16.3/
  • ln -s /usr/local/share/maxima/5.16.3/src/maxima.asd /usr/share/common-lisp/systems/ comment out ;(:file «ecl-port») in /usr/local/share/maxima/5.16.3/src/maxima.asd need more some comment out line
  • cp -R /usr/local/share/maxima/5.16.3/src/binary-sbcl/* /var/cache/
  • common-lisp-controller/$MYID/sbcl/local/usr/local/share/maxima/5.16.3/src/
  • sbcl
(require :maxima)
(load "/usr/local/share/maxima/5.16.3/lisp-utils/defsystem.lisp")
(load "/usr/local/share/maxima/5.16.3/src/maxima-package.lisp")
(in-package :maxima)
(setf *MAXIMA-TEMPDIR* "/tmp")
($PLOT2D '((MEXPT SIMP) $X 2) '((MLIST SIMP) $X -5 5))

Проблема в том, что я не совсем понимаю, что за это за файлы загружаются (defsystem.lisp и maxima-package.lisp), и почему в примерах они разные. В установленной на windows системе нет таких путей как «/usr/local/...» есть «<user>/AppData/(Local или Roaming)/», но там естественно никаких файлов не лежит. Эти некоторые из файлов смог найти в самой maxima, очевидно там и должны быть.

В общем хотел узнать, что нужно, чтобы загрузить в SBCL maxima. Ещё интерес вызывает компиляция maxima на SBCL.

Заранее спасибо за помощь :)



Последнее исправление: viotan (всего исправлений: 2)

Ответ на: комментарий от mclaudt

Цитата конечно интересная, но насколько я знаю mathlab проприетарная штуковина. Из бесплатных я знаю scilab и maxima. А из лиспа проще подружиться с maxima.

viotan
() автор топика
Ответ на: комментарий от Evgueni

Почему совершенно разные?
Scilab, как и maxima предоставляет средства для работы с функциями, дифференциальными уравнениями, матрицами.
Моей задаче первоначальной было автоматическое создание отчётов для заданий. Я студент и часто задают задания, по которым нужно формировать отчёт. И появилось желание делать это автоматически. (да, это банально:) )
Отчёты в Latex. Оформление я в нём написал. Осталось подставить в нужные места результаты. Самое неприятное - это вручную вбивать таблицы, и какие-нибудь сложные формулы, которые являются результатами вычислений. Подсмотрел в maxima функцию tex(), она вроде всё прекрасно переводит в tex вид.
И все расчёты хочу проводить на CL, так как хочу его лучше изучить, а для этого нужно на нём что-нибудь написать.
Ну и так как maxima написана на CL, то я думаю её проще использовать из CL.
Кроме того, почему-то(хотя я привык. думаю это не только в нашем университете, а вообще нормальное такое явление) преподаватели пишут в методичках об использовании программ таких как Maple или Mathematica, за которые нужно платить. Я всё-таки придерживаюсь того мнения, что за хорошие качественные программы действительно надо бы заплатить, а денег у меня нет на такие вещи.
Не отрицаю, что для начальной задачи, есть другие решения. Например видел, где-то писали про Sweave. Но совмещение разметки и алгоритмов я не поддерживаю. К тому же это очередной язык, который нужно изучить и кроме всего прочего это всё не очень гладко работает, судя по документации.

viotan
() автор топика
Ответ на: комментарий от viotan

maxima — это аналитические расчёты, как и axiom (лучше ветка fricas) или reduce, а Scilab (как и Octave) — это численные расчёты.

Моей задаче первоначальной было автоматическое создание отчётов для заданий.

Для статистической обработки данных лучше использовать R+Sweave http://www.inp.nsk.su/~baldin/DataAnalysis/index.html → R — данные и графики → Мастера отчётов

Evgueni ★★★★★
()
Ответ на: комментарий от Evgueni

Спасибо за информацию насчёт R. Не находил вашего ресурса. Очень понятно описано. Буду изучать. К сожалению, в нашем университете (СГАУ) не рассказывают о таких вещах. (как и о Latex, что меня если честно удивляет)
Всё же, если кто знает о том, как подключать maxima или о ресурсах, на которых описано как это делать, буду рад этой информации. Она мне очень пригодится, и надеюсь не только мне.

Насчёт совмещения разметки и алгоритмов. Я думаю это не очень хороший подход. Лучше если мы создаём отдельно макет документа, и отдельно алгоритмы (функции), которые потом в макете можно было бы вызвать. Таким образом макет не будет загромождаться вещами, которые к оформлению имею мало общего, а алгоритмы не будут загромождаться, разметкой. В них будет проще разбираться. Для удобства, редактор должен связывать эти две части и давать возможность выбрать из доступных функций при оформлении нужную, быстро получать доступ к алгоритму из макета. Примерно таким образом работает это всё в WPF при использовании VisualStudio.
Но судя по нескольким статьям, R - очень мощный инструмент, и достоинства перекроют(с моей точки зрения) неудобства, о которых я писал.

viotan
() автор топика
Ответ на: комментарий от viotan

> К сожалению, в нашем университете (СГАУ) не рассказывают о таких вещах. (как и о Latex, что меня если честно удивляет)

К сожалению такая ситуация не только в СГАУ. Если студент приходит, то его приходится обучать на месте.

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

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

Всё же, если кто знает о том, как подключать maxima или о ресурсах, на которых описано как это делать, буду рад этой информации.

Если вам достаточны вещи типа численного интегрирования, не сложной статобработки и простых вычислений, то я бы рекомендовал приглядеться к ROOT http://root.cern.ch --- C++ во все поля со всем вытекающими. Собственно говоря --- это мой основной инструмент и хотя R мне нравится гораздо больше (точнее меня подташнивает от классов), но пользоваться приходится именно ROOT, так как объём обрабатываемых данных очень большой.

R --- это язык статистиков.

Evgueni ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.