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
383 @deffn {Функция} ev (@var{expr}, @var{arg_1}, ..., @var{arg_n})
384 Вычисляет выражение @var{expr} в окружении определяемом аргументами
385 @var{arg_1}, ..., @var{arg_n}. Данные аргументы могут быть
386 переключателями (логические флаги), присваиваниями, уравнениями и функциями.
387 @code{ev} возвращает результат вычисления (выражение).
389 Вычисление осуществляется в несколько шагов.
393 Сначала окружение устанавливается в соответствии с аргументами,
394 которые могут быть одним из следующего:
398 @code{simp} вызывает упрощение выражения @var{expr} вне зависимости
399 от текущего значения переключателя @code{simp} (отключает упрощение
400 если равен @code{false}).
402 @code{noeval} отключает вычисление для данной стадии @code{ev}
403 (см. шаг (4) ниже). Это может быть полезно в комбинации с другими
404 переключателями и вызывает повторное упрощение @var{expr} без
407 @code{nouns} вызывает вычисление невычисляемых (noun) форм
408 (обычно это невычисляемые функции, такие как @code{'integrate}
409 или @code{'diff}) в @var{expr}.
411 @code{expand} вызывает раскрытие скобок.
413 @code{expand (@var{m},@var{n})} вызывает раскрытие скобок при @code{maxposex} и
414 @code{maxnegex} равным @var{m} и @var{n} соответственно.
416 @code{detout} при вычислении обратных матриц в @var{expr}, сохраняет
417 определитель матрицы как общий множитель вместо того чтобы делить
418 на него каждый элемент матрицы в отдельности.
420 @code{diff} вызывает вычисление всех производных в @var{expr}.
422 @code{derivlist (@var{x}, @var{y}, @var{z}, ...)} вызовет вычисление
423 производных только относительно указанных переменных.
425 @code{float} вызывает преобразование нецелых рациональных чисел
426 в числа с плавающей точкой.
428 @code{numer} вызывает численное вычисление математических
429 функций (включая экспоненты), имеющих числовые аргументы. Вызывает
430 замену переменных, имеющих числовые значения (см. @code{numerval}), этими
431 значениями. Устанавливает значение переключателя @code{float}
434 @code{pred} вызывает вычисление предикатов (выражений, значение
435 которых @code{true} или @code{false}).
437 @code{eval} вызывает дополнительное пост-вычисление @var{expr}
439 @code{eval} может встречаться несколько раз.
440 Для каждого @code{eval} выражение вычисляется еще раз.
442 @code{A}, где @code{A} есть атом, являющийся флагом вычисления (см. @code{evflag}),
443 устанавливает значение @code{A} равным @code{true} в процессе
444 вычисления @var{expr}.
446 @code{V: expression} (или альтернативно @code{V=expression})
447 присваивает @code{V} значение @code{expression} в процессе вычисления
448 @var{expr}. Если @code{V} является управляющей переменной (опцией)
449 Maxima, тогда значение @code{expression} используется в качестве
450 значения опции в процессе вычисления @var{expr}. Если имеется более
451 одного аргумента @code{ev} данного типа, то присваивание осуществляется
452 параллельно. Если @code{V} является не атомарным выражением, то
453 вместо присваивания осуществляется подстановка.
455 @code{F}, где @code{F} есть имя функции, являющейся функцией
456 вычисления (см. @code{evfun}) вызывает применение @code{F} к @var{expr}.
458 Любые другие имена функций (скажем @code{sum}) вызывают вычисление
459 этих функций в @var{expr}, так как если бы они имели
462 Кроме того, встречающаяся в @var{expr} функция (скажем @code{F(x)})
463 может быть локально определена для вычисления @var{expr}, путем
464 задания аргумента в форме @code{F(x) := expression}.
466 Если в качестве аргумента указан любой, не указанный выше атом, или
467 переменная с индексом, или выражение с индексом, то данный аргумент
468 вычисляется. Если результатом вычисления является уравнение или
469 присваивание, то выполняется соответствующее присваивание или
470 подстановка. Если результатом вычисления является список, то
471 элементы этого списка трактуются как дополнительные аргументы
472 @code{ev}. Это, в частности, позволяет использовать список
473 уравнений (например @code{[X=1, Y=A**2]}), или список имен
474 уравнений (например @code{[%t1, %t2]}, где @code{%t1} и
475 @code{%t2} являются результатом работы функции @code{solve}.
478 Аргументы @code{ev} могут быть указаны в произвольном порядке за
479 исключением уравнений, которые выполняются последовательно слева
480 направо, и составных вычисляющих функций (например
481 @code{ev (@var{expr}, ratsimp, realpart)} выполняется как
482 @code{realpart (ratsimp (@var{expr}))}).
484 Переключатели @code{simp}, @code{numer}, @code{float} и @code{pred}
485 могут быть установлены локально в блоке, или глобально.
486 В последнем случае они будут действовать до переопределения.
488 Если выражение @var{expr} является каноническим рациональным
489 выражением (КРВ, canonical rational expression (CRE)), тогда
490 результатом @code{ev} тоже является КРВ, если только переключатели
491 @code{numer} и @code{float} оба не равны @code{true}.
494 На шаге (1), составляется список не-индексированных
495 переменных входящих в левые части аргументов, являющихся уравнениями,
496 или в значения аргументов, если эти значения являются уравнениями.
497 Переменные (индексированные, которые не имеют соответствующих
498 функций массивов, и не-индексированные) в выражении @var{expr}
499 заменяются на свои глобальные значения, за исключением тех,
500 которые входят в вышеуказанный список. Обычно, @var{expr} это просто
501 метка @code{%} (как @code{%i2} в примере ниже), так что на данном шаге
502 просто получается выражение, обозначаемое данной меткой.
505 Если среди аргументов имеются подстановки, то они выполняются.
508 Полученное выражение снова вычисляется (если одним из аргументов не
509 является @code{noeval}) и упрощается в соответствии с заданными
510 аргументами. Все вызовы функций в @var{expr} выполняются после
511 вычисления переменных. Таким образом @code{ev(F(x))} трактуется
515 Для каждого @code{eval}, шаги (3) и (4) повторяются.
521 (%i1) sin(x) + cos(y) + (w+1)^2 + 'diff (sin(w), w);
523 (%o1) cos(y) + sin(x) + -- (sin(w)) + (w + 1)
525 (%i2) ev (%, sin, expand, diff, x=2, y=1);
527 (%o2) cos(w) + w + 2 w + cos(1) + 1.909297426825682
530 Имеется альтернативный синтаксис функции @code{ev}, который может
531 использоваться только на верхнем уровне: аргументы @code{ev()}
532 перечисляются через запятую после выражения. Т.е. можно просто
536 @var{expr}, @var{arg_1}, ..., @var{arg_n}
539 Такая конструкция недопустима как часть другого выражения,
540 функции, блока и т.п.
542 Обратите внимание на параллельное присваивание в следующих
546 (%i3) programmode: false;
548 (%i4) x+y, x: a+y, y: 2;
551 (%i6) -3*x + 2*y = -4$
552 (%i7) solve ([%o5, %o6]);
565 (%i9) x + 1/x > gamma (1/2);
567 (%o9) x + - > sqrt(%pi)
569 (%i10) %, numer, x=1/2;
570 (%o10) 2.5 > 1.772453850905516
575 @opencatbox{Категории:}
576 @category{Вычисление}
581 @defvr {Свойство} evflag
582 Если символ @var{x} имеет свойство @code{evflag},
583 то выражения @code{ev(@var{expr}, @var{x})} и @code{@var{expr}, @var{x}}
584 (в интерактивной командной строке) эквивалентны @code{ev(@var{expr}, @var{x} = true)}.
585 Т.е. @var{x} имеет значение @code{true} в процессе вычисления @var{expr}.
587 Выражение @code{declare(@var{x}, evflag)}
588 устанавливает свойство @code{evflag} для переменной @var{x}.
590 Следующие переключатели имеют по умолчанию свойство @code{evflag}:
591 @c FOLLOWING LIST CONSTRUCTED FROM LIST UNDER (prog1 '(evflag properties) ...)
592 @c NEAR LINE 2649 OF mlisp.lisp AT PRESENT (2004/11).
599 @code{exponentialize},
605 @code{isolate_wrt_times},
615 @code{numer_pbranch},
621 @code{ratsimpexpons},
632 @c sin (1/2), float=true;
637 @c sum (1/k^2, k, 1, inf);
638 @c sum (1/k^2, k, 1, inf), simpsum;
639 @c declare (aa, evflag);
640 @c if aa = true then YES else NO;
641 @c if aa = true then YES else NO, aa;
648 (%i2) sin (1/2), float;
649 (%o2) 0.479425538604203
650 (%i3) sin (1/2), float=true;
651 (%o3) 0.479425538604203
660 (%i8) sum (1/k^2, k, 1, inf);
668 (%i9) sum (1/k^2, k, 1, inf), simpsum;
673 (%i10) declare (aa, evflag);
675 (%i11) if aa = true then YES else NO;
677 (%i12) if aa = true then YES else NO, aa;
681 @opencatbox{Категории:}
682 @category{Флаги вычисления}
683 @category{Флаги и переменные упрощения}
688 @defvr {Свойство} evfun
689 Если функция @var{F} имеет свойство @code{evfun},
690 то выражения @code{ev(@var{expr}, @var{F})} и @code{@var{expr}, @var{F}}
691 (в интерактивной командной строке)
692 эквивалентны @code{@var{F}(ev(@var{expr}))}.
694 Если заданы две или более @code{evfun} функций @var{F}, @var{G}, то
695 функции применяются в порядке задания.
697 Выражение @code{declare(@var{F}, evfun)}
698 устанавливает свойство @code{evfun} для функции @var{F}.
700 Следующие функции имеют по умолчанию свойство @code{evfun}:
701 @c FOLLOWING LIST CONSTRUCTED FROM LIST UNDER (prog1 '(evfun properties) ...)
702 @c NEAR LINE 2643 IN mlisp.lisp AT PRESENT (2004/11).
712 @code{rootscontract},
722 @c cos(4 * x) / sin(x)^4;
723 @c cos(4 * x) / sin(x)^4, trigexpand;
724 @c cos(4 * x) / sin(x)^4, trigexpand, ratexpand;
725 @c ratexpand (trigexpand (cos(4 * x) / sin(x)^4));
726 @c declare ([F, G], evfun);
727 @c (aa : bb, bb : cc, cc : dd);
739 (%i2) x^3 - 1, factor;
741 (%o2) (x - 1) (x + x + 1)
742 (%i3) factor (x^3 - 1);
744 (%o3) (x - 1) (x + x + 1)
745 (%i4) cos(4 * x) / sin(x)^4;
750 (%i5) cos(4 * x) / sin(x)^4, trigexpand;
752 sin (x) - 6 cos (x) sin (x) + cos (x)
753 (%o5) -------------------------------------
756 (%i6) cos(4 * x) / sin(x)^4, trigexpand, ratexpand;
759 (%o6) - --------- + ------- + 1
762 (%i7) ratexpand (trigexpand (cos(4 * x) / sin(x)^4));
765 (%o7) - --------- + ------- + 1
768 (%i8) declare ([F, G], evfun);
770 (%i9) (aa : bb, bb : cc, cc : dd);
782 (%i15) G (F (ev (aa)));
786 @opencatbox{Категории:}
787 @category{Флаги вычисления}
791 @defvr {Управляющая переменная} infeval
792 Включает режим "бесконечного вычисления". @code{ev} вычисляет
793 выражение повторно до тех пор пока оно не перестает изменяться.
794 Чтобы предотвратить вычисление отдельной переменной, скажем @code{X},
795 в данном режиме следует указать @code{X='X} в качестве
796 аргумента @code{ev}. Разумеется, выражения вроде
797 @code{ev (X, X=X+1, infeval)} приводят к бесконечному циклу.
799 @opencatbox{Категории:}
800 @category{Флаги вычисления}
804 @c REVIEW FOR ACCURACY AND COMPLETENESS
805 @c THIS ITEM IS VERY IMPORTANT !!
807 @deffn {Функция} kill (@var{a_1}, ..., @var{a_n})
808 @deffnx {Функция} kill (labels)
809 @deffnx {Функция} kill (inlabels, outlabels, linelabels)
810 @deffnx {Функция} kill (@var{n})
811 @deffnx {Функция} kill ([@var{m}, @var{n}])
812 @deffnx {Функция} kill (values, functions, arrays, ...)
813 @deffnx {Функция} kill (all)
814 @deffnx {Функция} kill (allbut (@var{a_1}, ..., @var{a_n}))
816 Удаляет все связи (значение, функцию, массив или правило) аргументов @var{a_1}, ..., @var{a_n}.
817 Аргумент @var{a_k} может быть символом или отдельным элементом массива.
818 Если @var{a_k} является отдельным элементом массива, то @code{kill} удаляет
819 значение одного этого элемента и не затрагивает другие элементы массива.
821 Распознается несколько специальных форм аргументов. При
822 этом аргументы различных типов могут быть скомбинированы,
823 например @code{kill (inlabels, functions, allbut (foo, bar))}.
825 @code{kill (labels)} очищает значение меток ввода,
826 результата и меток промежуточных выражений, определенных на момент вызова.
827 @code{kill (inlabels)} очищает значение меток ввода, имена которых
828 начинаются с текущего значения @code{inchar}.
830 @code{kill (outlabels)} очищает значение меток результата, имена которых
831 начинаются с текущего значения @code{outchar},
832 и @code{kill (linelabels)} очищает значение меток промежуточных
833 выражений, имена которых начинаются с текущего значения @code{linechar}.
835 @code{kill (@var{n})}, где @var{n} является целым числом,
836 очищает значение @var{n} первых меток ввода и результата.
838 @code{kill ([@var{m}, @var{n}])} очищает метки ввода и результата
839 с номерами от @var{m} до @var{n} включительно.
841 @code{kill (@var{infolist})}, где @var{infolist} есть один из
842 информационных списков @code{infolists} (например @code{values}, @code{functions}
843 или @code{arrays}), очищает значение всех элементов в
844 @var{infolist}. См. также @code{infolists}.
846 @code{kill (all)} очищает значения всех элементов во всех
847 информационных списках (infolists).
848 @code{kill (all)} не восстанавливает стандартные значения глобальных
849 переменных. См. @code{reset} по поводу восстановления стандартных
850 значений глобальных переменных.
852 @code{kill (allbut (@var{a_1}, ..., @var{a_n}))}
853 очищает все элементы во всех информационных списках кроме @var{a_1}, ..., @var{a_n}.
854 @code{kill (allbut (@var{infolist}))} очищает все элементы кроме тех,
855 которые принадлежат информационному списку @var{infolist},
856 где @var{infolist} есть @code{values}, @code{functions}, @code{arrays}
859 Отметим, что для освобождения памяти, занимаемой значением символа,
860 необходимо очистить все объекты ссылающиеся на это значение.
861 Необходимо не только очистить сам символ, но и результирующую метку
862 указывающую на его значение.
864 Функция @code{kill} не вычисляет свои аргументы.
865 Для их вычисления можно использовать оператор кавычка-кавычка @code{'@w{}'}.
867 @code{kill (@var{symbol})} очищает все свойства символа @var{symbol} в
868 отличии от @code{remvalue}, @code{remfunction}, @code{remarray} и
869 @code{remrule}, которые очищают только определенное свойство.
871 @code{kill} всегда возвращает @code{done} даже если аргументы не имели
874 @opencatbox{Категории:}
875 @category{Вычисление}
876 @category{Управление сессией}
877 @category{Работа в консоли}
881 @deffn {Функция} labels (@var{symbol})
882 @deffnx {Системная переменная} labels
883 Возвращает список меток ввода, результата или меток промежуточных
884 выражений, имена которых начинаются с символа @var{symbol}.
885 Обычно @var{symbol} это значение @code{inchar}, @code{outchar} или @code{linechar}.
886 Значение @var{symbol} может быть указано с или без знака процента,
887 например @code{i} и @code{%i} дадут одинаковый результат.
889 Если ни одна из меток не начинается с @var{symbol}, то возвращается
892 Функция @code{labels} не вычисляет свои аргументы.
893 Для их вычисления можно использовать оператор кавычка-кавычка @code{'@w{}'}.
894 Например, @code{labels (''inchar)} возвращает список меток ввода,
895 имена которых начинаются с текущего значения символа ввода.
897 Переменная @code{labels} есть список всех меток ввода, результата и
898 меток промежуточных выражений, включая все предыдущие метки если
899 значение @code{inchar}, @code{outchar} или @code{linechar}
902 По умолчанию Maxima выводит результат каждого входного выражения
903 присваивая ему результирующую метку. Печать результата можно подавить
904 используя для окончания выражения символ @code{$} вместо обычного
905 @code{;}. В этом случае метка результата создается но сам
906 результат вычисления не печатается. Тем не менее значение
907 метки результата запоминается и в дальнейшем может быть
908 использовано как обычно. См. также @code{%}, @code{%%} и @code{%th}.
910 Метки промежуточных выражений создаются некоторыми функциями.
911 Переключатель @code{programmode} определяет будет ли команда
912 @code{solve}, и некоторые другие функции, создавать промежуточные
913 метки или возвращать список выражений. Некоторые другие функции,
914 такие как @code{ldisplay}, всегда создают метки промежуточных
917 См. также @code{inchar}, @code{outchar}, @code{linechar} и @code{infolists}.
919 @opencatbox{Категории:}
920 @category{Функции вывода}
921 @category{Флаги и переменные вывода}
922 @category{Работа в консоли}
926 @c EXPAND; SHOW WHAT HAPPENS WHEN linenum IS ASSIGNED A VALUE
927 @defvr {Системная переменная} linenum
928 Порядковый номер текущей пары входного и результирующего выражений.
931 @opencatbox{Категории:}
932 @category{Флаги и переменные вывода}
933 @category{Работа в консоли}
938 @defvr {Системная переменная} myoptions
939 Значение по умолчанию: @code{[]}
941 @code{myoptions} есть список всех переключателей (флагов) переопределенных
942 пользователем вне зависимости от того имеет ли в данный момент
943 переключатель значение по умолчанию или нет.
945 @opencatbox{Категории:}
946 @category{Глобальные переменные}
947 @category{Управление сессией}
948 @category{Работа в консоли}
952 @defvr {Управляющая переменная} nolabels
953 Значение по умолчанию: @code{false}
955 Если @code{nolabels} равна @code{true},
956 то метки ввода и результата
957 (@code{%i} и @code{%o}, соответственно)
958 печатаются но результирующее значение
959 этим меткам не присваивается а сами метки не
960 добавляются к списку @code{labels}.
961 Поскольку результаты вычислений не
962 присваиваются меткам, то сборщик мусора
963 может освободить занимаемую ими память
964 для дальнейшего использования.
966 В противном случае меткам ввода и меткам результата присваиваются
967 соответствующие значения а сами метки добавляются к списку @code{labels}.
969 Флаг @code{nolabels} не влияет на метки промежуточных выражений (@code{%t}).
970 Независимо от значения @code{nolabels} равного @code{true} или @code{false},
971 меткам промежуточных выражений присваиваются значение и они
972 добавляются к списку @code{labels}.
974 См. также @code{batch}, @code{load} и @code{labels}.
976 @opencatbox{Категории:}
977 @category{Глобальные флаги}
978 @category{Управление сессией}
983 @defvr {Управляющая переменная} optionset
984 Значение по умолчанию: @code{false}
986 Если @code{optionset} равно @code{true}, Maxima печатает сообщение
987 при изменении значения любого переключателя (опция, флаг) Maxima.
988 Это может быть полезно, когда пользователь не уверен в написании
989 названия опции и хочет быть уверен, что он переопределил
990 значение правильной переменной.
992 @opencatbox{Категории:}
993 @category{Глобальные флаги}
994 @category{Управление сессией}
995 @category{Работа в консоли}
999 @deffn {Функция} playback ()
1000 @deffnx {Функция} playback (@var{n})
1001 @deffnx {Функция} playback ([@var{m}, @var{n}])
1002 @deffnx {Функция} playback ([@var{m}])
1003 @deffnx {Функция} playback (input)
1004 @deffnx {Функция} playback (slow)
1005 @deffnx {Функция} playback (time)
1006 @deffnx {Функция} playback (grind)
1007 Выводит значения входных, результирующих и промежуточных
1008 выражений без их перевычисления.
1009 @code{playback} выводит только выражения связанные с метками --
1010 любой другой вывод (текст выведенный @code{print} или @code{describe},
1011 сообщения об ошибках) не отображается.
1012 См. также @code{labels}.
1014 Функция @code{playback} не вычисляет свои аргументы.
1015 Для их вычисления можно использовать оператор кавычка-кавычка @code{'@w{}'}.
1016 @code{playback} возвращает значение @code{done}.
1018 @code{playback ()} (без аргументов) печатает все входные, результирующие и
1019 промежуточные выражения. Результирующие выражения печатаются даже в случае,
1020 когда во время первоначальных вычислений использовался @code{$} для
1021 подавления печати результата.
1023 @code{playback (@var{n})} печатает @var{n} последних выражений.
1024 Каждое входное, результирующее и промежуточное выражение
1027 @code{playback ([@var{m}, @var{n}])} печатает входные, результирующие
1028 и промежуточные выражения с номерами от @var{m} до @var{n} включительно.
1030 @code{playback ([@var{m}])} эквивалентно
1031 @code{playback ([@var{m}, @var{m}])} и обычно печатает
1032 одну пару из входного и результирующего выражений.
1034 @code{playback (input)} печатает все входные выражения.
1036 @code{playback (slow)} останавливается между выражениями и
1037 ожидает пока пользователь нажмет "ввод" (@code{enter}).
1038 Данное поведение аналогично команде @code{demo}.
1039 @c WHAT DOES THE FOLLOWING MEAN ???
1040 @code{playback (slow)} полезно в сочетании с @code{save} или
1041 @code{stringout} для выбора выражений, которые надо
1044 @code{playback (time)} показывает время вычисления для каждого выражения.
1045 @c DON'T BOTHER TO MENTION OBSOLETE OPTIONS !!!
1046 @c The arguments @code{gctime} and @code{totaltime} have the same effect as @code{time}.
1048 @code{playback (grind)} печатает входные выражения в
1049 формате функции @code{grind}. На результирующие выражения
1050 данная опция не влияет. См. @code{grind}.
1052 Аргументы функции @code{playback} могут быть скомбинированы,
1053 например @code{playback ([5, 10], grind, time, slow)}.
1054 @c APPEARS TO BE input INTERSECT (UNION OF ALL OTHER ARGUMENTS). CORRECT ???
1056 @opencatbox{Категории:}
1057 @category{Функции вывода}
1058 @category{Работа в консоли}
1062 @c NEEDS WORK ESPECIALLY EXAMPLES
1063 @c WHOLE BUSINESS WITH PROPERTIES IS PRETTY CONFUSING, TRY TO CLEAR IT UP
1064 @deffn {Функция} printprops (@var{a}, @var{i})
1065 @deffnx {Функция} printprops ([@var{a_1}, ..., @var{a_n}], @var{i})
1066 @deffnx {Функция} printprops (all, @var{i})
1067 Печатает свойство с именем @var{i}, ассоциированное с атомом
1068 @var{a}. @var{a} может быть списком атомов или @code{all}.
1069 В последнем случае будут использованы все атомы имеющие данное свойство.
1070 Например, @code{printprops ([f, g], atvalue)}. Функция
1071 @code{printprops} предназначена для свойств, которые не могут быть
1072 отображены другим способом, например для
1073 @code{atvalue}, @code{atomgrad}, @code{gradef} и @code{matchdeclare}.
1075 @opencatbox{Категории:}
1076 @category{Факты и выводы}
1077 @category{Функции вывода}
1081 @defvr {Управляющая переменная} prompt
1082 Значение по умолчанию: @code{_}
1084 @code{prompt} символ приглашения для функции @code{demo},
1085 @code{playback (slow)} и диалога прерывания Maxima (break loop)
1088 @opencatbox{Категории:}
1089 @category{Глобальные переменные}
1090 @category{Работа в консоли}
1094 @deffn {Функция} quit ()
1095 Завершает сессию Maxima.
1096 Команда должна быть введена именно как @code{quit();} или @code{quit()$},
1097 а не просто @code{quit}.
1099 Для прерывания длительных вычислений можно нажать @code{control-C}.
1100 При этом по умолчанию Maxima возвращается на верхний уровень к
1101 приглашению ввода следующей команды.
1102 Если значение Lisp-переменной @code{*debugger-hook*} равно @code{nil},
1103 тогда нажатие @code{control-C} запускает Lisp отладчик.
1104 См. также @code{debugging}.
1106 @opencatbox{Категории:}
1107 @category{Работа в консоли}
1111 @deffn {Функция} remfunction (@var{f_1}, ..., @var{f_n})
1112 @deffnx {Функция} remfunction (all)
1113 @c REPHRASE THIS TO SAY "UNBIND" OR SOMETHING OTHER THAN "REMOVE" (LATTER IS AMBIGUOUS) !!!
1114 Удаляет определенные пользователем функции @var{f_1}, ..., @var{f_n}.
1115 Аргументы могут быть именами обычных функций, созданных при помощи
1116 @code{:=} или @code{define}, или макро функций, созданных при помощи
1119 @code{remfunction (all)} -- удаляет все определенные пользователем
1122 @code{remfunction} не вычисляет свои аргументы.
1124 @code{remfunction} возвращает список символов, для которых
1125 было удалено определение функции. Для символов, у которых
1126 не было соответствующих определений функций, возвращается
1129 Функция @code{remfunction} не применима к функциям массивам и переменным с индексом,
1130 к этим типам функций применима @code{remarray}.
1132 @opencatbox{Категории:}
1133 @category{Определение функций}
1137 @deffn {Функция} reset ()
1138 Восстанавливает значения по умолчанию для глобальных переменных,
1139 опций и некоторых других переменных.
1141 @code{reset} восстанавливает значения переменных хранящихся в Lisp
1142 списке @code{*variable-initial-values*}.
1143 Lisp макрос @code{defmvar} добавляет переменные в этот список
1144 (вместе с выполнением других действий). Многие, но не все,
1145 глобальные переменные и опции определены с помощью @code{defmvar};
1146 некоторые, определенные с помощью @code{defmvar} переменные, не
1147 являются глобальными переменными или опциями.
1149 @opencatbox{Категории:}
1150 @category{Управление сессией}
1154 @defvr {Управляющая переменная} showtime
1155 Значение по умолчанию: @code{false}
1157 Если @code{showtime} равно @code{true} Maxima печатает время
1158 вычисления для каждого результирующего выражения.
1160 Время вычисления всегда запоминается, так что
1161 @code{time} и @code{playback} могут показать
1162 это время даже если @code{showtime} равно @code{false}.
1164 См. также @code{timer}.
1166 @opencatbox{Категории:}
1167 @category{Флаги и переменные вывода}
1172 @c IS THIS ANY DIFFERENT FROM ASSIGNING A PROPERTY ??
1173 @c THIS REALLY SEEMS LIKE A HACK
1174 @deffn {Функция} sstatus (@var{feature}, @var{package})
1175 Устанавливает статус @var{feature} в @var{package}.
1176 После выполнения @code{sstatus (@var{feature}, @var{package})},
1177 @code{status (@var{feature}, @var{package})} возвращает @code{true}.
1178 Этот механизм может быть полезен при работе с пакетами для того, чтобы
1179 иметь возможность проверять какие опции пакета загружены.
1181 @opencatbox{Категории:}
1182 @category{Факты и выводы}
1186 @c NEEDS EXPANSION, EXAMPLES
1187 @deffn {Функция} to_lisp ()
1188 Запускает интерпретатор используемой Lisp системы.
1189 Lisp функция @code{(to-maxima)} возвращает на уровень командной
1192 @opencatbox{Категории:}
1193 @category{Работа в консоли}
1197 @anchor{eval_string_lisp}
1198 @deffn {Function} eval_string_lisp (@var{str})
1200 Sequentially read lisp forms from the string @var{str} and evaluate them.
1201 Any values produced from the last form are returned as a Maxima list.
1206 @c eval_string_lisp ("");
1207 @c eval_string_lisp ("(values)");
1208 @c eval_string_lisp ("69");
1209 @c eval_string_lisp ("1 2 3");
1210 @c eval_string_lisp ("(values 1 2 3)");
1211 @c eval_string_lisp ("(defun $foo (x) (* 2 x))");
1216 (%i1) eval_string_lisp ("");
1220 (%i2) eval_string_lisp ("(values)");
1224 (%i3) eval_string_lisp ("69");
1228 (%i4) eval_string_lisp ("1 2 3");
1232 (%i5) eval_string_lisp ("(values 1 2 3)");
1236 (%i6) eval_string_lisp ("(defun $foo (x) (* 2 x))");
1245 See also @ref{eval_string}.
1247 @opencatbox{Категории:}
1248 @category{Debugging}
1249 @category{Evaluation}
1254 @defvr {Системная переменная} values
1255 Начальное значение: @code{[]}
1257 @code{values} содержит список всех пользовательских переменных, которым
1258 присвоено значение (не Maxima опций и переключателей).
1259 Этот список состоит из символов, которым было присвоено значение при
1260 помощи операторов @code{:}, @code{::} или @code{:=}.
1262 @opencatbox{Категории:}
1263 @category{Вычисление}
1264 @category{Глобальные переменные}