4 @c OriginalRevision=1.46
5 @c TranslatedBy: (c) 2005-12 Vadim V. Zhytnikov <vvzhyt@gmail.ru>
8 * Введение в командную строку::
9 * Функции и переменные для работы в командной строке::
12 @node Введение в командную строку, Функции и переменные для работы в командной строке, Командная строка, Командная строка
13 @section Введение в командную строку
16 @c THIS ITEM IS VERY IMPORTANT !!
19 @fnindex Оператор "одиночная кавычка"
21 Оператор "одиночная кавычка" @code{'} предотвращает вычисление,
22 иными словами "экранирует" свой аргумент.
24 Примененный к символу, оператор "одиночная кавычка" предотвращает
25 вычисление этого символа.
27 Примененный к вызову функции, оператор "одиночная кавычка"
28 предотвращает вычисление этой функции, но не вычисление
29 ее аргументов (если оно не предотвращено по другим причинам).
30 Результатом является невычисляемая (noun) форма вызова функции.
32 Примененный к выражению в скобках, предотвращает вычисление
33 всех функций и символов внутри скобок.
34 @c DUNNO IF THESE EXAMPLES ARE STILL NEEDED -- COVERED BY ITEMS UNDER "Examples"
35 Например, @code{'(f(x))} означает -- не вычислять выражение
36 @code{f(x)}, тогда как @code{'f(x)} (кавычка примененная к @code{f}
37 а не к @code{f(x)}) означает -- невычисляемая форма @code{f},
38 примененная к @code{[x]}.
40 Одиночная кавычка не предотвращает упрощение.
42 Когда глобальный флаг @code{noundisp} имеет значение @code{true},
43 невычисляемые формы функций выводятся с одиночной кавычкой.
44 Этот переключатель всегда установлен равным @code{true} при
45 печати определений функций.
47 См. также оператор "кавычка-кавычка" @code{''} и @code{nouns}.
51 Примененный к символу, оператор "одиночная кавычка" предотвращает
52 вычисление этого символа.
73 Примененный к вызову функции, оператор "одиночная кавычка"
74 предотвращает вычисление этой функции.
75 Результатом является невычисляемая форма вызова функции.
80 @c integrate (x^2, x, x0, x1);
81 @c 'integrate (x^2, x, x0, x1);
89 (%i3) integrate (x^2, x, x0, x1);
93 (%i4) 'integrate (x^2, x, x0, x1);
107 Примененный к выражению в скобках, предотвращает вычисление
108 всех функций и символов внутри скобок.
124 (%i4) '(sqrt(aa) + bb);
130 Одиночная кавычка не предотвращает упрощение.
133 @c sin (17 * %pi) + cos (17 * %pi);
134 @c '(sin (17 * %pi) + cos (17 * %pi));
137 (%i1) sin (17 * %pi) + cos (17 * %pi);
139 (%i2) '(sin (17 * %pi) + cos (17 * %pi));
143 @opencatbox{Категории:}
144 @category{Вычисление}
151 @fnindex Оператор "кавычка-кавычка"
153 Оператор "кавычка-кавычка" @code{'@w{}'} (две одиночные кавычки) изменяет
154 вычисление вводимого выражения.
156 Примененный к выражению общего вида @var{expr}, кавычка-кавычка вызывает подстановку значения @var{expr}
157 вместо @var{expr} в вводимом выражении.
159 Примененный к оператору в выражении,
160 кавычка-кавычка изменяет невычисляемую форму оператора на вычисляемую (если она не является таковой).
162 Оператор кавычка-кавычка применяется при синтаксическом анализе вводимого выражения
163 и не сохраняется как часть этого выражения.
164 Оператор кавычка-кавычка применяется сразу после распознавания и не
165 может быть экранирован.
167 Оператор кавычка-кавычка распознается функциями @code{batch} и @code{load}.
169 См. также оператор "кавычка" @code{'} и @code{nouns}.
173 Примененный к выражению общего вида @var{expr}, кавычка-кавычка вызывает подстановку значения @var{expr}
174 вместо @var{expr} в вводимом выражении.
177 @c expand ((a + b)^3);
180 @c [aa : cc, bb : dd, cc : 17, dd : 29];
181 @c foo_1 (x) := aa - bb * x;
185 @c foo_2 (x) := ''aa - ''bb * x;
187 @c [x0 : x1, x1 : x2, x2 : x3];
193 (%i1) expand ((a + b)^3);
195 (%o1) b + 3 a b + 3 a b + a
198 (%o2) [expand((b + a) ), b + 3 a b + 3 a b + a ]
201 (%o3) [expand((b + a) ), b + 3 a b + 3 a b + a ]
202 (%i4) [aa : cc, bb : dd, cc : 17, dd : 29];
203 (%o4) [cc, dd, 17, 29]
204 (%i5) foo_1 (x) := aa - bb * x;
205 (%o5) foo_1(x) := aa - bb x
210 (%i8) ''(foo_1 (10));
212 (%i9) foo_2 (x) := ''aa - ''bb * x;
213 (%o9) foo_2(x) := cc - dd x
216 (%i11) [x0 : x1, x1 : x2, x2 : x3];
226 Примененный к оператору в выражении,
227 кавычка-кавычка изменяет невычисляемую форму оператора на вычисляемую (если она не является таковой).
232 @c declare (foo, noun);
233 @c foo (x) := x - 1729;
241 (%o2) 0.8414709848079
242 (%i3) declare (foo, noun);
244 (%i4) foo (x) := x - 1729;
245 (%o4) ''foo(x) := x - 1729
252 Оператор кавычка-кавычка применяется при синтаксическом анализе вводимого выражения
253 и не сохраняется как часть этого выражения.
256 @c [aa : bb, cc : dd, bb : 1234, dd : 5678];
258 @c display (_, op (_), args (_));
260 @c display (_, op (_), args (_));
263 (%i1) [aa : bb, cc : dd, bb : 1234, dd : 5678];
264 (%o1) [bb, dd, 1234, 5678]
267 (%i3) display (_, op (_), args (_));
272 args(cc + aa) = [cc, aa]
277 (%i5) display (_, op (_), args (_));
282 args(dd + bb) = [dd, bb]
287 Оператор кавычка-кавычка вызывает вычисление в случаях когда оно
288 заблокировано, таких как определения функций, лямбда-выражения и выражения,
289 экранированные оператором кавычка @code{'}.
292 @c foo_1a (x) := ''(integrate (log (x), x));
293 @c foo_1b (x) := integrate (log (x), x);
294 @c dispfun (foo_1a, foo_1b);
295 @c integrate (log (x), x);
296 @c foo_2a (x) := ''%;
298 @c dispfun (foo_2a, foo_2b);
299 @c F : lambda ([u], diff (sin (u), u));
300 @c G : lambda ([u], ''(diff (sin (u), u)));
301 @c '(sum (a[k], k, 1, 3) + sum (b[k], k, 1, 3));
302 @c '(''(sum (a[k], k, 1, 3)) + ''(sum (b[k], k, 1, 3)));
305 (%i1) foo_1a (x) := ''(integrate (log (x), x));
306 (%o1) foo_1a(x) := x log(x) - x
307 (%i2) foo_1b (x) := integrate (log (x), x);
308 (%o2) foo_1b(x) := integrate(log(x), x)
309 (%i3) dispfun (foo_1a, foo_1b);
310 (%t3) foo_1a(x) := x log(x) - x
312 (%t4) foo_1b(x) := integrate(log(x), x)
315 (%i4) integrate (log (x), x);
317 (%i5) foo_2a (x) := ''%;
318 (%o5) foo_2a(x) := x log(x) - x
319 (%i6) foo_2b (x) := %;
321 (%i7) dispfun (foo_2a, foo_2b);
322 (%t7) foo_2a(x) := x log(x) - x
327 (%i8) F : lambda ([u], diff (sin (u), u));
328 (%o8) lambda([u], diff(sin(u), u))
329 (%i9) G : lambda ([u], ''(diff (sin (u), u)));
330 (%o9) lambda([u], cos(u))
331 (%i10) '(sum (a[k], k, 1, 3) + sum (b[k], k, 1, 3));
332 (%o10) sum(b , k, 1, 3) + sum(a , k, 1, 3)
334 (%i11) '(''(sum (a[k], k, 1, 3)) + ''(sum (b[k], k, 1, 3)));
335 (%o11) b + a + b + a + b + a
339 @opencatbox{Категории:}
340 @category{Вычисление}
345 @c end concepts Command Line
346 @node Функции и переменные для работы в командной строке, , Введение в командную строку, Командная строка
347 @section Функции и переменные для работы в командной строке
349 @c NEEDS WORK, ESPECIALLY EXAMPLES
350 @deffn {Функция} alias (@var{new_name_1}, @var{old_name_1}, ..., @var{new_name_n}, @var{old_name_n})
351 создает альтернативное имя для пользовательской или системной
352 функции, переменной, массива и т.п.
353 Данная функция может иметь любое число парных аргументов.
355 @opencatbox{Категории:}
356 @category{Факты и выводы}
360 @defvr {Управляющая переменная} debugmode
361 Значение по умолчанию: @code{false}
363 Если во время работы Maxima возникла ошибка, Maxima запускает отладчик
364 если значение переключателя @code{debugmode} равно @code{true}.
365 В отладчике пользователь может исследовать значения стека, установить
366 точки останова, просматривать код и т.д. См. @code{debugging}
367 для списка команд отладчика.
369 Отладчик Maxima, включаемый с помощью @code{debugmode}, не
370 обрабатывает ошибки на уровне Lisp.
371 @c DO WE WANT TO SAY MORE ABOUT DEBUGGING LISP ERRORS ???
372 @c I'M NOT CONVINCED WE WANT TO OPEN THAT CAN OF WORMS !!!
374 @opencatbox{Категории:}
376 @category{Глобальные флаги}
380 @c NEEDS CLARIFICATION
382 @deffn {Функция} ev (@var{expr}, @var{arg_1}, ..., @var{arg_n})
383 Вычисляет выражение @var{expr} в окружении определяемом аргументами
384 @var{arg_1}, ..., @var{arg_n}. Данные аргументы могут быть
385 переключателями (логические флаги), присваиваниями, уравнениями и функциями.
386 @code{ev} возвращает результат вычисления (выражение).
388 Вычисление осуществляется в несколько шагов.
392 Сначала окружение устанавливается в соответствии с аргументами,
393 которые могут быть одним из следующего:
397 @code{simp} вызывает упрощение выражения @var{expr} вне зависимости
398 от текущего значения переключателя @code{simp} (отключает упрощение
399 если равен @code{false}).
401 @code{noeval} отключает вычисление для данной стадии @code{ev}
402 (см. шаг (4) ниже). Это может быть полезно в комбинации с другими
403 переключателями и вызывает повторное упрощение @var{expr} без
406 @code{nouns} вызывает вычисление невычисляемых (noun) форм
407 (обычно это невычисляемые функции, такие как @code{'integrate}
408 или @code{'diff}) в @var{expr}.
410 @code{expand} вызывает раскрытие скобок.
412 @code{expand (@var{m},@var{n})} вызывает раскрытие скобок при @code{maxposex} и
413 @code{maxnegex} равным @var{m} и @var{n} соответственно.
415 @code{detout} при вычислении обратных матриц в @var{expr}, сохраняет
416 определитель матрицы как общий множитель вместо того чтобы делить
417 на него каждый элемент матрицы в отдельности.
419 @code{diff} вызывает вычисление всех производных в @var{expr}.
421 @code{derivlist (@var{x}, @var{y}, @var{z}, ...)} вызовет вычисление
422 производных только относительно указанных переменных.
424 @code{float} вызывает преобразование нецелых рациональных чисел
425 в числа с плавающей точкой.
427 @code{numer} вызывает численное вычисление математических
428 функций (включая экспоненты), имеющих числовые аргументы. Вызывает
429 замену переменных, имеющих числовые значения (см. @code{numerval}), этими
430 значениями. Устанавливает значение переключателя @code{float}
433 @code{pred} вызывает вычисление предикатов (выражений, значение
434 которых @code{true} или @code{false}).
436 @code{eval} вызывает дополнительное пост-вычисление @var{expr}
438 @code{eval} может встречаться несколько раз.
439 Для каждого @code{eval} выражение вычисляется еще раз.
441 @code{A}, где @code{A} есть атом, являющийся флагом вычисления (см. @code{evflag}),
442 устанавливает значение @code{A} равным @code{true} в процессе
443 вычисления @var{expr}.
445 @code{V: expression} (или альтернативно @code{V=expression})
446 присваивает @code{V} значение @code{expression} в процессе вычисления
447 @var{expr}. Если @code{V} является управляющей переменной (опцией)
448 Maxima, тогда значение @code{expression} используется в качестве
449 значения опции в процессе вычисления @var{expr}. Если имеется более
450 одного аргумента @code{ev} данного типа, то присваивание осуществляется
451 параллельно. Если @code{V} является не атомарным выражением, то
452 вместо присваивания осуществляется подстановка.
454 @code{F}, где @code{F} есть имя функции, являющейся функцией
455 вычисления (см. @code{evfun}) вызывает применение @code{F} к @var{expr}.
457 Любые другие имена функций (скажем @code{sum}) вызывают вычисление
458 этих функций в @var{expr}, так как если бы они имели
461 Кроме того, встречающаяся в @var{expr} функция (скажем @code{F(x)})
462 может быть локально определена для вычисления @var{expr}, путем
463 задания аргумента в форме @code{F(x) := expression}.
465 Если в качестве аргумента указан любой, не указанный выше атом, или
466 переменная с индексом, или выражение с индексом, то данный аргумент
467 вычисляется. Если результатом вычисления является уравнение или
468 присваивание, то выполняется соответствующее присваивание или
469 подстановка. Если результатом вычисления является список, то
470 элементы этого списка трактуются как дополнительные аргументы
471 @code{ev}. Это, в частности, позволяет использовать список
472 уравнений (например @code{[X=1, Y=A**2]}), или список имен
473 уравнений (например @code{[%t1, %t2]}, где @code{%t1} и
474 @code{%t2} являются результатом работы функции @code{solve}.
477 Аргументы @code{ev} могут быть указаны в произвольном порядке за
478 исключением уравнений, которые выполняются последовательно слева
479 направо, и составных вычисляющих функций (например
480 @code{ev (@var{expr}, ratsimp, realpart)} выполняется как
481 @code{realpart (ratsimp (@var{expr}))}).
483 Переключатели @code{simp}, @code{numer}, @code{float} и @code{pred}
484 могут быть установлены локально в блоке, или глобально.
485 В последнем случае они будут действовать до переопределения.
487 Если выражение @var{expr} является каноническим рациональным
488 выражением (КРВ, canonical rational expression (CRE)), тогда
489 результатом @code{ev} тоже является КРВ, если только переключатели
490 @code{numer} и @code{float} оба не равны @code{true}.
493 На шаге (1), составляется список не-индексированных
494 переменных входящих в левые части аргументов, являющихся уравнениями,
495 или в значения аргументов, если эти значения являются уравнениями.
496 Переменные (индексированные, которые не имеют соответствующих
497 функций массивов, и не-индексированные) в выражении @var{expr}
498 заменяются на свои глобальные значения, за исключением тех,
499 которые входят в вышеуказанный список. Обычно, @var{expr} это просто
500 метка @code{%} (как @code{%i2} в примере ниже), так что на данном шаге
501 просто получается выражение, обозначаемое данной меткой.
504 Если среди аргументов имеются подстановки, то они выполняются.
507 Полученное выражение снова вычисляется (если одним из аргументов не
508 является @code{noeval}) и упрощается в соответствии с заданными
509 аргументами. Все вызовы функций в @var{expr} выполняются после
510 вычисления переменных. Таким образом @code{ev(F(x))} трактуется
514 Для каждого @code{eval}, шаги (3) и (4) повторяются.
520 (%i1) sin(x) + cos(y) + (w+1)^2 + 'diff (sin(w), w);
522 (%o1) cos(y) + sin(x) + -- (sin(w)) + (w + 1)
524 (%i2) ev (%, sin, expand, diff, x=2, y=1);
526 (%o2) cos(w) + w + 2 w + cos(1) + 1.909297426825682
529 Имеется альтернативный синтаксис функции @code{ev}, который может
530 использоваться только на верхнем уровне: аргументы @code{ev()}
531 перечисляются через запятую после выражения. Т.е. можно просто
535 @var{expr}, @var{arg_1}, ..., @var{arg_n}
538 Такая конструкция недопустима как часть другого выражения,
539 функции, блока и т.п.
541 Обратите внимание на параллельное присваивание в следующих
545 (%i3) programmode: false;
547 (%i4) x+y, x: a+y, y: 2;
550 (%i6) -3*x + 2*y = -4$
551 (%i7) solve ([%o5, %o6]);
564 (%i9) x + 1/x > gamma (1/2);
566 (%o9) x + - > sqrt(%pi)
568 (%i10) %, numer, x=1/2;
569 (%o10) 2.5 > 1.772453850905516
574 @opencatbox{Категории:}
575 @category{Вычисление}
579 @defvr {Свойство} evflag
580 Если символ @var{x} имеет свойство @code{evflag},
581 то выражения @code{ev(@var{expr}, @var{x})} и @code{@var{expr}, @var{x}}
582 (в интерактивной командной строке) эквивалентны @code{ev(@var{expr}, @var{x} = true)}.
583 Т.е. @var{x} имеет значение @code{true} в процессе вычисления @var{expr}.
585 Выражение @code{declare(@var{x}, evflag)}
586 устанавливает свойство @code{evflag} для переменной @var{x}.
588 Следующие переключатели имеют по умолчанию свойство @code{evflag}:
589 @c FOLLOWING LIST CONSTRUCTED FROM LIST UNDER (prog1 '(evflag properties) ...)
590 @c NEAR LINE 2649 OF mlisp.lisp AT PRESENT (2004/11).
597 @code{exponentialize},
603 @code{isolate_wrt_times},
613 @code{numer_pbranch},
619 @code{ratsimpexpons},
630 @c sin (1/2), float=true;
635 @c sum (1/k^2, k, 1, inf);
636 @c sum (1/k^2, k, 1, inf), simpsum;
637 @c declare (aa, evflag);
638 @c if aa = true then YES else NO;
639 @c if aa = true then YES else NO, aa;
646 (%i2) sin (1/2), float;
647 (%o2) 0.479425538604203
648 (%i3) sin (1/2), float=true;
649 (%o3) 0.479425538604203
658 (%i8) sum (1/k^2, k, 1, inf);
666 (%i9) sum (1/k^2, k, 1, inf), simpsum;
671 (%i10) declare (aa, evflag);
673 (%i11) if aa = true then YES else NO;
675 (%i12) if aa = true then YES else NO, aa;
679 @opencatbox{Категории:}
680 @category{Флаги вычисления}
681 @category{Флаги и переменные упрощения}
685 @defvr {Свойство} evfun
686 Если функция @var{F} имеет свойство @code{evfun},
687 то выражения @code{ev(@var{expr}, @var{F})} и @code{@var{expr}, @var{F}}
688 (в интерактивной командной строке)
689 эквивалентны @code{@var{F}(ev(@var{expr}))}.
691 Если заданы две или более @code{evfun} функций @var{F}, @var{G}, то
692 функции применяются в порядке задания.
694 Выражение @code{declare(@var{F}, evfun)}
695 устанавливает свойство @code{evfun} для функции @var{F}.
697 Следующие функции имеют по умолчанию свойство @code{evfun}:
698 @c FOLLOWING LIST CONSTRUCTED FROM LIST UNDER (prog1 '(evfun properties) ...)
699 @c NEAR LINE 2643 IN mlisp.lisp AT PRESENT (2004/11).
709 @code{rootscontract},
719 @c cos(4 * x) / sin(x)^4;
720 @c cos(4 * x) / sin(x)^4, trigexpand;
721 @c cos(4 * x) / sin(x)^4, trigexpand, ratexpand;
722 @c ratexpand (trigexpand (cos(4 * x) / sin(x)^4));
723 @c declare ([F, G], evfun);
724 @c (aa : bb, bb : cc, cc : dd);
736 (%i2) x^3 - 1, factor;
738 (%o2) (x - 1) (x + x + 1)
739 (%i3) factor (x^3 - 1);
741 (%o3) (x - 1) (x + x + 1)
742 (%i4) cos(4 * x) / sin(x)^4;
747 (%i5) cos(4 * x) / sin(x)^4, trigexpand;
749 sin (x) - 6 cos (x) sin (x) + cos (x)
750 (%o5) -------------------------------------
753 (%i6) cos(4 * x) / sin(x)^4, trigexpand, ratexpand;
756 (%o6) - --------- + ------- + 1
759 (%i7) ratexpand (trigexpand (cos(4 * x) / sin(x)^4));
762 (%o7) - --------- + ------- + 1
765 (%i8) declare ([F, G], evfun);
767 (%i9) (aa : bb, bb : cc, cc : dd);
779 (%i15) G (F (ev (aa)));
783 @opencatbox{Категории:}
784 @category{Флаги вычисления}
788 @defvr {Управляющая переменная} infeval
789 Включает режим "бесконечного вычисления". @code{ev} вычисляет
790 выражение повторно до тех пор пока оно не перестает изменяться.
791 Чтобы предотвратить вычисление отдельной переменной, скажем @code{X},
792 в данном режиме следует указать @code{X='X} в качестве
793 аргумента @code{ev}. Разумеется, выражения вроде
794 @code{ev (X, X=X+1, infeval)} приводят к бесконечному циклу.
796 @opencatbox{Категории:}
797 @category{Флаги вычисления}
801 @c REVIEW FOR ACCURACY AND COMPLETENESS
802 @c THIS ITEM IS VERY IMPORTANT !!
804 @deffn {Функция} kill (@var{a_1}, ..., @var{a_n})
805 @deffnx {Функция} kill (labels)
806 @deffnx {Функция} kill (inlabels, outlabels, linelabels)
807 @deffnx {Функция} kill (@var{n})
808 @deffnx {Функция} kill ([@var{m}, @var{n}])
809 @deffnx {Функция} kill (values, functions, arrays, ...)
810 @deffnx {Функция} kill (all)
811 @deffnx {Функция} kill (allbut (@var{a_1}, ..., @var{a_n}))
813 Удаляет все связи (значение, функцию, массив или правило) аргументов @var{a_1}, ..., @var{a_n}.
814 Аргумент @var{a_k} может быть символом или отдельным элементом массива.
815 Если @var{a_k} является отдельным элементом массива, то @code{kill} удаляет
816 значение одного этого элемента и не затрагивает другие элементы массива.
818 Распознается несколько специальных форм аргументов. При
819 этом аргументы различных типов могут быть скомбинированы,
820 например @code{kill (inlabels, functions, allbut (foo, bar))}.
822 @code{kill (labels)} очищает значение меток ввода,
823 результата и меток промежуточных выражений, определенных на момент вызова.
824 @code{kill (inlabels)} очищает значение меток ввода, имена которых
825 начинаются с текущего значения @code{inchar}.
827 @code{kill (outlabels)} очищает значение меток результата, имена которых
828 начинаются с текущего значения @code{outchar},
829 и @code{kill (linelabels)} очищает значение меток промежуточных
830 выражений, имена которых начинаются с текущего значения @code{linechar}.
832 @code{kill (@var{n})}, где @var{n} является целым числом,
833 очищает значение @var{n} первых меток ввода и результата.
835 @code{kill ([@var{m}, @var{n}])} очищает метки ввода и результата
836 с номерами от @var{m} до @var{n} включительно.
838 @code{kill (@var{infolist})}, где @var{infolist} есть один из
839 информационных списков @code{infolists} (например @code{values}, @code{functions}
840 или @code{arrays}), очищает значение всех элементов в
841 @var{infolist}. См. также @code{infolists}.
843 @code{kill (all)} очищает значения всех элементов во всех
844 информационных списках (infolists).
845 @code{kill (all)} не восстанавливает стандартные значения глобальных
846 переменных. См. @code{reset} по поводу восстановления стандартных
847 значений глобальных переменных.
849 @code{kill (allbut (@var{a_1}, ..., @var{a_n}))}
850 очищает все элементы во всех информационных списках кроме @var{a_1}, ..., @var{a_n}.
851 @code{kill (allbut (@var{infolist}))} очищает все элементы кроме тех,
852 которые принадлежат информационному списку @var{infolist},
853 где @var{infolist} есть @code{values}, @code{functions}, @code{arrays}
856 Отметим, что для освобождения памяти, занимаемой значением символа,
857 необходимо очистить все объекты ссылающиеся на это значение.
858 Необходимо не только очистить сам символ, но и результирующую метку
859 указывающую на его значение.
861 Функция @code{kill} не вычисляет свои аргументы.
862 Для их вычисления можно использовать оператор кавычка-кавычка @code{'@w{}'}.
864 @code{kill (@var{symbol})} очищает все свойства символа @var{symbol} в
865 отличии от @code{remvalue}, @code{remfunction}, @code{remarray} и
866 @code{remrule}, которые очищают только определенное свойство.
868 @code{kill} всегда возвращает @code{done} даже если аргументы не имели
871 @opencatbox{Категории:}
872 @category{Вычисление}
873 @category{Управление сессией}
874 @category{Работа в консоли}
878 @deffn {Функция} labels (@var{symbol})
879 @deffnx {Системная переменная} labels
880 Возвращает список меток ввода, результата или меток промежуточных
881 выражений, имена которых начинаются с символа @var{symbol}.
882 Обычно @var{symbol} это значение @code{inchar}, @code{outchar} или @code{linechar}.
883 Значение @var{symbol} может быть указано с или без знака процента,
884 например @code{i} и @code{%i} дадут одинаковый результат.
886 Если ни одна из меток не начинается с @var{symbol}, то возвращается
889 Функция @code{labels} не вычисляет свои аргументы.
890 Для их вычисления можно использовать оператор кавычка-кавычка @code{'@w{}'}.
891 Например, @code{labels (''inchar)} возвращает список меток ввода,
892 имена которых начинаются с текущего значения символа ввода.
894 Переменная @code{labels} есть список всех меток ввода, результата и
895 меток промежуточных выражений, включая все предыдущие метки если
896 значение @code{inchar}, @code{outchar} или @code{linechar}
899 По умолчанию Maxima выводит результат каждого входного выражения
900 присваивая ему результирующую метку. Печать результата можно подавить
901 используя для окончания выражения символ @code{$} вместо обычного
902 @code{;}. В этом случае метка результата создается но сам
903 результат вычисления не печатается. Тем не менее значение
904 метки результата запоминается и в дальнейшем может быть
905 использовано как обычно. См. также @code{%}, @code{%%} и @code{%th}.
907 Метки промежуточных выражений создаются некоторыми функциями.
908 Переключатель @code{programmode} определяет будет ли команда
909 @code{solve}, и некоторые другие функции, создавать промежуточные
910 метки или возвращать список выражений. Некоторые другие функции,
911 такие как @code{ldisplay}, всегда создают метки промежуточных
914 См. также @code{inchar}, @code{outchar}, @code{linechar} и @code{infolists}.
916 @opencatbox{Категории:}
917 @category{Функции вывода}
918 @category{Флаги и переменные вывода}
919 @category{Работа в консоли}
923 @c EXPAND; SHOW WHAT HAPPENS WHEN linenum IS ASSIGNED A VALUE
924 @defvr {Системная переменная} linenum
925 Порядковый номер текущей пары входного и результирующего выражений.
928 @opencatbox{Категории:}
929 @category{Флаги и переменные вывода}
930 @category{Работа в консоли}
935 @defvr {Системная переменная} myoptions
936 Значение по умолчанию: @code{[]}
938 @code{myoptions} есть список всех переключателей (флагов) переопределенных
939 пользователем вне зависимости от того имеет ли в данный момент
940 переключатель значение по умолчанию или нет.
942 @opencatbox{Категории:}
943 @category{Глобальные переменные}
944 @category{Управление сессией}
945 @category{Работа в консоли}
949 @defvr {Управляющая переменная} nolabels
950 Значение по умолчанию: @code{false}
952 Если @code{nolabels} равна @code{true},
953 то метки ввода и результата
954 (@code{%i} и @code{%o}, соответственно)
955 печатаются но результирующее значение
956 этим меткам не присваивается а сами метки не
957 добавляются к списку @code{labels}.
958 Поскольку результаты вычислений не
959 присваиваются меткам, то сборщик мусора
960 может освободить занимаемую ими память
961 для дальнейшего использования.
963 В противном случае меткам ввода и меткам результата присваиваются
964 соответствующие значения а сами метки добавляются к списку @code{labels}.
966 Флаг @code{nolabels} не влияет на метки промежуточных выражений (@code{%t}).
967 Независимо от значения @code{nolabels} равного @code{true} или @code{false},
968 меткам промежуточных выражений присваиваются значение и они
969 добавляются к списку @code{labels}.
971 См. также @code{batch}, @code{load} и @code{labels}.
973 @opencatbox{Категории:}
974 @category{Глобальные флаги}
975 @category{Управление сессией}
980 @defvr {Управляющая переменная} optionset
981 Значение по умолчанию: @code{false}
983 Если @code{optionset} равно @code{true}, Maxima печатает сообщение
984 при изменении значения любого переключателя (опция, флаг) Maxima.
985 Это может быть полезно, когда пользователь не уверен в написании
986 названия опции и хочет быть уверен, что он переопределил
987 значение правильной переменной.
989 @opencatbox{Категории:}
990 @category{Глобальные флаги}
991 @category{Управление сессией}
992 @category{Работа в консоли}
996 @deffn {Функция} playback ()
997 @deffnx {Функция} playback (@var{n})
998 @deffnx {Функция} playback ([@var{m}, @var{n}])
999 @deffnx {Функция} playback ([@var{m}])
1000 @deffnx {Функция} playback (input)
1001 @deffnx {Функция} playback (slow)
1002 @deffnx {Функция} playback (time)
1003 @deffnx {Функция} playback (grind)
1004 Выводит значения входных, результирующих и промежуточных
1005 выражений без их перевычисления.
1006 @code{playback} выводит только выражения связанные с метками --
1007 любой другой вывод (текст выведенный @code{print} или @code{describe},
1008 сообщения об ошибках) не отображается.
1009 См. также @code{labels}.
1011 Функция @code{playback} не вычисляет свои аргументы.
1012 Для их вычисления можно использовать оператор кавычка-кавычка @code{'@w{}'}.
1013 @code{playback} возвращает значение @code{done}.
1015 @code{playback ()} (без аргументов) печатает все входные, результирующие и
1016 промежуточные выражения. Результирующие выражения печатаются даже в случае,
1017 когда во время первоначальных вычислений использовался @code{$} для
1018 подавления печати результата.
1020 @code{playback (@var{n})} печатает @var{n} последних выражений.
1021 Каждое входное, результирующее и промежуточное выражение
1024 @code{playback ([@var{m}, @var{n}])} печатает входные, результирующие
1025 и промежуточные выражения с номерами от @var{m} до @var{n} включительно.
1027 @code{playback ([@var{m}])} эквивалентно
1028 @code{playback ([@var{m}, @var{m}])} и обычно печатает
1029 одну пару из входного и результирующего выражений.
1031 @code{playback (input)} печатает все входные выражения.
1033 @code{playback (slow)} останавливается между выражениями и
1034 ожидает пока пользователь нажмет "ввод" (@code{enter}).
1035 Данное поведение аналогично команде @code{demo}.
1036 @c WHAT DOES THE FOLLOWING MEAN ???
1037 @code{playback (slow)} полезно в сочетании с @code{save} или
1038 @code{stringout} для выбора выражений, которые надо
1041 @code{playback (time)} показывает время вычисления для каждого выражения.
1042 @c DON'T BOTHER TO MENTION OBSOLETE OPTIONS !!!
1043 @c The arguments @code{gctime} and @code{totaltime} have the same effect as @code{time}.
1045 @code{playback (grind)} печатает входные выражения в
1046 формате функции @code{grind}. На результирующие выражения
1047 данная опция не влияет. См. @code{grind}.
1049 Аргументы функции @code{playback} могут быть скомбинированы,
1050 например @code{playback ([5, 10], grind, time, slow)}.
1051 @c APPEARS TO BE input INTERSECT (UNION OF ALL OTHER ARGUMENTS). CORRECT ???
1053 @opencatbox{Категории:}
1054 @category{Функции вывода}
1055 @category{Работа в консоли}
1059 @c NEEDS WORK ESPECIALLY EXAMPLES
1060 @c WHOLE BUSINESS WITH PROPERTIES IS PRETTY CONFUSING, TRY TO CLEAR IT UP
1061 @deffn {Функция} printprops (@var{a}, @var{i})
1062 @deffnx {Функция} printprops ([@var{a_1}, ..., @var{a_n}], @var{i})
1063 @deffnx {Функция} printprops (all, @var{i})
1064 Печатает свойство с именем @var{i}, ассоциированное с атомом
1065 @var{a}. @var{a} может быть списком атомов или @code{all}.
1066 В последнем случае будут использованы все атомы имеющие данное свойство.
1067 Например, @code{printprops ([f, g], atvalue)}. Функция
1068 @code{printprops} предназначена для свойств, которые не могут быть
1069 отображены другим способом, например для
1070 @code{atvalue}, @code{atomgrad}, @code{gradef} и @code{matchdeclare}.
1072 @opencatbox{Категории:}
1073 @category{Факты и выводы}
1074 @category{Функции вывода}
1078 @defvr {Управляющая переменная} prompt
1079 Значение по умолчанию: @code{_}
1081 @code{prompt} символ приглашения для функции @code{demo},
1082 @code{playback (slow)} и диалога прерывания Maxima (break loop)
1085 @opencatbox{Категории:}
1086 @category{Глобальные переменные}
1087 @category{Работа в консоли}
1091 @deffn {Функция} quit ()
1092 Завершает сессию Maxima.
1093 Команда должна быть введена именно как @code{quit();} или @code{quit()$},
1094 а не просто @code{quit}.
1096 Для прерывания длительных вычислений можно нажать @code{control-C}.
1097 При этом по умолчанию Maxima возвращается на верхний уровень к
1098 приглашению ввода следующей команды.
1099 Если значение Lisp-переменной @code{*debugger-hook*} равно @code{nil},
1100 тогда нажатие @code{control-C} запускает Lisp отладчик.
1101 См. также @code{debugging}.
1103 @opencatbox{Категории:}
1104 @category{Работа в консоли}
1108 @deffn {Функция} remfunction (@var{f_1}, ..., @var{f_n})
1109 @deffnx {Функция} remfunction (all)
1110 @c REPHRASE THIS TO SAY "UNBIND" OR SOMETHING OTHER THAN "REMOVE" (LATTER IS AMBIGUOUS) !!!
1111 Удаляет определенные пользователем функции @var{f_1}, ..., @var{f_n}.
1112 Аргументы могут быть именами обычных функций, созданных при помощи
1113 @code{:=} или @code{define}, или макро функций, созданных при помощи
1116 @code{remfunction (all)} -- удаляет все определенные пользователем
1119 @code{remfunction} не вычисляет свои аргументы.
1121 @code{remfunction} возвращает список символов, для которых
1122 было удалено определение функции. Для символов, у которых
1123 не было соответствующих определений функций, возвращается
1126 Функция @code{remfunction} не применима к функциям массивам и переменным с индексом,
1127 к этим типам функций применима @code{remarray}.
1129 @opencatbox{Категории:}
1130 @category{Определение функций}
1134 @deffn {Функция} reset ()
1135 Восстанавливает значения по умолчанию для глобальных переменных,
1136 опций и некоторых других переменных.
1138 @code{reset} восстанавливает значения переменных хранящихся в Lisp
1139 списке @code{*variable-initial-values*}.
1140 Lisp макрос @code{defmvar} добавляет переменные в этот список
1141 (вместе с выполнением других действий). Многие, но не все,
1142 глобальные переменные и опции определены с помощью @code{defmvar};
1143 некоторые, определенные с помощью @code{defmvar} переменные, не
1144 являются глобальными переменными или опциями.
1146 @opencatbox{Категории:}
1147 @category{Управление сессией}
1151 @defvr {Управляющая переменная} showtime
1152 Значение по умолчанию: @code{false}
1154 Если @code{showtime} равно @code{true} Maxima печатает время
1155 вычисления для каждого результирующего выражения.
1157 Время вычисления всегда запоминается, так что
1158 @code{time} и @code{playback} могут показать
1159 это время даже если @code{showtime} равно @code{false}.
1161 См. также @code{timer}.
1163 @opencatbox{Категории:}
1164 @category{Флаги и переменные вывода}
1169 @c IS THIS ANY DIFFERENT FROM ASSIGNING A PROPERTY ??
1170 @c THIS REALLY SEEMS LIKE A HACK
1171 @deffn {Функция} sstatus (@var{feature}, @var{package})
1172 Устанавливает статус @var{feature} в @var{package}.
1173 После выполнения @code{sstatus (@var{feature}, @var{package})},
1174 @code{status (@var{feature}, @var{package})} возвращает @code{true}.
1175 Этот механизм может быть полезен при работе с пакетами для того, чтобы
1176 иметь возможность проверять какие опции пакета загружены.
1178 @opencatbox{Категории:}
1179 @category{Факты и выводы}
1183 @c NEEDS EXPANSION, EXAMPLES
1184 @deffn {Функция} to_lisp ()
1185 Запускает интерпретатор используемой Lisp системы.
1186 Lisp функция @code{(to-maxima)} возвращает на уровень командной
1189 @opencatbox{Категории:}
1190 @category{Работа в консоли}
1194 @anchor{eval_string_lisp}
1195 @deffn {Function} eval_string_lisp (@var{str})
1197 Sequentially read lisp forms from the string @var{str} and evaluate them.
1198 Any values produced from the last form are returned as a Maxima list.
1203 @c eval_string_lisp ("");
1204 @c eval_string_lisp ("(values)");
1205 @c eval_string_lisp ("69");
1206 @c eval_string_lisp ("1 2 3");
1207 @c eval_string_lisp ("(values 1 2 3)");
1208 @c eval_string_lisp ("(defun $foo (x) (* 2 x))");
1213 (%i1) eval_string_lisp ("");
1217 (%i2) eval_string_lisp ("(values)");
1221 (%i3) eval_string_lisp ("69");
1225 (%i4) eval_string_lisp ("1 2 3");
1229 (%i5) eval_string_lisp ("(values 1 2 3)");
1233 (%i6) eval_string_lisp ("(defun $foo (x) (* 2 x))");
1242 See also @ref{eval_string}.
1244 @opencatbox{Категории:}
1245 @category{Debugging}
1246 @category{Evaluation}
1251 @defvr {Системная переменная} values
1252 Начальное значение: @code{[]}
1254 @code{values} содержит список всех пользовательских переменных, которым
1255 присвоено значение (не Maxima опций и переключателей).
1256 Этот список состоит из символов, которым было присвоено значение при
1257 помощи операторов @code{:}, @code{::} или @code{:=}.
1259 @opencatbox{Категории:}
1260 @category{Вычисление}
1261 @category{Глобальные переменные}