Вычисляет выражение expr, предполагая значения для переменных,
заданные в списке 
уравнений [eqn_1, ..., eqn_n] или одном уравнении eqn.
Если подвыражение зависит от переменных, для которых заданы значения, 
но нет, заданного при помощи atvalue значения, или оно не может быть вычислено
иным способом, то возвращается невычисляемая форма at, которая выводится 
в двумерном формате.
Функция at выполняет множественные подстановки последовательно, не параллельно.
См. также atvalue.
Для описания других функций, которые выполняют подстановки,
см. также subst и ev.
Примеры:
(%i1) atvalue (f(x,y), [x = 0, y = 1], a^2);
                                2
(%o1)                          a
(%i2) atvalue ('diff (f(x,y), x), x = 0, 1 + y);
(%o2)                        @2 + 1
(%i3) printprops (all, atvalue);
                                !
                  d             !
                 --- (f(@1, @2))!       = @2 + 1
                 d@1            !
                                !@1 = 0
                                     2
                          f(0, 1) = a
(%o3)                         done
(%i4) diff (4*f(x, y)^2 - u(x, y)^2, x);
                  d                          d
(%o4)  8 f(x, y) (-- (f(x, y))) - 2 u(x, y) (-- (u(x, y)))
                  dx                         dx
(%i5) at (%, [x = 0, y = 1]);
                                         !
              2              d           !
(%o5)     16 a  - 2 u(0, 1) (-- (u(x, y))!            )
                             dx          !
                                         !x = 0, y = 1
Возвращает expr, заключенное в бокс (box).
Возвращаемое значение есть выражение с box в качестве оператора и 
expr как аргумент.
Бокс изображается при выводе, когда display2d есть true.
box (expr, a)
заключает expr в бокс, обозначенный символом a.
Эта метка обрезается, если она длиннее чем ширина бокса.
box вычисляет свои аргументы.
Однако, выражение, взятое в бокс, не вычисляется до его содержимого,
так что выражения в боксе эффективно исключается из вычислений.
boxchar есть символ, используемый для отображения бокса в 
функциях box, в dpart и в lpart.
Примеры:
(%i1) box (a^2 + b^2);
                            """""""""
                            " 2    2"
(%o1)                       "b  + a "
                            """""""""
(%i2) a : 1234;
(%o2)                         1234
(%i3) b : c - d;
(%o3)                         c - d
(%i4) box (a^2 + b^2);
                      """"""""""""""""""""
                      "       2          "
(%o4)                 "(c - d)  + 1522756"
                      """"""""""""""""""""
(%i5) box (a^2 + b^2, term_1);
                      term_1""""""""""""""
                      "       2          "
(%o5)                 "(c - d)  + 1522756"
                      """"""""""""""""""""
(%i6) 1729 - box (1729);
                                 """"""
(%o6)                     1729 - "1729"
                                 """"""
(%i7) boxchar: "-";
(%o7)                           -
(%i8) box (sin(x) + cos(y));
                        -----------------
(%o8)                   -cos(y) + sin(x)-
                        -----------------
Значение по умолчанию: "
boxchar есть символ, который используется для изображения бокса в 
функциях box, в dpart и в lpart .
Все боксы в выражении изображаются с текущим значением boxchar.
Изображаемый символ не сохраняется в выражении бокса.
Возвращает комплексный аргумент z.
Этот комплексный аргумент есть угол theta в пределах (-%pi, %pi]
такой что r exp (theta %i) = z, где r есть модуль 
z.
carg есть вычислительная функция,
но не функция упрощения.
carg игнорирует декларацию declare (x, complex)
и рассматривает x как вещественную переменную.
Это ошибка. 
См. также abs (комплексный модуль), polarform, rectform,
realpart и imagpart.
Примеры:
(%i1) carg (1);
(%o1)                           0
(%i2) carg (1 + %i);
                               %pi
(%o2)                          ---
                                4
(%i3) carg (exp (%i));
(%o3)                           1
(%i4) carg (exp (%pi * %i));
(%o4)                          %pi
(%i5) carg (exp (3/2 * %pi * %i));
                                %pi
(%o5)                         - ---
                                 2
(%i6) carg (17 * exp (2 * %i));
(%o6)                           2
declare (a, constant) объявляет a как константу.
См. declare.
Возвращает true, если expr есть константное выражение,
иначе возвращает false.
Выражение рассматривается как константное, если его аргументы 
есть
числа (включая рациональные числа, которые отображаются с помощью /R/),
символьные константы, такие как %pi, %e и %i,
переменные, равные константами, или объявленные константами с помощью declare,
или функции, чьи аргументы есть константы.
constantp вычисляет свои аргументы.
Примеры:
(%i1) constantp (7 * sin(2)); (%o1) true (%i2) constantp (rat (17/29)); (%o2) true (%i3) constantp (%pi * sin(%e)); (%o3) true (%i4) constantp (exp (x)); (%o4) false (%i5) declare (x, constant); (%o5) done (%i6) constantp (exp (x)); (%o6) true (%i7) constantp (foo (x) + bar (%e) + baz (2)); (%o7) false (%i8)
Присваивает атому или списку атомов a_i свойство или список свойств p_i. Когда a_i и/или p_i есть списки, каждый из атомом получает все свойства.
declare не вычисляет свои аргументы.
declare всегда возвращает done.
Как отмечено в описании для каждого флага декларации,
для некоторых флагов
featurep(object, feature)
возвращает true, если object был объявлен, как имеющий feature.
Однако, featurep не распознает некоторые флаги. Это ошибка.
См. также features.
declare распознает следующие свойства:
evfunДелает a_i известным для ev так, что эта функция названная как a_i,
применяется когда a_i появляется как флаговый аргумент ev.
См. evfun.
evflagДелает a_i известным для функции ev так, что a_i 
связывается с true
во время выполнение ev, когда a_i появляется как флаговый аргумент  ev.
См. evflag.
bindtestУказывает Maxima то, что следует вызвать ошибку, когда при вычислении значение a_i не определено.
nounУказывает Maxima считать a_i невычисляемой формой. 
Эффект состоит в замене a_i на 'a_i
или nounify(a_i), в зависимости от контекста.
constantУказывает Maxima рассматривать a_i как символьную константу.
scalarУказывает Maxima рассматривать a_i как скалярную переменную.
nonscalarУказывает Maxima рассматривать a_i как нескалярную переменную. Обычное применение состоит в том, чтобы объявлять переменная как символьный вектор или матрицу.
mainvarУказывает Maxima рассматривать a_i как "главную переменную" (mainvar).
ordergreatp определяет упорядочивание атомов таким образом:
(главные переменные) > (другие переменные) > (скалярный переменные) > (константы) > (числа)
alphabeticУказывает Maxima рассматривать a_i как алфавитный символ.
featureУказывает Maxima рассматривать a_i как имя свойства. Тогда другие атомы могут иметь свойство a_i.
rassociative, lassociativeУказывает Maxima рассматривать a_i как право-ассоциативную или лево-ассоциативную функцию.
naryУказывает Maxima рассматривать a_i как n-арную функцию.
Декларация nary это не тоже, что вызов функции nary.
Единственный эффект declare(foo, nary) состоит в том, чтобы обучить упрощатель Maxima
упрощать вложенные выражения,
например, чтобы foo(x, foo(y, z)) упрощалось до foo(x, y, z).
symmetric, antisymmetric, commutativeУказывает Maxima рассматривать a_i как симметричную или антисимметричную функцию.
commutative это тоже самое, что symmetric.
oddfun, evenfunУказывает Maxima рассматривать a_i как нечетную или четную функцию.
outativeУказывает Maxima упрощать выражения с a_i путем выноса константных множителей за пределы первого аргумента.
Когда a_i имеет один аргумент, множитель рассматривается константным, если он есть литерал или объявлен константой.
Когда a_i имеет два или более аргументов, множитель рассматривается константой, если второй аргумент есть символ и этот множитель свободен от этого второго аргумента.
multiplicativeУказывает Maxima упрощать выражения a_i 
путем подстановки a_i(x * y * z * ...) -->
a_i(x) * a_i(y) * a_i(z) * ....
Эта подстановка выполняется только для первого аргумента.
additiveУказывает Maxima упрощать a_i выражения
путем подстановки a_i(x + y + z + ...) -->
a_i(x) + a_i(y) + a_i(z) + ....
Эта подстановка выполняется только для первого аргумента.
linearЭквивалентно объявлению a_i совместно outative и additive.
integer, nonintegerУказывает Maxima рассматривать a_i как целую или нецелую переменную.
even, oddУказывает Maxima рассматривать a_i как четную или нечетную целую переменную.
rational, irrationalУказывает Maxima рассматривать a_i как рациональную или иррациональную вещественную переменную.
real, imaginary, complexУказывает Maxima рассматривать a_i как вещественную, чисто мнимую или комплексную переменную.
increasing, decreasingУказывает Maxima рассматривать a_i как растущую или убывающую функцию.
posfunУказывает Maxima рассматривать a_i как положительную функцию.
integervaluedУказывает Maxima рассматривать a_i как целочисленную функцию.
Примеры:
Декларации evfun и evflag.
(%i1) declare (expand, evfun);
(%o1)                         done
(%i2) (a + b)^3;
                                   3
(%o2)                       (b + a)
(%i3) (a + b)^3, expand;
                     3        2      2      3
(%o3)               b  + 3 a b  + 3 a  b + a
(%i4) declare (demoivre, evflag);
(%o4)                         done
(%i5) exp (a + b*%i);
                             %i b + a
(%o5)                      %e
(%i6) exp (a + b*%i), demoivre;
                      a
(%o6)               %e  (%i sin(b) + cos(b))
Декларация bindtest.
(%i1) aa + bb; (%o1) bb + aa (%i2) declare (aa, bindtest); (%o2) done (%i3) aa + bb; aa unbound variable -- an error. Quitting. To debug this try debugmode(true); (%i4) aa : 1234; (%o4) 1234 (%i5) aa + bb; (%o5) bb + 1234
Декларация noun.
(%i1) factor (12345678);
                             2
(%o1)                     2 3  47 14593
(%i2) declare (factor, noun);
(%o2)                         done
(%i3) factor (12345678);
(%o3)                   factor(12345678)
(%i4) ''%, nouns;
                             2
(%o4)                     2 3  47 14593
Декларации constant, scalar, nonscalar и mainvar.
Декларация alphabetic.
(%i1) xx\~yy : 1729;
(%o1)                         1729
(%i2) declare ("~", alphabetic);
(%o2)                         done
(%i3) xx~yy + yy~xx + ~xx~~yy~;
(%o3)                ~xx~~yy~ + yy~xx + 1729
Декларация feature.
(%i1) declare (FOO, feature); (%o1) done (%i2) declare (x, FOO); (%o2) done (%i3) featurep (x, FOO); (%o3) true
Декларации rassociative и lassociative.
Декларация nary.
(%i1) H (H (a, b), H (c, H (d, e))); (%o1) H(H(a, b), H(c, H(d, e))) (%i2) declare (H, nary); (%o2) done (%i3) H (H (a, b), H (c, H (d, e))); (%o3) H(a, b, c, d, e)
Декларации symmetric и antisymmetric.
(%i1) S (b, a); (%o1) S(b, a) (%i2) declare (S, symmetric); (%o2) done (%i3) S (b, a); (%o3) S(a, b) (%i4) S (a, c, e, d, b); (%o4) S(a, b, c, d, e) (%i5) T (b, a); (%o5) T(b, a) (%i6) declare (T, antisymmetric); (%o6) done (%i7) T (b, a); (%o7) - T(a, b) (%i8) T (a, c, e, d, b); (%o8) T(a, b, c, d, e)
Декларации oddfun и evenfun.
(%i1) o (- u) + o (u); (%o1) o(u) + o(- u) (%i2) declare (o, oddfun); (%o2) done (%i3) o (- u) + o (u); (%o3) 0 (%i4) e (- u) - e (u); (%o4) e(- u) - e(u) (%i5) declare (e, evenfun); (%o5) done (%i6) e (- u) - e (u); (%o6) 0
Декларация outative.
(%i1) F1 (100 * x); (%o1) F1(100 x) (%i2) declare (F1, outative); (%o2) done (%i3) F1 (100 * x); (%o3) 100 F1(x) (%i4) declare (zz, constant); (%o4) done (%i5) F1 (zz * y); (%o5) zz F1(y)
Декларация multiplicative.
(%i1) F2 (a * b * c); (%o1) F2(a b c) (%i2) declare (F2, multiplicative); (%o2) done (%i3) F2 (a * b * c); (%o3) F2(a) F2(b) F2(c)
Декларация additive.
(%i1) F3 (a + b + c); (%o1) F3(c + b + a) (%i2) declare (F3, additive); (%o2) done (%i3) F3 (a + b + c); (%o3) F3(c) + F3(b) + F3(a)
Декларация linear.
(%i1) 'sum (F(k) + G(k), k, 1, inf);
                       inf
                       ====
                       \
(%o1)                   >    (G(k) + F(k))
                       /
                       ====
                       k = 1
(%i2) declare (nounify (sum), linear);
(%o2)                         done
(%i3) 'sum (F(k) + G(k), k, 1, inf);
                     inf          inf
                     ====         ====
                     \            \
(%o3)                 >    G(k) +  >    F(k)
                     /            /
                     ====         ====
                     k = 1        k = 1
аналогична isolate (expr, x),
за исключением того, что она дает возможность пользователю изолировать
более чем одну переменную одновременно. Это может быть полезно, например, 
если пользователь пытается заменить переменные в многократном
интегрировании и эта замена переменных включает две или более переменных интегрирования. 
Данная функция автоматически загружается из
simplification/disol.mac.  Демонстрация доступна по
demo("disol")$.
Возвращает внешнее представление expr по отношению к его
главному оператору. Это может быть полезно в сочетании с part, которая
также имеет дело с внешним представлением. Предположим expr есть -A.
Тогда внутреннее представление expr есть "*"(-1,A), в то время как
внешнее представление есть "-"(A). dispform (expr, all) конвертирует 
все выражение (не только верхний уровень) в внешний формат. Например,
если expr: sin (sqrt (x)), то freeof (sqrt, expr) и
freeof (sqrt, dispform (expr)) дают true, в то время как
freeof (sqrt, dispform (expr, all)) дает false.
Распространяет суммы над произведениями. Она отличается от expand
тем, что она работает только на самом верхнем уровне выражения, то есть она не
рекурсивная и работает быстрее чем expand. Она отличается от multthru тем, 
что раскрывает все суммы на этом уровне.
Примеры:
(%i1) distrib ((a+b) * (c+d));
(%o1)                 b d + a d + b c + a c
(%i2) multthru ((a+b) * (c+d));
(%o2)                 (b + a) d + (b + a) c
(%i3) distrib (1/((a+b) * (c+d)));
                                1
(%o3)                    ---------------
                         (b + a) (d + c)
(%i4) expand (1/((a+b) * (c+d)), 1, 0);
                                1
(%o4)                 ---------------------
                      b d + a d + b c + a c
Выбирает тоже подвыражение что и part, но
вместо только возвращения этого подвыражения как значения, она возвращает
все выражение с выбранным подвыражением, изображенным внутри
бокса. Данный бокс в действительности является частью выражения.
(%i1) dpart (x+y/z^2, 1, 2, 1);
                             y
(%o1)                       ---- + x
                               2
                            """
                            "z"
                            """
Представляет собой экспоненциальную функцию.
Все экземпляры exp (x) при вводе упрощаются до %e^x.
exp не присутствует в упрощенных выражениях.
Если demoivre равно true, то %e^(a + b %i) упрощается до 
%e^(a (cos(b) + %i sin(b))), если b свободна от %i. См. demoivre.
Если %emode, равно true, то 
%e^(%pi %i x) упрощается. См. %emode.
Если %enumer, равно true, то %e заменяется на 
2.718..., когда numer есть true. См. %enumer.
Значение по умолчанию: true
Когда %emode есть true,
то %e^(%pi %i x) упрощается следующим образом.
%e^(%pi %i x) упрощается до cos (%pi x) + %i sin (%pi x), если x есть 
число с плавающей точкой, целое или произведение 1/2, 1/3, 1/4 или 1/6 и тогда в дальнейшем упрощается.
Для других численных x,
%e^(%pi %i x) упрощается до %e^(%pi %i y), где y есть
x - 2 k для некоторых целых k, таких что abs(y) < 1.  
Когда %emode есть false, 
специальное упрощение %e^(%pi %i x) не выполняется.
Значение по умолчанию: false
Когда %enumer есть true,
то %e заменяется своим численным значением
2.718..., когда numer есть true. 
Когда %enumer есть false, эта подстановка выполняется
только если экспонента в %e^x вычисляется до численного значения.
См. также ev и numer.
Значение по умолчанию: false
Если exptisolate равно true, то isolate (expr, var) 
исследует показатели атомов (таких как %e), которые содержат var.
Значение по умолчанию: false
Если exptsubst равно true, то позволяется выполнять подстановки, такие как y
для %e^x в %e^(a x).
freeof (x_1, expr)
Возвращает true, если никакое подвыражение expr не равно x_1
или если x_1 возникает только как немая переменная в
expr, иначе возвращает false.
freeof (x_1, ..., x_n, expr)
эквивалентно freeof (x_1, expr) and ... and freeof (x_n, expr).
Аргументы x_1, ..., x_n 
могут быть именами функций или переменных, именами с индексами,
операторами (заключенными в двойные кавычки) или выражениями общего вида.
freeof вычисляет свои аргументы.
freeof действует только на expr в том виде, в как оно есть, 
(после упрощения и вычисления) и
не пытается определить, может ли некоторое эквивалентное выражение дать другой результат.
В частности, упрощение может давать эквивалентное, но другое выражение, которое
содержит некоторые различные элементы чем исходная форма expr.
Переменная является немой переменной в некотором выражении, если она не имеет значения за пределами выражения.
Немые переменные, распознаваемые freeof, есть
индекс суммы или произведения, переменная предела в limit,
переменная интегрирования в определенном интеграле integrate,
исходная переменная в laplace,
формальные переменные в выражениях at
и аргументы в lambda выражениях.
Локальные переменные в block не распознаются freeof как немые 
переменные. Это ошибка.
Неопределенное интегрирование integrate не свободно от 
переменной интегрирования.
freeof (a, b, expr) эквивалентно 
freeof (a, expr) and freeof (b, expr).
(%i1) expr: z^3 * cos (a[1]) * b^(c+d);
                                 d + c  3
(%o1)                   cos(a ) b      z
                             1
(%i2) freeof (z, expr);
(%o2)                         false
(%i3) freeof (cos, expr);
(%o3)                         false
(%i4) freeof (a[1], expr);
(%o4)                         false
(%i5) freeof (cos (a[1]), expr);
(%o5)                         false
(%i6) freeof (b^(c+d), expr);
(%o6)                         false
(%i7) freeof ("^", expr);
(%o7)                         false
(%i8) freeof (w, sin, a[2], sin (a[2]), b*(c+d), expr);
(%o8)                         true
freeof вычисляет свои аргументы.
(%i1) expr: (a+b)^5$ (%i2) c: a$ (%i3) freeof (c, expr); (%o3) false
freeof не учитывает эквивалентные выражения.
Упрощение может дать эквивалентное, но отличное выражение.
(%i1) expr: (a+b)^5$
(%i2) expand (expr);
          5        4       2  3       3  2      4      5
(%o2)    b  + 5 a b  + 10 a  b  + 10 a  b  + 5 a  b + a
(%i3) freeof (a+b, %);
(%o3)                         true
(%i4) freeof (a+b, expr);
(%o4)                         false
(%i5) exp (x);
                                 x
(%o5)                          %e
(%i6) freeof (exp, exp (x));
(%o6)                         true
(%i1) freeof (i, 'sum (f(i), i, 0, n)); (%o1) true (%i2) freeof (x, 'integrate (x^2, x, 0, 1)); (%o2) true (%i3) freeof (x, 'integrate (x^2, x)); (%o3) false
Возвращает обобщенный факториал, заданный как
x (x-z) (x - 2 z) ... (x - (y - 1) z). Таким образом, для целого x,
genfact (x, x, 1) = x! и genfact (x, x/2, 2) = x!!.
Возвращает мнимую часть выражения expr.
imagpart есть вычислительная функция,
а не функция упрощения.
См. также abs, carg, polarform, rectform
и realpart.
Объявляет op инфиксным оператором.
Инфиксный оператор есть функция двух аргументов,
с именем функции, записанным между этими аргументами.
Например, оператор вычитания - есть инфиксный оператор.
infix (op) объявляет op инфиксным оператором
со степенями связывания по умолчанию (левая и правая, обе равны 180)
и частями речи по умолчанию (левая и правая, обе равны any).
infix (op, lbp, rbp) объявляет op инфиксным оператором
с указанными левой и правой степени связывания 
и частями речи по умолчанию (левая и правая, обе равны any).
infix (op, lbp, rbp, lpos, rpos, pos) объявляет op инфиксным оператором
с указанными левой и правой степенями связывания и частями речи
lpos, rpos и pos для левого операнда, правого операнда и результата
соответственно.
Термин "часть речи" по отношению к объявлению операторов, означает тип выражения.
Различается три типа: expr, clause и any,
которые означают алгебраическое выражение, логическое выражение и выражение
произвольного типа соответственно.
Maxima может обнаружить некоторые синтаксические ошибки, сравнивая
объявленные для оператора части речи с актуальными выражениями.
Приоритет op по отношению к другим операторам выводится из левой и правой степеней связывания рассматриваемых операторов. Если левые и правые степени связывания op обе больше левых и правых степеней связывания другого оператора, то op имеет более высокий приоритет чем этот оператор. Если степени связывания обе не больше или меньше, то имеют место некоторые более сложные соотношения.
Ассоциативность op зависит от его степени связывания. Большая левая степень связывания (lbp) означает, что op вычисляется до других операторов, стоящих слева от него в выражении, в то время как большая правая степень связывания (rbp) означает, что op вычисляется до других операторов, стоящих справа от него в выражении. Таким образом, большее lbp делает op право-ассоциативным, в то время как большее rbp делает op лево-ассоциативным. Если lbp равно rbp, то op является лево-ассоциативный.
См. также Syntax.
Примеры:
(%i1) "@"(a, b) := sconcat("(", a, ",", b, ")")$
(%i2) :lisp (get '$+ 'lbp)
100
(%i2) :lisp (get '$+ 'rbp)
100
(%i2) infix ("@", 101, 101)$
(%i3) 1 + a@b + 2;
(%o3)                       (a,b) + 3
(%i4) infix ("@", 99, 99)$
(%i5) 1 + a@b + 2;
(%o5)                       (a+1,b+2)
(%i1) "@"(a, b) := sconcat("(", a, ",", b, ")")$
(%i2) infix ("@", 100, 99)$
(%i3) foo @ bar @ baz;
(%o3)                    (foo,(bar,baz))
(%i4) infix ("@", 100, 101)$
(%i5) foo @ bar @ baz;
(%o5)                    ((foo,bar),baz)
Maxima может обнаружить некоторые синтаксические ошибки, сравнивая объявленные для оператора части речи с актуальными выражениями.
(%i1) infix ("##", 100, 99, expr, expr, expr);
(%o1)                          ##
(%i2) if x ## y then 1 else 0;
Incorrect syntax: Found algebraic expression where logical expression expected
if x ## y then 
             ^
(%i2) infix ("##", 100, 99, expr, expr, clause);
(%o2)                          ##
(%i3) if x ## y then 1 else 0;
(%o3)                if x ## y then 1 else 0
Значение по умолчанию: false
Когда inflag есть true, функции для извлечения частей 
выражения работает с внутренней формой expr.
Заметим, что упрощатель переупорядочивает выражения.
Таким образом, first (x + y) возвращает x если inflag
есть true, и y, если inflag есть false
(first (y + x) дает те же результаты.)
Также, установка inflag равным true и вызов part или substpart есть 
тоже самое, что вызов inpart или substinpart.
Функции, на которые влияет значение inflag:
part, substpart, first, rest, last, length,
конструкция for ... in,
map, fullmap, maplist, reveal и pickapart.
аналогична part, но работает с внутренним
представлением выражения, а не с выводимой формой, и,
таким образом, может быть быстрее, так как форматирование не выполняется.
Нужно быть осторожным  
по отношению к порядку подвыражений в суммах и произведениях
(так как этот порядок переменных в внутренней форме часто отличается
от порядка в выводимой форме) и в работе с унарным минусом,
вычитанием и делением (так как эти операторы удаляются из 
выражения). part (x+y, 0) или inpart (x+y, 0) дает +, 
хотя для ссылки на оператор он должен быть заключен в двойные кавычки. 
Например ... if inpart (%o9,0) = "+" then ....
Примеры:
(%i1) x + y + w*z;
(%o1)                      w z + y + x
(%i2) inpart (%, 3, 2);
(%o2)                           z
(%i3) part (%th (2), 1, 2);
(%o3)                           z
(%i4) 'limit (f(x)^g(x+1), x, 0, minus);
                                  g(x + 1)
(%o4)                 limit   f(x)
                      x -> 0-
(%i5) inpart (%, 1, 2);
(%o5)                       g(x + 1)
Возвращает expr с подвыражениями, которые есть суммы, и
которые не содержат переменную var, замененные метками промежуточных выражений
(атомарными символами, такими как %t1, %t2, ...).  Это часто бывает полезно, 
чтобы избежать ненужного раскрытия подвыражений, которые не содержат
интересующих переменных. Так как данные метки промежуточных выражений имеют подвыражения
в качестве своих значений, то они могут быть подставлены обратно вычислением этого
выражения.
Если exptisolate (значение по умолчанию: false) равно true,  
то isolate исследует показатели атомов (таких как %e), 
которые содержат переменную var.
Если isolate_wrt_times равно true, то isolate изолирует 
также по отношению к произведениям. См. isolate_wrt_times.
Выполните example (isolate) для других примеров.
Значение по умолчанию: false
Когда isolate_wrt_times равно true, то isolate
также изолирует по отношению к произведениям. Например, сравнивает обе установки 
(%i1) isolate_wrt_times: true$
(%i2) isolate (expand ((a+b+c)^2), c);
(%t2)                          2 a
(%t3)                          2 b
                          2            2
(%t4)                    b  + 2 a b + a
                     2
(%o4)               c  + %t3 c + %t2 c + %t4
(%i4) isolate_wrt_times: false$
(%i5) isolate (expand ((a+b+c)^2), c);
                     2
(%o5)               c  + 2 b c + 2 a c + %t4
Значение по умолчанию: false
Когда listconstvars есть true, то в список,
возвращаемый listofvars, включаются %e, %pi, %i и
другие переменные, объявленные константами.
По умолчанию они опускаются.
Значение по умолчанию: true
Когда listdummyvars есть false, "немые переменные" в 
выражении не будут включаться в список, возвращаемый listofvars.
(Смысл "немых переменных" тот же, что и в freeof.
"Немые переменные" – это математические объекты, такие 
как индекс суммы или произведения, переменная предела и переменная интегрирования
в определенном интеграле).
Пример:
(%i1) listdummyvars: true$
(%i2) listofvars ('sum(f(i), i, 0, n));
(%o2)                        [i, n]
(%i3) listdummyvars: false$
(%i4) listofvars ('sum(f(i), i, 0, n));
(%o4)                          [n]
Возвращает список переменных в expr.
Когда listconstvars есть true, то в список,
возвращаемый listofvars, включаются %e, %pi, %i и
другие переменные, объявленные константами.
По умолчанию они опускаются.
(%i1) listofvars (f (x[1]+y) / g^(2+a));
(%o1)                     [g, a, x , y]
                                  1
Для каждого члена m списка list, вызывает freeof (m, expr).
Возвращает false, если какой либо из вызовов freeof дает false, 
иначе возвращает true.
Возвращает наименьший показатель степени x, который явно присутствует в expr. Таким образом,
(%i1) lopow ((x+y)^2 + (x+y)^a, x+y); (%o1) min(a, 2)
Аналогично dpart, но использует 
помеченный бокс. Помеченный бокс аналогичен боксу сделанному с помощью 
dpart, но имеет имя в верхней строке.
Умножает множитель expr (который должен быть суммой) на
другие множители expr. То есть, expr есть 
f_1 f_2 ... f_n,
где по крайней мере
один множитель, скажем f_i, есть сумма членов.  Каждый член 
в той сумме умножается на остальные множители в этом произведении. 
(А именно на все множители, за исключением f_i).  multthru 
не раскрывает суммы, возведенные в степень.
Эта функция есть самый быстрый способ распространять произведения (коммутативные
или некоммутативные) на суммы. Так как дроби представляются как
произведения, то multthru может также использоваться для деления сумм 
на произведения.
multthru (expr_1, expr_2) умножает каждый член в expr_2 
(который должен быть суммой или уравнением) на expr_1.
Если expr_1 сам по себе не является суммой, то эта
форма эквивалентна multthru (expr_1*expr_2).
(%i1) x/(x-y)^2 - 1/(x-y) - f(x)/(x-y)^3;
                      1        x         f(x)
(%o1)             - ----- + -------- - --------
                    x - y          2          3
                            (x - y)    (x - y)
(%i2) multthru ((x-y)^3, %);
                           2
(%o2)             - (x - y)  + x (x - y) - f(x)
(%i3) ratexpand (%);
                           2
(%o3)                   - y  + x y - f(x)
(%i4) ((a+b)^10*s^2 + 2*a*b*s + (a*b)^2)/(a*b*s^2);
                        10  2              2  2
                 (b + a)   s  + 2 a b s + a  b
(%o4)            ------------------------------
                                  2
                             a b s
(%i5) multthru (%);  /* note that this does not expand (b+a)^10 */
                                        10
                       2   a b   (b + a)
(%o5)                  - + --- + ---------
                       s    2       a b
                           s
(%i6) multthru (a.(b+c.(d+e)+f));
(%o6)            a . f + a . c . (e + d) + a . b
(%i7) expand (a.(b+c.(d+e)+f));
(%o7)         a . f + a . c . e + a . c . d + a . b
Возвращает невычисляемую форму функции с именем f. Это необходимо, если требуется представить имя вычисляемой функции так, если бы она была невычисляемой. Заметим, что некоторые вычисляемые функции возвращают их невычисляемые формы, если они не могут быть вычислены для определенных значений аргументов. Невычисляемая форма возвращается также в случае, если перед функцией стоит кавычка.
Возвращает число членов, которое выражение expr имело бы, если оно было бы
полностью раскрыто и не возникло бы сокращений или комбинаций членов.
Заметим, что выражения такие как sin (expr), sqrt (expr), exp (expr) и др.
считаются только как один член, вне независимости от того, как много членов expr имеет (если оно сумма).
Возвращает главный оператор выражения expr.
op (expr) эквивалентно part (expr, 0). 
op возвращает строку, если главный оператор 
встроенный или определенный пользователем префиксный, 
бинарный или n-арный инфиксный, постфиксный, матчфиксный 
или безфиксный оператор.
Иначе op возвращает символ.
op следит за значением глобального флага inflag.
op вычисляет свой аргумент.
См. также args.
Примеры:
(%i1) stringdisp: true$
(%i2) op (a * b * c);
(%o2)                          "*"
(%i3) op (a * b + c);
(%o3)                          "+"
(%i4) op ('sin (a + b));
(%o4)                          sin
(%i5) op (a!);
(%o5)                          "!"
(%i6) op (-a);
(%o6)                          "-"
(%i7) op ([a, b, c]);
(%o7)                          "["
(%i8) op ('(if a > b then c else d));
(%o8)                         "if"
(%i9) op ('foo (a));
(%o9)                          foo
(%i10) prefix (foo);
(%o10)                        "foo"
(%i11) op (foo a);
(%o11)                        "foo"
operatorp (expr, op) возвращает true,
если op равен оператору expr.
operatorp (expr, [op_1, ..., op_n]) возвращает true,
если какой-нибудь элемент op_1, ..., op_n равен оператору expr.
Возвращает выражение, которое выдает тоже самое значение и
побочные эффекты, как и expr, но выполняется более 
эффективно за счет устранения лишних повторных вычислений
общих подвыражений. optimize также имеет побочный 
эффект "сворачивания" своего аргумента так что все общие
подвыражения используются совместно.
Выполните example (optimize) для примеров.
Значение по умолчанию: %
optimprefix это префикс, используемый для генерации символов 
командой optimize.
Устанавливает синонимы для переменных v_1, ..., v_n, такие, что v_1 > v_2 > ... > v_n, и v_n > любой другой переменной, не включенной в аргументы.
См. также orderless.
Возвращает true, если expr_2 предшествует expr_1 в 
упорядочивании, установленном с помощью функции ordergreat.
Устанавливает синонимы для переменных v_1, ..., v_n, такие, что v_1 < v_2 < ... < v_n, и v_n < любой другой переменная, не включенной в аргументы.
Таким образом, полная шкала упорядочивания такова: 
численные константы < объявленные константы < объявленные скаляры < первый аргумент orderless <
...  < последний аргумент orderless < переменные, которые начинаются 
с A < ...
< переменные, которые начинаются с Z < последний аргумент ordergreat <
 ... < первый аргумент ordergreat < объявленные главные переменные mainvar.
См. также ordergreat и mainvar.
Возвращает true, если expr_1 предшествует expr_2 в 
упорядочивании, установленном командой orderless.
Возвращает части внешней формы expr. Функция
получает часть expr, которая определена индексами n_1, ..., n_k.  
Когда первая
часть n_1 expr взята, берется часть n_2 от нее и т.д. 
Результат есть
часть n_k от ... части n_2, от части n_1 выражения expr.
part может быть использована для того, чтобы получить элемент списка,
строку матрицы и т.п.
Если последний аргумент функции part есть список индексов, то
выбираются несколько подвыражений, каждое из которых соответствует 
индексу в списке. Таким образом, part (x + y + z, [1, 3]) есть z+x.
piece запоминает последнее выражение, выбранное при использовании 
функции part. Оно доступно во время выполнения этой функция и, таким образом,
может быть использовано в самой функции, как показано ниже.
Если partswitch установлен равным true, то end возвращается 
когда выбранная часть выражения не существует, иначе выдается сообщение об 
ошибке.
Пример: part (z+2*y, 2, 1) дает 2.
example (part) показывает дополнительные примеры.
Возвращает список из двух выражений. Они есть (1) множители expr (если оно произведение), члены expr (если оно является суммой), или список (если оно является списком), которые не содержит x и, (2) те множители, члены или список, которые содержат.
(%i1) partition (2*a*x*f(x), x); (%o1) [2 a, x f(x)] (%i2) partition (a+b, x); (%o2) [b + a, 0] (%i3) partition ([a, b, f(a), c], a); (%o3) [[b, c], [a, f(a)]]
Значение по умолчанию: false
Когда partswitch есть true, то end возвращается,
если выбранная часть выражения не существует, иначе выдается сообщение
об ошибке.
Присваивает меткам промежуточных выражений все подвыражения 
expr глубины n (целое число).
Подвыражения большей или меньшей глубин меткам не присваиваются.
pickapart возвращает выражение в терминах промежуточных выражений
эквивалентное исходному expr.
См. также part, dpart, lpart, inpart и reveal.
Примеры:
(%i1) expr: (a+b)/2 + sin (x^2)/3 - log (1 + sqrt(x+1));
                                          2
                                     sin(x )   b + a
(%o1)       - log(sqrt(x + 1) + 1) + ------- + -----
                                        3        2
(%i2) pickapart (expr, 0);
                                          2
                                     sin(x )   b + a
(%t2)       - log(sqrt(x + 1) + 1) + ------- + -----
                                        3        2
(%o2)                          %t2
(%i3) pickapart (expr, 1);
(%t3)                - log(sqrt(x + 1) + 1)
                                  2
                             sin(x )
(%t4)                        -------
                                3
                              b + a
(%t5)                         -----
                                2
(%o5)                    %t5 + %t4 + %t3
(%i5) pickapart (expr, 2);
(%t6)                 log(sqrt(x + 1) + 1)
                                  2
(%t7)                        sin(x )
(%t8)                         b + a
                         %t8   %t7
(%o8)                    --- + --- - %t6
                          2     3
(%i8) pickapart (expr, 3);
(%t9)                    sqrt(x + 1) + 1
                                2
(%t10)                         x
                  b + a              sin(%t10)
(%o10)            ----- - log(%t9) + ---------
                    2                    3
(%i10) pickapart (expr, 4);
(%t11)                     sqrt(x + 1)
                      2
                 sin(x )   b + a
(%o11)           ------- + ----- - log(%t11 + 1)
                    3        2
(%i11) pickapart (expr, 5);
(%t12)                        x + 1
                   2
              sin(x )   b + a
(%o12)        ------- + ----- - log(sqrt(%t12) + 1)
                 3        2
(%i12) pickapart (expr, 6);
                  2
             sin(x )   b + a
(%o12)       ------- + ----- - log(sqrt(x + 1) + 1)
                3        2
Содержит последнее выражение, выбранное при использовании функции part.
Оно доступно во время выполнения функции и, таким образом,
может быть в ней использовано.
Возвращает выражение r %e^(%i theta) эквивалентное expr,
такое, что r и theta чисто вещественные.
Выдает степени x, встречающиеся в expr.
load ("powers") загружает эту функцию.
Представляет произведение значений expr с
индексом i, меняющимся от i_0 до i_1.
Невычисляемая форма 'product изображается как заглавная буква пи.
product вычисляет expr и нижний и верхний пределы i_0 и i_1,
product не вычисляет индекс i.
Если верхний и нижний пределы различаются на целое число, expr вычисляется для каждого значения индекса i, и результат есть точное произведение.
Иначе, диапазон индекса является неопределенным.
Для упрощения произведения применяются некоторые правила.
Когда глобальная переменная simpproduct есть true, 
применяются дополнительные правила.
В некоторых случаях, упрощение дает результат, который не является произведением,
иначе, результат есть невычисляемая форма 'product.
См. также nouns и evflag.
Примеры:
(%i1) product (x + i*(i+1)/2, i, 1, 4);
(%o1)           (x + 1) (x + 3) (x + 6) (x + 10)
(%i2) product (i^2, i, 1, 7);
(%o2)                       25401600
(%i3) product (a[i], i, 1, 7);
(%o3)                 a  a  a  a  a  a  a
                       1  2  3  4  5  6  7
(%i4) product (a(i), i, 1, 7);
(%o4)          a(1) a(2) a(3) a(4) a(5) a(6) a(7)
(%i5) product (a(i), i, 1, n);
                             n
                           /===\
                            ! !
(%o5)                       ! !  a(i)
                            ! !
                           i = 1
(%i6) product (k, k, 1, n);
                               n
                             /===\
                              ! !
(%o6)                         ! !  k
                              ! !
                             k = 1
(%i7) product (k, k, 1, n), simpproduct;
(%o7)                          n!
(%i8) product (integrate (x^k, x, 0, 1), k, 1, n);
                             n
                           /===\
                            ! !    1
(%o8)                       ! !  -----
                            ! !  k + 1
                           k = 1
(%i9) product (if k <= 5 then a^k else b^k, k, 1, 10);
                              15  40
(%o9)                        a   b
Возвращает вещественную часть expr. realpart и imagpart 
будут работать для выражений, включающих тригонометрические и гипергеометрические функции,
также как и квадратный корень, логарифм и возведение в степень.
Возвращает выражение a + b %i, эквивалентное expr,
такое, что a и b чисто вещественные.
Удаляет боксы из expr.
rembox (expr, unlabelled) удаляет все непомеченные боксы из expr.
rembox (expr, label) удаляет только боксы, содержащие label.
rembox (expr) удаляет все боксы, помеченные и непомеченные.
Боксы рисуются функциями box, dpart и lpart.
Примеры:
(%i1) expr: (a*d - b*c)/h^2 + sin(%pi*x);
                                  a d - b c
(%o1)                sin(%pi x) + ---------
                                      2
                                     h
(%i2) dpart (dpart (expr, 1, 1), 2, 2);
                        """""""    a d - b c
(%o2)               sin("%pi x") + ---------
                        """""""      """"
                                     " 2"
                                     "h "
                                     """"
(%i3) expr2: lpart (BAR, lpart (FOO, %, 1), 2);
                  FOO"""""""""""   BAR""""""""
                  "    """"""" "   "a d - b c"
(%o3)             "sin("%pi x")" + "---------"
                  "    """"""" "   "  """"   "
                  """"""""""""""   "  " 2"   "
                                   "  "h "   "
                                   "  """"   "
                                   """""""""""
(%i4) rembox (expr2, unlabelled);
                                  BAR""""""""
                   FOO"""""""""   "a d - b c"
(%o4)              "sin(%pi x)" + "---------"
                   """"""""""""   "    2    "
                                  "   h     "
                                  """""""""""
(%i5) rembox (expr2, FOO);
                                  BAR""""""""
                       """""""    "a d - b c"
(%o5)              sin("%pi x") + "---------"
                       """""""    "  """"   "
                                  "  " 2"   "
                                  "  "h "   "
                                  "  """"   "
                                  """""""""""
(%i6) rembox (expr2, BAR);
                   FOO"""""""""""
                   "    """"""" "   a d - b c
(%o6)              "sin("%pi x")" + ---------
                   "    """"""" "     """"
                   """"""""""""""     " 2"
                                      "h "
                                      """"
(%i7) rembox (expr2);
                                  a d - b c
(%o7)                sin(%pi x) + ---------
                                      2
                                     h
Представляет собой суммирование значений expr для
индекса i, изменяющегося от i_0 до i_1.
Невычисляемая форма 'sum изображается как заглавная буква сигма.
sum вычисляет свое слагаемое expr и нижний и верхний пределы i_0 и i_1,
sum не вычисляет индекс i.
Если верхний и нижний пределы отличаются на целое число, слагаемое expr вычисляется для каждого значения индекса суммирования i, и результат есть точная сумма.
Иначе, диапазон индекса является неопределенным.
Для упрощения суммирования применяются некоторые правила.
Когда глобальная переменная simpsum есть true, дополнительные правила применяются.
В некоторых случаях, упрощение дает результат, который не есть суммирование,
иначе, результат есть невычисляемая форма 'sum.
Когда evflag (флаг вычисления) cauchysum есть true,
произведение суммирования выражается как произведение Коши,
в котром индекс внутреннего суммирования есть функция 
индекса внешнего суммирования, а не меняющейся независимо индекс.
Глобальная переменная genindex есть буквенный префикс, 
используемый для 
генерации следующего индекса суммирования,
если требуется автоматически сгенерированный индекс.
gensumnum есть численный суффикс,  используемый для генерирования следующего 
используемый для 
генерации следующего индекса суммирования,
если требуется автоматически сгенерированный индекс.
Когда gensumnum есть false, автоматически сгенерированный индекс
есть только genindex без численного суффикса.
См. также sumcontract, intosum,
bashindices, niceindices,
nouns, evflag и zeilberger.
Примеры:
(%i1) sum (i^2, i, 1, 7);
(%o1)                          140
(%i2) sum (a[i], i, 1, 7);
(%o2)           a  + a  + a  + a  + a  + a  + a
                 7    6    5    4    3    2    1
(%i3) sum (a(i), i, 1, 7);
(%o3)    a(7) + a(6) + a(5) + a(4) + a(3) + a(2) + a(1)
(%i4) sum (a(i), i, 1, n);
                            n
                           ====
                           \
(%o4)                       >    a(i)
                           /
                           ====
                           i = 1
(%i5) sum (2^i + i^2, i, 0, n);
                          n
                         ====
                         \       i    2
(%o5)                     >    (2  + i )
                         /
                         ====
                         i = 0
(%i6) sum (2^i + i^2, i, 0, n), simpsum;
                              3      2
                   n + 1   2 n  + 3 n  + n
(%o6)             2      + --------------- - 1
                                  6
(%i7) sum (1/3^i, i, 1, inf);
                            inf
                            ====
                            \     1
(%o7)                        >    --
                            /      i
                            ====  3
                            i = 1
(%i8) sum (1/3^i, i, 1, inf), simpsum;
                                1
(%o8)                           -
                                2
(%i9) sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf);
                              inf
                              ====
                              \     1
(%o9)                      30  >    --
                              /      2
                              ====  i
                              i = 1
(%i10) sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf), simpsum;
                                  2
(%o10)                       5 %pi
(%i11) sum (integrate (x^k, x, 0, 1), k, 1, n);
                            n
                           ====
                           \       1
(%o11)                      >    -----
                           /     k + 1
                           ====
                           k = 1
(%i12) sum (if k <= 5 then a^k else b^k, k, 1, 10);
          10    9    8    7    6    5    4    3    2
(%o12)   b   + b  + b  + b  + b  + a  + a  + a  + a  + a
Представляет собой сумму expr для каждого элемента x в L.
Невычисляемая форма 'lsum возвращается,
если аргумент L не вычисляется до списка.
Примеры:
(%i1) lsum (x^i, i, [1, 2, 7]);
                            7    2
(%o1)                      x  + x  + x
(%i2) lsum (i^2, i, rootsof (x^3 - 1, x));
                     ====
                     \      2
(%o2)                 >    i
                     /
                     ====
                                   3
                     i in rootsof(x  - 1, x)
Возвращает вычисляемую форму функции с именем f.
См. также verb, noun и nounify.
Примеры:
(%i1) verbify ('foo);
(%o1)                          foo
(%i2) :lisp $%
$FOO
(%i2) nounify (foo);
(%o2)                          foo
(%i3) :lisp $%
%FOO