Next: Командная строка, Previous: Работа с ошибками, Up: Top [Contents][Index]
| • Lisp и Maxima: | ||
| • Сборка мусора: | ||
| • Документация: | ||
| • Справочная система: |
Next: Сборка мусора, Previous: Справка, Up: Справка [Contents][Index]
Maxima написана на Lisp, поэтому легко получить доступ к Lisp функциям и переменным из Maxima и наоборот.
Lisp и Maxima символы различают с помощью соглашения об именах.
Lisp символ, который начинается со знака $ соответствует Maxima символу
без знака доллара.
Maxima символ, который начинается со знака ? соответствует
Lisp символу без знака вопроса.
Например, Maxima символ foo соответствует Lisp символу $foo,
в то время как Maxima символ ?foo соответствует Lisp символу foo,
Заметим, что ?foo записано без пробелов между ? и foo;
иначе можно перепутать с describe ("foo").
-, *, и другие специальные знаки в Lisp символах
должны быть экранированы \ везде, где они появляются в коде Maxima.
Например, Lisp идентификатор *foo-bar* записывается как ?\*foo\-bar\* в Maxima.
Lisp код может быть выполнен из Maxima сессии. Простая строка с Lisp кодом
(содержащая одну и более форм) может быть выполнена с помощью специальной
команды :lisp. Например,
(%i1) :lisp (foo $x $y)
вызывает Lisp функцию foo с Maxima переменными x и y в качестве аргументов.
:lisp конструкция может появляться в интерактивном приглашении
или в файле, исполняемом командой batch или demo,
но только не в файле исполняемом командами load, batchload,
translate_file, или compile_file.
Функция to_lisp() открывает интегративную Lisp сессию.
Ввод (to-maxima) закрывает Lisp сессию и возвращает к Maxima.
Lisp функции и переменные, которые, как известно, видны в Maxima как
функции и переменные с обычными именами (без специальной пунктуации)
должны иметь Lisp имена, начинающиеся со знака $.
Maxima чувствительна к регистру символов, различая буквы в нижнем и верхнем регистрах, в идентификаторах, в то время как Lisp - нет. Существуют некоторые правила, управляющие переводом имен между Lisp и Maxima.
$foo, $FOO, и $Foo - все соответствуют Maxima foo.
|$FOO| и |$foo|
соответствуют Maxima foo и FOO, в указанном порядке.
|$Foo| соответствует Maxima Foo.
#$ Lisp макрооператор позволяет использовать Maxima выражения в Lisp коде.
#$expr$ превращается в Lisp выражение, эквивалентное Maxima выражению expr.
(msetq $foo #$[x, y]$)
Это имеет тот же самый эффект как при вводе:
(%i1) foo: [x, y];
Lisp функция displa печатает выражение в Maxima форме.
(%i1) :lisp #$[x, y, z]$ ((MLIST SIMP) $X $Y $Z) (%i1) :lisp (displa '((MLIST SIMP) $X $Y $Z)) [x, y, z] NIL
Функции, заданные в Maxima не являются обычными Lisp функциями.
Lisp функция mfuncall вызывает Maxima функцию.
Например:
(%i1) foo(x,y) := x*y$ (%i2) :lisp (mfuncall '$foo 'a 'b) ((MTIMES SIMP) A B)
Некоторые Lisp функции скрыты в Maxima пакете, а именно такие как:
complement,
continue,
//,
float,
functionp,
array,
exp,
listen,
signum,
atan,
asin,
acos,
asinh,
acosh,
atanh,
tanh,
cosh,
sinh,
tan,
break
и gcd.
Next: Документация, Previous: Lisp и Maxima, Up: Справка [Contents][Index]
Вычисление в символьном виде имеют тенденцию создавать много “мусора”, и эффективное управление этим мусором может стать решающим для успешного выполнения некоторых программ.
Под GCL, на UNIX системах, где доступны вызовы системы “mprotect”, (включая SUN OS 4.0 и некоторые версии BSD) доступна прямая сборка мусора. Это ограничивает сборку страницами, в которые недавно производилась запись. См. документацию по GCL по ключевым словам ALLOCATE и GBC. На уровне Lisp, установка (setq si::*notify-gbc* t) поможет вам определить, какие области памяти, возможно, требуют больше пространства.
Next: Справочная система, Previous: Сборка мусора, Up: Справка [Contents][Index]
Руководство пользователя Maxima можно просматривать в различных форматах.
Из интерактивного приглашения Maxima, руководство пользователя
просматривается как обычный текст командой ? (то есть, функция describe).
Руководство пользователя просматривается как info гипертекст с помощью info
просмотрщиком и как веб-страница с помощью обычного веб-браузера.
example показывает примеры для многих Maxima функций.
Например,
(%i1) example (integrate);
дает
(%i2) test(f):=block([u],u:integrate(f,x),ratsimp(f-diff(u,x)))
(%o2) test(f) := block([u], u : integrate(f, x),
ratsimp(f - diff(u, x)))
(%i3) test(sin(x))
(%o3) 0
(%i4) test(1/(x+1))
(%o4) 0
(%i5) test(1/(x^2+1))
(%o5) 0
и дополнительный вывод.
Previous: Документация, Up: Справка [Contents][Index]
вычисляет Maxima выражения в filename и показывает результаты.
demo останавливается после вычислений каждого выражения
и продолжает после того, как пользователь нажмет “Enter”.
(Если запущена Xmaxima, demo необходимо перед вводом
ставить ;).
demo просматривает список директорий
file_search_demo, чтобы найти filename.
Если файл имеет расширение dem, то его можно опустить.
См. также file_search.
demo вычисляет свои аргументы.
demo возвращает имя демонстрационного файла.
Пример:
(%i1) demo ("disol");
batching /home/wfs/maxima/share/simplification/disol.dem
At the _ prompt, type ';' followed by enter to get next demo
(%i2) load("disol")
_
(%i3) exp1 : a (e (g + f) + b (d + c))
(%o3) a (e (g + f) + b (d + c))
_
(%i4) disolate(exp1, a, b, e)
(%t4) d + c
(%t5) g + f
(%o5) a (%t5 e + %t4 b)
_
(%i5) demo ("rncomb");
batching /home/wfs/maxima/share/simplification/rncomb.dem
At the _ prompt, type ';' followed by enter to get next demo
(%i6) load("rncomb")
_
z x
(%i7) exp1 : ----- + ---------
y + x 2 (y + x)
z x
(%o7) ----- + ---------
y + x 2 (y + x)
_
(%i8) combine(exp1)
z x
(%o8) ----- + ---------
y + x 2 (y + x)
_
(%i9) rncombine(%)
2 z + x
(%o9) ---------
2 (y + x)
_
d c b a
(%i10) exp2 : - + - + - + -
3 3 2 2
d c b a
(%o10) - + - + - + -
3 3 2 2
_
(%i11) combine(exp2)
2 d + 2 c + 3 (b + a)
(%o11) ---------------------
6
_
(%i12) rncombine(exp2)
2 d + 2 c + 3 b + 3 a
(%o12) ---------------------
6
_
(%i13)
describe(string) эквивалентно describe(string, exact).
describe(string, exact) ищет элемент, с заголовком равным
(независимо от регистра) string, если такой элемент есть.
describe(string, inexact) ищет все документированные элементы,
которые содержат string в своих заголовках.
Если есть более чем один такой элемент, Maxima спросит пользователя выбрать
элемент или несколько элементов для отображения.
В интерактивном приглашении, ? foo (с пробелом между ? и foo)
эквивалентно describe("foo", exact), и ?? foo эквивалентно
describe("foo", inexact).
describe("", inexact) дает список всех тем, документированных в руководстве пользователя.
describe не вычисляет свой аргумент.
describe возвращает true если документация найдена, false в противном случае.
См. также Документация.
Пример:
(%i1) ?? integ
0: Functions and Variables for Elliptic Integrals
1: Functions and Variables for Integration
2: Introduction to Elliptic Functions and Integrals
3: Introduction to Integration
4: askinteger (Functions and Variables for Simplification)
5: integerp (Functions and Variables for Miscellaneous Options)
6: integer_partitions (Functions and Variables for Sets)
7: integrate (Functions and Variables for Integration)
8: integrate_use_rootsof (Functions and Variables for
Integration)
9: integration_constant_counter (Functions and Variables for
Integration)
10: nonnegintegerp (Functions and Variables for linearalgebra)
Enter space-separated numbers, `all' or `none': 7 8
-- Function: integrate (<expr>, <x>)
-- Function: integrate (<expr>, <x>, <a>, <b>)
Attempts to symbolically compute the integral of <expr> with
respect to <x>. `integrate (<expr>, <x>)' is an indefinite
integral, while `integrate (<expr>, <x>, <a>, <b>)' is a
definite integral, [...]
-- Option variable: integrate_use_rootsof
Default value: `false'
When `integrate_use_rootsof' is `true' and the denominator of
a rational function cannot be factored, `integrate' returns
the integral in a form which is a sum over the roots (not yet
known) of the denominator.
[...]
В этом примере, были выбраны элементы 7 и 8
(вывод команды сокращен, что обозначено [...]).
Все элементы или ни один из элементов могут быть выбраны при помощи all
или none, что можно также сократить до a и n соотвественно.
example (topic) показывает некоторые примеры для символа topic (не строки).
Большинство topic являются именами функций.
example () возвращает список всех доступных topic.
Имя файла содержащего эти примеры задано глобальной переменной manual_demo,
которая исходно равна "manual.demo".
example не вычисляет свой аргумент.
example возвращает done
только если нет ошибки или отсутствия аргумента.
example возвращает список всех подходящих тем.
Примеры:
(%i1) example (append); (%i2) append([x+y,0,-3.2],[2.5E+20,x]) (%o2) [y + x, 0, - 3.2, 2.5E+20, x] (%o2) done (%i3) example (coeff); (%i4) coeff(b+tan(x)+2*a*tan(x) = 3+5*tan(x),tan(x)) (%o4) 2 a + 1 = 5 (%i5) coeff(1+x*%e^x+y,x,0) (%o5) y + 1 (%o5) done
Previous: Документация, Up: Справка [Contents][Index]