Previous: Введение в командную строку, Up: Командная строка [Contents][Index]
создает альтернативное имя для пользовательской или системной функции, переменной, массива и т.п. Данная функция может иметь любое число парных аргументов.
Значение по умолчанию: false
Если во время работы Maxima возникла ошибка, Maxima запускает отладчик
если значение переключателя debugmode
равно true
.
В отладчике пользователь может исследовать значения стека, установить
точки останова, просматривать код и т.д. См. debugging
для списка команд отладчика.
Отладчик Maxima, включаемый с помощью debugmode
, не
обрабатывает ошибки на уровне Lisp.
Вычисляет выражение expr в окружении определяемом аргументами
arg_1, ..., arg_n. Данные аргументы могут быть
переключателями (логические флаги), присваиваниями, уравнениями и функциями.
ev
возвращает результат вычисления (выражение).
Вычисление осуществляется в несколько шагов.
simp
вызывает упрощение выражения expr вне зависимости
от текущего значения переключателя simp
(отключает упрощение
если равен false
).
noeval
отключает вычисление для данной стадии ev
(см. шаг (4) ниже). Это может быть полезно в комбинации с другими
переключателями и вызывает повторное упрощение expr без
перевычисления.
nouns
вызывает вычисление невычисляемых (noun) форм
(обычно это невычисляемые функции, такие как 'integrate
или 'diff
) в expr.
expand
вызывает раскрытие скобок.
expand (m,n)
вызывает раскрытие скобок при maxposex
и
maxnegex
равным m и n соответственно.
detout
при вычислении обратных матриц в expr, сохраняет
определитель матрицы как общий множитель вместо того чтобы делить
на него каждый элемент матрицы в отдельности.
diff
вызывает вычисление всех производных в expr.
derivlist (x, y, z, ...)
вызовет вычисление
производных только относительно указанных переменных.
float
вызывает преобразование нецелых рациональных чисел
в числа с плавающей точкой.
numer
вызывает численное вычисление математических
функций (включая экспоненты), имеющих числовые аргументы. Вызывает
замену переменных, имеющих числовые значения (см. numerval
), этими
значениями. Устанавливает значение переключателя float
равным true
.
pred
вызывает вычисление предикатов (выражений, значение
которых true
или false
).
eval
вызывает дополнительное пост-вычисление expr
(см. шаг (5) ниже).
eval
может встречаться несколько раз.
Для каждого eval
выражение вычисляется еще раз.
A
, где A
есть атом, являющийся флагом вычисления (см. evflag
),
устанавливает значение A
равным true
в процессе
вычисления expr.
V: expression
(или альтернативно V=expression
)
присваивает V
значение expression
в процессе вычисления
expr. Если V
является управляющей переменной (опцией)
Maxima, тогда значение expression
используется в качестве
значения опции в процессе вычисления expr. Если имеется более
одного аргумента ev
данного типа, то присваивание осуществляется
параллельно. Если V
является не атомарным выражением, то
вместо присваивания осуществляется подстановка.
F
, где F
есть имя функции, являющейся функцией
вычисления (см. evfun
) вызывает применение F
к expr.
sum
) вызывают вычисление
этих функций в expr, так как если бы они имели
вычисляемую форму.
F(x)
)
может быть локально определена для вычисления expr, путем
задания аргумента в форме F(x) := expression
.
ev
. Это, в частности, позволяет использовать список
уравнений (например [X=1, Y=A**2]
), или список имен
уравнений (например [%t1, %t2]
, где %t1
и
%t2
являются результатом работы функции solve
.
Аргументы ev
могут быть указаны в произвольном порядке за
исключением уравнений, которые выполняются последовательно слева
направо, и составных вычисляющих функций (например
ev (expr, ratsimp, realpart)
выполняется как
realpart (ratsimp (expr))
).
Переключатели simp
, numer
, float
и pred
могут быть установлены локально в блоке, или глобально.
В последнем случае они будут действовать до переопределения.
Если выражение expr является каноническим рациональным
выражением (КРВ, canonical rational expression (CRE)), тогда
результатом ev
тоже является КРВ, если только переключатели
numer
и float
оба не равны true
.
%
(как %i2
в примере ниже), так что на данном шаге
просто получается выражение, обозначаемое данной меткой.
noeval
) и упрощается в соответствии с заданными
аргументами. Все вызовы функций в expr выполняются после
вычисления переменных. Таким образом ev(F(x))
трактуется
как F(ev(x))
.
eval
, шаги (3) и (4) повторяются.
Примеры:
(%i1) sin(x) + cos(y) + (w+1)^2 + 'diff (sin(w), w); d 2 (%o1) cos(y) + sin(x) + -- (sin(w)) + (w + 1) dw (%i2) ev (%, sin, expand, diff, x=2, y=1); 2 (%o2) cos(w) + w + 2 w + cos(1) + 1.909297426825682
Имеется альтернативный синтаксис функции ev
, который может
использоваться только на верхнем уровне: аргументы ev()
перечисляются через запятую после выражения. Т.е. можно просто
написать
expr, arg_1, ..., arg_n
Такая конструкция недопустима как часть другого выражения, функции, блока и т.п.
Обратите внимание на параллельное присваивание в следующих примерах.
(%i3) programmode: false; (%o3) false (%i4) x+y, x: a+y, y: 2; (%o4) y + a + 2 (%i5) 2*x - 3*y = 3$ (%i6) -3*x + 2*y = -4$ (%i7) solve ([%o5, %o6]); Solution 1 (%t7) y = - - 5 6 (%t8) x = - 5 (%o8) [[%t7, %t8]] (%i8) %o6, %o8; (%o8) - 4 = - 4 (%i9) x + 1/x > gamma (1/2); 1 (%o9) x + - > sqrt(%pi) x (%i10) %, numer, x=1/2; (%o10) 2.5 > 1.772453850905516 (%i11) %, pred; (%o11) true
Если символ x имеет свойство evflag
,
то выражения ev(expr, x)
и expr, x
(в интерактивной командной строке) эквивалентны ev(expr, x = true)
.
Т.е. x имеет значение true
в процессе вычисления expr.
Выражение declare(x, evflag)
устанавливает свойство evflag
для переменной x.
Следующие переключатели имеют по умолчанию свойство evflag
:
algebraic
,
cauchysum
,
demoivre
,
dotscrules
,
%emode
,
%enumer
,
exponentialize
,
exptisolate
,
factorflag
,
float
,
halfangles
,
infeval
,
isolate_wrt_times
,
keepfloat
,
letrat
,
listarith
,
logabs
,
logarc
,
logexpand
,
lognegint
,
lognumer
,
m1pbranch
,
numer_pbranch
,
programmode
,
radexpand
,
ratalgdenom
,
ratfac
,
ratmx
,
ratsimpexpons
,
simp
,
simpsum
,
sumexpand
и
trigexpand
.
Примеры:
(%i1) sin (1/2); 1 (%o1) sin(-) 2 (%i2) sin (1/2), float; (%o2) 0.479425538604203 (%i3) sin (1/2), float=true; (%o3) 0.479425538604203 (%i4) simp : false; (%o4) false (%i5) 1 + 1; (%o5) 1 + 1 (%i6) 1 + 1, simp; (%o6) 2 (%i7) simp : true; (%o7) true (%i8) sum (1/k^2, k, 1, inf); inf ==== \ 1 (%o8) > -- / 2 ==== k k = 1 (%i9) sum (1/k^2, k, 1, inf), simpsum; 2 %pi (%o9) ---- 6 (%i10) declare (aa, evflag); (%o10) done (%i11) if aa = true then YES else NO; (%o11) NO (%i12) if aa = true then YES else NO, aa; (%o12) YES
Если функция F имеет свойство evfun
,
то выражения ev(expr, F)
и expr, F
(в интерактивной командной строке)
эквивалентны F(ev(expr))
.
Если заданы две или более evfun
функций F, G, то
функции применяются в порядке задания.
Выражение declare(F, evfun)
устанавливает свойство evfun
для функции F.
Следующие функции имеют по умолчанию свойство evfun
:
bfloat
,
factor
,
fullratsimp
,
logcontract
,
polarform
,
radcan
,
ratexpand
,
ratsimp
,
rectform
,
rootscontract
,
trigexpand
и
trigreduce
.
Примеры:
(%i1) x^3 - 1; 3 (%o1) x - 1 (%i2) x^3 - 1, factor; 2 (%o2) (x - 1) (x + x + 1) (%i3) factor (x^3 - 1); 2 (%o3) (x - 1) (x + x + 1) (%i4) cos(4 * x) / sin(x)^4; cos(4 x) (%o4) -------- 4 sin (x) (%i5) cos(4 * x) / sin(x)^4, trigexpand; 4 2 2 4 sin (x) - 6 cos (x) sin (x) + cos (x) (%o5) ------------------------------------- 4 sin (x) (%i6) cos(4 * x) / sin(x)^4, trigexpand, ratexpand; 2 4 6 cos (x) cos (x) (%o6) - --------- + ------- + 1 2 4 sin (x) sin (x) (%i7) ratexpand (trigexpand (cos(4 * x) / sin(x)^4)); 2 4 6 cos (x) cos (x) (%o7) - --------- + ------- + 1 2 4 sin (x) sin (x) (%i8) declare ([F, G], evfun); (%o8) done (%i9) (aa : bb, bb : cc, cc : dd); (%o9) dd (%i10) aa; (%o10) bb (%i11) aa, F; (%o11) F(cc) (%i12) F (aa); (%o12) F(bb) (%i13) F (ev (aa)); (%o13) F(cc) (%i14) aa, F, G; (%o14) G(F(cc)) (%i15) G (F (ev (aa))); (%o15) G(F(cc))
Включает режим "бесконечного вычисления". ev
вычисляет
выражение повторно до тех пор пока оно не перестает изменяться.
Чтобы предотвратить вычисление отдельной переменной, скажем X
,
в данном режиме следует указать X='X
в качестве
аргумента ev
. Разумеется, выражения вроде
ev (X, X=X+1, infeval)
приводят к бесконечному циклу.
Удаляет все связи (значение, функцию, массив или правило) аргументов a_1, ..., a_n.
Аргумент a_k может быть символом или отдельным элементом массива.
Если a_k является отдельным элементом массива, то kill
удаляет
значение одного этого элемента и не затрагивает другие элементы массива.
Распознается несколько специальных форм аргументов. При
этом аргументы различных типов могут быть скомбинированы,
например kill (inlabels, functions, allbut (foo, bar))
.
kill (labels)
очищает значение меток ввода,
результата и меток промежуточных выражений, определенных на момент вызова.
kill (inlabels)
очищает значение меток ввода, имена которых
начинаются с текущего значения inchar
.
Аналогично,
kill (outlabels)
очищает значение меток результата, имена которых
начинаются с текущего значения outchar
,
и kill (linelabels)
очищает значение меток промежуточных
выражений, имена которых начинаются с текущего значения linechar
.
kill (n)
, где n является целым числом,
очищает значение n первых меток ввода и результата.
kill ([m, n])
очищает метки ввода и результата
с номерами от m до n включительно.
kill (infolist)
, где infolist есть один из
информационных списков infolists
(например values
, functions
или arrays
), очищает значение всех элементов в
infolist. См. также infolists
.
kill (all)
очищает значения всех элементов во всех
информационных списках (infolists).
kill (all)
не восстанавливает стандартные значения глобальных
переменных. См. reset
по поводу восстановления стандартных
значений глобальных переменных.
kill (allbut (a_1, ..., a_n))
очищает все элементы во всех информационных списках кроме a_1, ..., a_n.
kill (allbut (infolist))
очищает все элементы кроме тех,
которые принадлежат информационному списку infolist,
где infolist есть values
, functions
, arrays
и т.д.
Отметим, что для освобождения памяти, занимаемой значением символа, необходимо очистить все объекты ссылающиеся на это значение. Необходимо не только очистить сам символ, но и результирующую метку указывающую на его значение.
Функция kill
не вычисляет свои аргументы.
Для их вычисления можно использовать оператор кавычка-кавычка ''
.
kill (symbol)
очищает все свойства символа symbol в
отличии от remvalue
, remfunction
, remarray
и
remrule
, которые очищают только определенное свойство.
kill
всегда возвращает done
даже если аргументы не имели
значения.
Возвращает список меток ввода, результата или меток промежуточных
выражений, имена которых начинаются с символа symbol.
Обычно symbol это значение inchar
, outchar
или linechar
.
Значение symbol может быть указано с или без знака процента,
например i
и %i
дадут одинаковый результат.
Если ни одна из меток не начинается с symbol, то возвращается пустой список.
Функция labels
не вычисляет свои аргументы.
Для их вычисления можно использовать оператор кавычка-кавычка ''
.
Например, labels (''inchar)
возвращает список меток ввода,
имена которых начинаются с текущего значения символа ввода.
Переменная labels
есть список всех меток ввода, результата и
меток промежуточных выражений, включая все предыдущие метки если
значение inchar
, outchar
или linechar
изменялось.
По умолчанию Maxima выводит результат каждого входного выражения
присваивая ему результирующую метку. Печать результата можно подавить
используя для окончания выражения символ $
вместо обычного
;
. В этом случае метка результата создается но сам
результат вычисления не печатается. Тем не менее значение
метки результата запоминается и в дальнейшем может быть
использовано как обычно. См. также %
, %%
и %th
.
Метки промежуточных выражений создаются некоторыми функциями.
Переключатель programmode
определяет будет ли команда
solve
, и некоторые другие функции, создавать промежуточные
метки или возвращать список выражений. Некоторые другие функции,
такие как ldisplay
, всегда создают метки промежуточных
выражений.
См. также inchar
, outchar
, linechar
и infolists
.
Порядковый номер текущей пары входного и результирующего выражений.
Значение по умолчанию: []
myoptions
есть список всех переключателей (флагов) переопределенных
пользователем вне зависимости от того имеет ли в данный момент
переключатель значение по умолчанию или нет.
Значение по умолчанию: false
Если nolabels
равна true
,
то метки ввода и результата
(%i
и %o
, соответственно)
печатаются но результирующее значение
этим меткам не присваивается а сами метки не
добавляются к списку labels
.
Поскольку результаты вычислений не
присваиваются меткам, то сборщик мусора
может освободить занимаемую ими память
для дальнейшего использования.
В противном случае меткам ввода и меткам результата присваиваются
соответствующие значения а сами метки добавляются к списку labels
.
Флаг nolabels
не влияет на метки промежуточных выражений (%t
).
Независимо от значения nolabels
равного true
или false
,
меткам промежуточных выражений присваиваются значение и они
добавляются к списку labels
.
См. также batch
, load
и labels
.
Значение по умолчанию: false
Если optionset
равно true
, Maxima печатает сообщение
при изменении значения любого переключателя (опция, флаг) Maxima.
Это может быть полезно, когда пользователь не уверен в написании
названия опции и хочет быть уверен, что он переопределил
значение правильной переменной.
Выводит значения входных, результирующих и промежуточных
выражений без их перевычисления.
playback
выводит только выражения связанные с метками –
любой другой вывод (текст выведенный print
или describe
,
сообщения об ошибках) не отображается.
См. также labels
.
Функция playback
не вычисляет свои аргументы.
Для их вычисления можно использовать оператор кавычка-кавычка ''
.
playback
возвращает значение done
.
playback ()
(без аргументов) печатает все входные, результирующие и
промежуточные выражения. Результирующие выражения печатаются даже в случае,
когда во время первоначальных вычислений использовался $
для
подавления печати результата.
playback (n)
печатает n последних выражений.
Каждое входное, результирующее и промежуточное выражение
считается за одно.
playback ([m, n])
печатает входные, результирующие
и промежуточные выражения с номерами от m до n включительно.
playback ([m])
эквивалентно
playback ([m, m])
и обычно печатает
одну пару из входного и результирующего выражений.
playback (input)
печатает все входные выражения.
playback (slow)
останавливается между выражениями и
ожидает пока пользователь нажмет "ввод" (enter
).
Данное поведение аналогично команде demo
.
playback (slow)
полезно в сочетании с save
или
stringout
для выбора выражений, которые надо
сохранить в файле.
playback (time)
показывает время вычисления для каждого выражения.
playback (grind)
печатает входные выражения в
формате функции grind
. На результирующие выражения
данная опция не влияет. См. grind
.
Аргументы функции playback
могут быть скомбинированы,
например playback ([5, 10], grind, time, slow)
.
Печатает свойство с именем i, ассоциированное с атомом
a. a может быть списком атомов или all
.
В последнем случае будут использованы все атомы имеющие данное свойство.
Например, printprops ([f, g], atvalue)
. Функция
printprops
предназначена для свойств, которые не могут быть
отображены другим способом, например для
atvalue
, atomgrad
, gradef
и matchdeclare
.
Значение по умолчанию: _
prompt
символ приглашения для функции demo
,
playback (slow)
и диалога прерывания Maxima (break loop)
(см. break
).
Завершает сессию Maxima.
Команда должна быть введена именно как quit();
или quit()$
,
а не просто quit
.
Для прерывания длительных вычислений можно нажать control-C
.
При этом по умолчанию Maxima возвращается на верхний уровень к
приглашению ввода следующей команды.
Если значение Lisp-переменной *debugger-hook*
равно nil
,
тогда нажатие control-C
запускает Lisp отладчик.
См. также debugging
.
Удаляет определенные пользователем функции f_1, ..., f_n.
Аргументы могут быть именами обычных функций, созданных при помощи
:=
или define
, или макро функций, созданных при помощи
::=
.
remfunction (all)
– удаляет все определенные пользователем
функции.
remfunction
не вычисляет свои аргументы.
remfunction
возвращает список символов, для которых
было удалено определение функции. Для символов, у которых
не было соответствующих определений функций, возвращается
false
.
Функция remfunction
не применима к функциям массивам и переменным с индексом,
к этим типам функций применима remarray
.
Восстанавливает значения по умолчанию для глобальных переменных, опций и некоторых других переменных.
reset
восстанавливает значения переменных хранящихся в Lisp
списке *variable-initial-values*
.
Lisp макрос defmvar
добавляет переменные в этот список
(вместе с выполнением других действий). Многие, но не все,
глобальные переменные и опции определены с помощью defmvar
;
некоторые, определенные с помощью defmvar
переменные, не
являются глобальными переменными или опциями.
Значение по умолчанию: false
Если showtime
равно true
Maxima печатает время
вычисления для каждого результирующего выражения.
Время вычисления всегда запоминается, так что
time
и playback
могут показать
это время даже если showtime
равно false
.
См. также timer
.
Устанавливает статус feature в package.
После выполнения sstatus (feature, package)
,
status (feature, package)
возвращает true
.
Этот механизм может быть полезен при работе с пакетами для того, чтобы
иметь возможность проверять какие опции пакета загружены.
Запускает интерпретатор используемой Lisp системы.
Lisp функция (to-maxima)
возвращает на уровень командной
строки Maxima.
Sequentially read lisp forms from the string str and evaluate them. Any values produced from the last form are returned as a Maxima list.
Examples:
(%i1) eval_string_lisp (""); (%o1) []
(%i2) eval_string_lisp ("(values)"); (%o2) []
(%i3) eval_string_lisp ("69"); (%o3) [69]
(%i4) eval_string_lisp ("1 2 3"); (%o4) [3]
(%i5) eval_string_lisp ("(values 1 2 3)"); (%o5) [1,2,3]
(%i6) eval_string_lisp ("(defun $foo (x) (* 2 x))"); (%o6) [foo]
(%i7) foo (5); (%o7) 10
See also eval_string.
Начальное значение: []
values
содержит список всех пользовательских переменных, которым
присвоено значение (не Maxima опций и переключателей).
Этот список состоит из символов, которым было присвоено значение при
помощи операторов :
, ::
или :=
.
Previous: Введение в командную строку, Up: Командная строка [Contents][Index]