2017-02-02 8 views
1

Я хочу создать небольшую «библиотеку», которая будет использоваться моими будущими сценариями максимумов, но я не совсем уверен, как действовать (я использую wxMaxima). Документация Maxima охватывает функции save(), load() и loadFile(), но не дает примеров. Поэтому я не уверен, использую ли я правильный/лучший способ или нет. Мое текущее решение, основанное на сообщении this, хранит мою библиотеку в формате * .lisp.Maxima: Каков рекомендуемый способ создания и загрузки библиотеки?

В качестве простого примера предположим, что моя библиотека определяет функцию cosSin(x). Я открываю новую сессию и определить эту функцию как

(%i0) cosSin(x) := cos(x) * sin(x); 

Затем я сохранить его в LISP файл, расположенный в каталоге /tmp/.

(%i1) save("/tmp/lib.lisp"); 

я затем открыть новый экземпляр максимумов и загрузить библиотеку

(%i0) loadfile("/tmp/lib.lisp"); 

cosSin(x) теперь определены и можно назвать

(%i1) cosSin(%pi/4) 

(%o1) 1/2 

Однако я заметил, что значительное число библиотек, поставляемых с maxima, имеют формат * .mac: каталог /usr/share/maxima/5.37.2/share/ содержит 428 * .mac файлов и 516 * .lisp файлов. Это лучший формат? Как я могу сгенерировать такие файлы?

В общем, какими способами можно сохранить и загрузить библиотеку? Каков рекомендуемый подход?

ответ

2

Обычно люди используют функции, которые им нужны, в имени файла something.mac, а затем load("something.mac"); загружает функции в Maxima.

Файл может содержать любое количество функций. Файл может загружать другие файлы, поэтому, если у вас есть somethingA.mac и somethingB.mac, тогда у вас может быть другой файл, который просто говорит load("somethingA.mac"); load("somethingB.mac");.

Можно также создавать файлы Lisp и загружать их тоже, но не требуется писать функции в Lisp.

Если вы специально не заинтересованы в написании функций Lisp, мой совет - написать ваши функции на языке Maxima и поместить их в файл с помощью обычного текстового редактора. Кроме того, я рекомендую вам не использовать save для сохранения функций в файл как код Lisp; просто введите функции в файл, как код Maxima, с помощью обычного текстового редактора.

Посмотрите файлы в share, чтобы получить представление о том, как другие люди обдумали это. Я смотрю прямо сейчас на share/contrib/ggf.mac, и я вижу, что у него длинный заголовок комментария, описывающий его цель - такие комментарии всегда являются хорошей идеей.

+0

Спасибо за ваш ответ: я смог создать и загрузить файл * *. Mac по вашим инструкциям :). У меня все еще есть вопрос: есть ли способ конвертировать файл wxMaxima, который сохраняется как \ *. Wxmx (в предыдущих версиях wxMaxima он был сохранен как \ *. Wxm) в файл \ *. Mac? Я попытался просто переименовать файл из lib.wxmx в lib.mac, и это не сработало ... –

+0

Файл wxmx на самом деле является zip-файлом, содержащим код Maxima плюс любые изображения и, возможно, некоторые другие вещи. Вот почему просто переименование не работает. Вероятно, самый простой способ извлечь код Maxima - открыть wxmx с помощью wxMaxima, а затем выбрать «Сохранить как ...«в меню« Файл »и установите тип вывода в« Максимальный пакетный файл (.mac) ». Я работал над инструментом для извлечения кода Maxima без использования wxMaxima, но, оказывается, это трудоемко. Если вам интересно, код для этого проекта доступен в Github, см. https://github.com/robert-dodier/maxima-read-wxmx –

+0

Действительно, я смог сохранить файл \ *. mac из wxMaxima в соответствии с вашими инструкциями, используя команду " файл> экспорт "в меню. Это, наверное, лучший вариант: спасибо! –

Смежные вопросы