3 @c File=Expressions.texi
4 @c OriginalRevision=1.61
5 @c TranslatedBy: (c) 2007-12-24 Andrey Siver <ihep-2005@yandex.ru>
9 * Основные сведения о выражениях::
10 * Комплексные выражения::
11 * Невычисляемые и вычисляемые формы::
16 * Функции и переменные для выражений::
19 @node Основные сведения о выражениях, Комплексные выражения, Выражения, Выражения
20 @section Основные сведения о выражениях
22 Есть некоторое число зарезервированных слов, которые не могут быть использованы
23 как имена переменных. Их использование может вызвать скрытую
24 синтаксическую ошибку.
27 integrate next from diff
31 unless product while thru
35 Большинство сущностей в Maxima являются выражениями. Последовательность
36 выражений может превратиться в одно выражение, если элементы последовательности
37 разделены запятыми и последовательность взята в скобки. Это аналогично
38 подобным выражениям последовательного вычисления (comma expressions)
39 в языке программирования @b{C}.
43 (%i2) (x: x+1, x: x^2);
45 (%i3) (if (x > 17) then 2 else 4);
47 (%i4) (if (x > 17) then x: 2 else y: 4, y+x);
51 Даже циклы в Maxima являются выражениями, хотя то значение, которое они
52 возвращают, не слишком полезное @code{done}.
55 (%i1) y: (x: 1, for i from 1 thru 10 do (x: x*i))$
60 То, что Вы действительно хотите получить, нужно включить как третий
61 аргумент в выражение последовательного вычисления,
62 который в действительности возвращает значение.
65 (%i3) y: (x: 1, for i from 1 thru 10 do (x: x*i), x)$
71 @c THIS REALLY NEEDS EXPANSION
72 @node Комплексные выражения, Невычисляемые и вычисляемые формы, Основные сведения о выражениях, Выражения
73 @section Комплексные выражения
75 Комплексное выражение задается в Maxima добавлением к
76 вещественной части выражения @code{%i}, умноженного на мнимую часть.
77 Таким образом, корни уравнения @code{x^2 - 4*x + 13 = 0} равны @code{2 + 3*%i}
78 и @code{2 - 3*%i}. Заметим, что
79 упрощение произведений комплексных выражений может произойти после
80 раскрытия произведения. Упрощение отношений, корней и других
81 функций комплексных выражений, обычно, может быть произведено, с использованием
83 @code{realpart}, @code{imagpart}, @code{rectform}, @code{polarform}, @code{abs}
86 @opencatbox{Категории:}
87 @category{Комплексные переменные}
90 @node Невычисляемые и вычисляемые формы, Идентификаторы, Комплексные выражения, Выражения
91 @section Невычисляемые и вычисляемые формы
93 Maxima различает операторы, которые являются невычисляемыми (nouns) и операторы,
94 который являются вычисляемыми (verbs).
95 Вычисляемым является оператор, который может быть выполнен.
96 Невычисляемым является оператор, который встречается как символ в выражении,
98 По умолчанию, имена функций является вычисляемыми.
99 Вычисляемая форма может быть переведена в невычисляемую, экранированием (quoting) имени функции
100 или применением функции @code{nounify}.
101 Невычисляемая форма может быть переведена в вычисляемую, применением функции @code{verbify}.
102 Флаг вычисления @code{nouns} вызывает функцию @code{ev} для вычисления невычисляемых
105 Вычисляемая форма отличается первым знаком доллара @code{$} в
106 соответствующем Lisp-символе.
107 Невычисляемая форма, наоборот, отличается
108 первым знаком процента @code{%} в соответствующем Lisp-символе.
109 Некоторые невычисляемые формы, такие как @code{'integrate} и @code{'derivative}
110 (возвращаемые @code{diff}),
111 имеют специальные свойства вывода, но не всегда.
112 По умолчанию, невычисляемые и вычисляемые формы функции идентичны при выводе.
113 Глобальный флаг @code{noundisp} вызывает то, что Maxima выводит невычисляемые
114 формы с предшествующей одиночной кавычкой @code{'}.
116 См. также @code{noun}, @code{nouns}, @code{nounify} и @code{verbify}.
125 @c declare (bar, noun);
129 @c integrate (1/x, x, 1, 42);
130 @c 'integrate (1/x, x, 1, 42);
134 (%i1) foo (x) := x^2;
141 (%i4) 'foo (42), nouns;
143 (%i5) declare (bar, noun);
145 (%i6) bar (x) := x/17;
151 (%i8) bar (52), nouns;
155 (%i9) integrate (1/x, x, 1, 42);
157 (%i10) 'integrate (1/x, x, 1, 42);
165 (%i11) ev (%, nouns);
169 @opencatbox{Категории:}
170 @category{Вычисление}
171 @category{Вычисляемые и невычисляемые формы}
174 @node Идентификаторы, Строки, Невычисляемые и вычисляемые формы, Выражения
175 @section Идентификаторы
177 Идентификаторы Maxima могут содержать буквы алфавита,
178 плюс цифры от 0 до 9,
179 плюс любые специальные символы, с предшествующим знаком @code{\}.
181 Цифра может быть первым символом идентификатора,
182 если ей предшествует бэкслеш @code{\}.
183 Для цифр, которые являются вторыми или последующими символами, бэкслеш
186 Специальный символ может быть объявлен алфавитным, с помощью функции @code{declare}.
187 Если это так, его не нужно экранировать бэкслешом в идентификаторе.
188 Изначально к алфавитным символам относятся
189 @code{A} до @code{Z}, @code{a} до @code{z}, @code{%} и @code{_}.
191 Maxima чувствительна к регистру символов. Идентификаторы @code{foo}, @code{FOO} и @code{Foo} различны.
192 Для дальнейших сведений по этому вопросу смотрите @ref{Lisp и Maxima}.
194 Maxima идентификатор является Lisp-символом, который начинается со знака доллар @code{$}.
195 Любой другой Lisp-символ, когда он встречается в Maxima, предваряется знаком вопроса @code{?}.
196 См. @ref{Lisp и Maxima} для более подробной информации по этому вопросу.
201 @c %an_ordinary_identifier42;
202 @c embedded\ spaces\ in\ an\ identifier;
204 @c [foo+bar, foo\+bar];
206 @c [symbolp (foo\+bar), symbolp (\1729)];
207 @c [is (foo\+bar = foo+bar), is (\1729 = 1729)];
209 @c declare ("~", alphabetic);
211 @c [is (foo = FOO), is (FOO = Foo), is (Foo = foo)];
212 @c :lisp (defvar *my-lisp-variable* '$foo)
213 @c ?\*my\-lisp\-variable\*;
217 (%i1) %an_ordinary_identifier42;
218 (%o1) %an_ordinary_identifier42
219 (%i2) embedded\ spaces\ in\ an\ identifier;
220 (%o2) embedded spaces in an identifier
223 (%i4) [foo+bar, foo\+bar];
224 (%o4) [foo + bar, foo+bar]
227 (%i6) [symbolp (foo\+bar), symbolp (\1729)];
229 (%i7) [is (foo\+bar = foo+bar), is (\1729 = 1729)];
233 (%i9) declare ("~", alphabetic);
237 (%i11) [is (foo = FOO), is (FOO = Foo), is (Foo = foo)];
238 (%o11) [false, false, false]
239 (%i12) :lisp (defvar *my-lisp-variable* '$foo)
241 (%i12) ?\*my\-lisp\-variable\*;
245 @opencatbox{Категории:}
249 @node Строки, Неравенства, Идентификаторы, Выражения
252 Строки (последовательности символов в кавычках) заключаются в двойные
253 кавычки @code{"} при вводе и выводятся с или без кавычек,
254 в зависимости от значения глобальной переменной @code{stringdisp}.
256 Строки могут содержать любые символы,
257 включая символы табуляции, новой строки и возврат каретки.
258 Последовательность @code{\"} распознается как литерал двойной кавычки,
259 а @code{\\} как литерал бэкслеша.
260 Когда бэкслеш появляется в конце строки,
261 то бэкслеш и символ завершение строки (либо новая строка, либо возврат каретки)
262 игнорируются, так что данная строка продолжается со следующей строки.
263 Никакие другие специальные комбинации бэкслеша с другим символом не распознаются.
264 Если бэкслеш появляется перед любым символом, отличным от @code{"}, @code{\},
265 или конец строки, то он игнорируется.
266 Нет других способов для представления специальных символов
267 (таких как табуляция, новая строка или возврат каретки)
268 кроме как вставка этого символа в строку.
270 В Maxima нет типа одиночный символ.
271 Одиночный символ представляется как одно-символьная строка.
273 Дополнительный пакет @code{stringproc} содержит
274 много функций для работы со строками.
279 @c s_1 : "This is a string.";
280 @c s_2 : "Embedded \"double quotes\" and backslash \\ characters.";
281 @c s_3 : "Embedded line termination
283 @c s_4 : "Ignore the \
284 @c line termination \
287 @c stringdisp : false;
289 @c stringdisp : true;
293 (%i1) s_1 : "This is a string.";
294 (%o1) This is a string.
295 (%i2) s_2 : "Embedded \"double quotes\" and backslash \\ characters.";
296 (%o2) Embedded "double quotes" and backslash \ characters.
297 (%i3) s_3 : "Embedded line termination
299 (%o3) Embedded line termination
301 (%i4) s_4 : "Ignore the \
305 (%o4) Ignore the line termination characters in this string.
306 (%i5) stringdisp : false;
309 (%o6) This is a string.
310 (%i7) stringdisp : true;
313 (%o8) "This is a string."
316 @opencatbox{Категории:}
320 @node Неравенства, Синтаксис, Строки, Выражения
323 Maxima имеет операторы неравенства @code{<}, @code{<=}, @code{>=},
324 @code{>}, @code{#} и @code{notequal}.
325 См. @code{if} для описания условных выражений.
327 @opencatbox{Категории:}
332 @node Синтаксис, Функции и переменные для выражений, Неравенства, Выражения
335 Возможно определять новые операторы с заданным приоритетом,
336 удалять определения существующих операторов
337 или переопределять приоритет существующих операторов.
338 Оператор может быть унарным префиксным или унарным постфиксным,
339 бинарным инфиксным, n-арным (n-ary) инфиксным, матчфиксным (matchfix)
340 или безфиксным (nofix).
341 Матчфиксный (matchfix) обозначает пару символов, которые заключают между собой свой
342 аргумент или аргументы,
343 а безфиксный (nofix) означает оператор, который не принимает аргументы.
344 Следующие примеры демонстрируют различные типы операторов.
347 @item унарный префиксный
348 изменение знака @code{- a}
349 @item унарный постфиксный
351 @item бинарный инфиксный
352 экспонента @code{a^b}
353 @item n-арный инфиксный
354 сложение @code{a + b}
359 (Встроенных безфиксных операторов нет;
360 для примера такого оператора см. @code{nofix}.)
362 Механизм определения нового оператора прост.
363 Необходимо только объявить функцию как оператор;
364 сама функция оператора может быть определена или нет.
366 Вот пример определенных пользователем операторов.
367 Заметим, что явный вызов функции @code{"dd" (a)} эквивалентен
368 @code{dd a}, также как @code{"<-" (a, b)} эквивалентно @code{a <- b}.
369 Заметим также, что функции @code{"dd"} и @code{"<-"} не определены в этом
378 @c "<-" (a, "dd" (b));
391 (%i6) "<-" (a, "dd" (b));
395 Maxima функции, которые определяют новые операторы, сведены в нижеследующей таблице,
396 с установленными по умолчанию левыми и правыми степенями связывания (lbp и rbp, соответственно).
397 @c REWORK FOLLOWING COMMENT. IT'S NOT CLEAR ENOUGH, GIVEN THAT IT'S FAIRLY IMPORTANT
398 (Степень связывания определяет приоритет операторов. Однако, так как левые
399 и правые степени связывания могут отличаться, степень связывания - это что-то более сложное чем приоритет.)
400 Некоторые функции определения операций принимают дополнительные аргументы,
401 см. описания этих функций для более полного описания деталей.
403 @c MAKE ANCHORS FOR ALL 6 FUNCTIONS AND CHANGE @code TO @ref ACCORDINGLY
414 (степень связывания не применима)
416 (степень связывания не применима)
419 Для сравнения, приведем некоторые встроенные операторы, и их левые и правые
451 @code{remove} и @code{kill} удаляют свойства оператора из атома.
452 @code{remove ("@var{a}", op)} удаляет только свойства оператора @var{a}.
453 @code{kill ("@var{a}")} удаляет все свойства @var{a}, включая свойства
455 Заметим, что имя оператора должно быть взято в кавычки.
457 @c MAYBE COPY THIS EXAMPLE TO remove AND/OR kill
460 @c "@" (a, b) := a^b;
474 (%i2) "@@" (a, b) := a^b;
479 (%i4) remove ("@@", op);
482 Incorrect syntax: @@ is not an infix operator
494 Incorrect syntax: @@ is not an infix operator
501 @node Функции и переменные для выражений, , Синтаксис, Выражения
502 @section Функции и переменные для выражений
504 @deffn {Функция} at (@var{expr}, [@var{eqn_1}, ..., @var{eqn_n}])
505 @deffnx {Функция} at (@var{expr}, @var{eqn})
506 Вычисляет выражение @var{expr}, предполагая значения для переменных,
508 уравнений @code{[@var{eqn_1}, ..., @var{eqn_n}]} или одном уравнении @var{eqn}.
510 Если подвыражение зависит от переменных, для которых заданы значения,
511 но нет, заданного при помощи @code{atvalue} значения, или оно не может быть вычислено
512 иным способом, то возвращается невычисляемая форма @code{at}, которая выводится
515 Функция @code{at} выполняет множественные подстановки последовательно, не параллельно.
517 См. также @code{atvalue}.
518 Для описания других функций, которые выполняют подстановки,
519 см. также @code{subst} и @code{ev}.
522 @c COPIED FROM example(at)
525 @c atvalue (f(x,y), [x = 0, y = 1], a^2);
526 @c atvalue ('diff (f(x,y), x), x = 0, 1 + y);
527 @c printprops (all, atvalue);
528 @c diff (4*f(x, y)^2 - u(x, y)^2, x);
529 @c at (%, [x = 0, y = 1]);
532 (%i1) atvalue (f(x,y), [x = 0, y = 1], a^2);
535 (%i2) atvalue ('diff (f(x,y), x), x = 0, 1 + y);
537 (%i3) printprops (all, atvalue);
540 --- (f(@@1, @@2))! = @@2 + 1
548 (%i4) diff (4*f(x, y)^2 - u(x, y)^2, x);
550 (%o4) 8 f(x, y) (-- (f(x, y))) - 2 u(x, y) (-- (u(x, y)))
552 (%i5) at (%, [x = 0, y = 1]);
555 (%o5) 16 a - 2 u(0, 1) (-- (u(x, y))! )
562 @opencatbox{Категории:}
563 @category{Вычисление}
564 @category{Дифференциальные уравнения}
567 @deffn {Функция} box (@var{expr})
568 @deffnx {Функция} box (@var{expr}, @var{a})
569 Возвращает @var{expr}, заключенное в бокс (box).
570 Возвращаемое значение есть выражение с @code{box} в качестве оператора и
571 @var{expr} как аргумент.
572 Бокс изображается при выводе, когда @code{display2d} есть @code{true}.
574 @code{box (@var{expr}, @var{a})}
575 заключает @var{expr} в бокс, обозначенный символом @var{a}.
576 Эта метка обрезается, если она длиннее чем ширина бокса.
578 @code{box} вычисляет свои аргументы.
579 Однако, выражение, взятое в бокс, не вычисляется до его содержимого,
580 так что выражения в боксе эффективно исключается из вычислений.
582 @code{boxchar} есть символ, используемый для отображения бокса в
583 функциях @code{box}, в @code{dpart} и в @code{lpart}.
592 @c box (a^2 + b^2, term_1);
593 @c 1729 - box (1729);
595 @c box (sin(x) + cos(y));
598 (%i1) box (a^2 + b^2);
607 (%i4) box (a^2 + b^2);
610 (%o4) "(c - d) + 1522756"
612 (%i5) box (a^2 + b^2, term_1);
615 (%o5) "(c - d) + 1522756"
617 (%i6) 1729 - box (1729);
623 (%i8) box (sin(x) + cos(y));
625 (%o8) -cos(y) + sin(x)-
629 @opencatbox{Категории:}
635 @defvr {Управляющая переменная} boxchar
636 Значение по умолчанию: @code{"}
638 @code{boxchar} есть символ, который используется для изображения бокса в
639 функциях @code{box}, в @code{dpart} и в @code{lpart} .
641 Все боксы в выражении изображаются с текущим значением @code{boxchar}.
642 Изображаемый символ не сохраняется в выражении бокса.
644 @opencatbox{Категории:}
650 @deffn {Функция} carg (@var{z})
651 Возвращает комплексный аргумент @var{z}.
652 Этот комплексный аргумент есть угол @code{theta} в пределах @code{(-%pi, %pi]}
653 такой что @code{r exp (theta %i) = @var{z}}, где @code{r} есть модуль
655 @c ACTUALLY carg DOESN'T ALWAYS RETURN A VALUE IN (-%pi, %pi]; SEE SF BUG REPORT # 816166
657 @code{carg} есть вычислительная функция,
658 но не функция упрощения.
659 @c PROBABLY NEED TO EXPLAIN IMPLICATIONS OF ABOVE STATEMENT
660 @c SEE ALSO SF BUG REPORT # 902290
662 @code{carg} игнорирует декларацию @code{declare (@var{x}, complex)}
663 и рассматривает @var{x} как вещественную переменную.
664 Это ошибка. @c SEE SF BUG REPORT # 620246
666 См. также @code{abs} (комплексный модуль), @code{polarform}, @code{rectform},
667 @code{realpart} и @code{imagpart}.
675 @c carg (exp (%pi * %i));
676 @c carg (exp (3/2 * %pi * %i));
677 @c carg (17 * exp (2 * %i));
687 (%i3) carg (exp (%i));
689 (%i4) carg (exp (%pi * %i));
691 (%i5) carg (exp (3/2 * %pi * %i));
695 (%i6) carg (17 * exp (2 * %i));
699 @opencatbox{Категории:}
700 @category{Комплексные переменные}
705 @c NEEDS EXPANSION, CLARIFICATION, AND EXAMPLES
706 @c CROSS REF declare, properties, ETC
707 @deffn {Специальный оператор} constant
708 @code{declare (@var{a}, constant)} объявляет @var{a} как константу.
710 @c WHAT EXACTLY ARE THE CONSEQUENCES OF DECLARING AN ATOM TO BE CONSTANT ??
712 @opencatbox{Категории:}
713 @category{Факты и выводы}
719 @deffn {Функция} constantp (@var{expr})
720 Возвращает @code{true}, если @var{expr} есть константное выражение,
721 иначе возвращает @code{false}.
722 @c WHAT DOES MAXIMA KNOW ABOUT CONSTANT EXPRESSIONS ??
724 Выражение рассматривается как константное, если его аргументы
726 числа (включая рациональные числа, которые отображаются с помощью @code{/R/}),
727 символьные константы, такие как @code{%pi}, @code{%e} и @code{%i},
728 переменные, равные константами, или объявленные константами с помощью @code{declare},
729 или функции, чьи аргументы есть константы.
731 @code{constantp} вычисляет свои аргументы.
736 @c constantp (7 * sin(2));
737 @c constantp (rat (17/29));
738 @c constantp (%pi * sin(%e));
739 @c constantp (exp (x));
740 @c declare (x, constant);
741 @c constantp (exp (x));
742 @c constantp (foo (x) + bar (%e) + baz (2));
746 (%i1) constantp (7 * sin(2));
748 (%i2) constantp (rat (17/29));
750 (%i3) constantp (%pi * sin(%e));
752 (%i4) constantp (exp (x));
754 (%i5) declare (x, constant);
756 (%i6) constantp (exp (x));
758 (%i7) constantp (foo (x) + bar (%e) + baz (2));
763 @opencatbox{Категории:}
764 @category{Функции предикаты}
770 @c NEEDS EXPANSION, CLARIFICATION, AND EXAMPLES
771 @c THIS ITEM IS EXTREMELY IMPORTANT
772 @c ENSURE THAT ALL KEYWORDS RECOGNIZED BY declare HAVE THEIR OWN DOCUMENTATION ITEMS !!
773 @c ALSO: HOW TO FIND THE LIST OF ALL SYMBOLS WHICH HAVE A GIVEN PROPERTY ??
775 @deffn {Функция} declare (@var{a_1}, @var{p_1}, @var{a_2}, @var{p_2}, ...)
776 Присваивает атому или списку атомов @var{a_i} свойство или список свойств @var{p_i}.
777 Когда @var{a_i} и/или @var{p_i} есть списки,
778 каждый из атомом получает все свойства.
780 @code{declare} не вычисляет свои аргументы.
781 @code{declare} всегда возвращает @code{done}.
783 Как отмечено в описании для каждого флага декларации,
785 @code{featurep(@var{object}, @var{feature})}
786 возвращает @code{true}, если @var{object} был объявлен, как имеющий @var{feature}.
787 Однако, @code{featurep} не распознает некоторые флаги. Это ошибка.
789 См. также @code{features}.
791 @code{declare} распознает следующие свойства:
795 Делает @var{a_i} известным для @code{ev} так, что эта функция названная как @var{a_i},
796 применяется когда @var{a_i} появляется как флаговый аргумент @code{ev}.
800 Делает @var{a_i} известным для функции @code{ev} так, что @var{a_i}
801 связывается с @code{true}
802 во время выполнение @code{ev}, когда @var{a_i} появляется как флаговый аргумент @code{ev}.
805 @c OBSOLETE @code{special} (RECOGNIZED BY DECLARE BUT NEVER USED ANYWHERE)
807 @c OBSOLETE @code{nonarray} (RECOGNIZED BY DECLARE BUT NEVER USED ANYWHERE)
809 @item @code{bindtest}
810 Указывает Maxima то, что следует вызвать ошибку, когда при вычислении значение @var{a_i} не определено.
813 Указывает Maxima считать @var{a_i} невычисляемой формой.
814 Эффект состоит в замене @var{a_i} на @code{'@var{a_i}}
815 или @code{nounify(@var{a_i})}, в зависимости от контекста.
817 @item @code{constant}
818 Указывает Maxima рассматривать @var{a_i} как символьную константу.
819 @c WHAT MAXIMA KNOWS ABOUT SYMBOLIC CONSTANTS IS PRETTY LIMITED
820 @c DUNNO IF WE WANT TO GET INTO DETAILS HERE.
821 @c MAYBE IN THE DOCUMENTATION FOR CONSTANT (IF THERE IS SUCH)
824 Указывает Maxima рассматривать @var{a_i} как скалярную переменную.
826 @item @code{nonscalar}
827 Указывает Maxima рассматривать @var{a_i} как нескалярную переменную.
828 Обычное применение состоит в том, чтобы объявлять переменная как символьный вектор или матрицу.
831 Указывает Maxima рассматривать @var{a_i} как "главную переменную" (@code{mainvar}).
832 @code{ordergreatp} определяет упорядочивание атомов таким образом:
834 (главные переменные) > (другие переменные) > (скалярный переменные) > (константы) > (числа)
836 @item @code{alphabetic}
837 Указывает Maxima рассматривать @var{a_i} как алфавитный символ.
840 Указывает Maxima рассматривать @var{a_i} как имя свойства.
841 Тогда другие атомы могут иметь свойство @var{a_i}.
843 @item @code{rassociative}, @code{lassociative}
844 Указывает Maxima рассматривать @var{a_i} как право-ассоциативную или лево-ассоциативную функцию.
847 Указывает Maxima рассматривать @var{a_i} как n-арную функцию.
849 Декларация @code{nary} это не тоже, что вызов функции @code{nary}.
850 Единственный эффект @code{declare(foo, nary)} состоит в том, чтобы обучить упрощатель Maxima
851 упрощать вложенные выражения,
852 например, чтобы @code{foo(x, foo(y, z))} упрощалось до @code{foo(x, y, z)}.
854 @item @code{symmetric}, @code{antisymmetric}, @code{commutative}
855 Указывает Maxima рассматривать @var{a_i} как симметричную или антисимметричную функцию.
856 @code{commutative} это тоже самое, что @code{symmetric}.
858 @item @code{oddfun}, @code{evenfun}
859 Указывает Maxima рассматривать @var{a_i} как нечетную или четную функцию.
861 @item @code{outative}
862 Указывает Maxima упрощать выражения с @var{a_i}
863 путем выноса константных множителей за пределы первого аргумента.
865 Когда @var{a_i} имеет один аргумент,
866 множитель рассматривается константным, если он есть литерал или объявлен константой.
868 Когда @var{a_i} имеет два или более аргументов,
869 множитель рассматривается константой,
870 если второй аргумент есть символ
871 и этот множитель свободен от этого второго аргумента.
873 @item @code{multiplicative}
874 Указывает Maxima упрощать выражения @var{a_i}
875 путем подстановки @code{@var{a_i}(x * y * z * ...)} @code{-->}
876 @code{@var{a_i}(x) * @var{a_i}(y) * @var{a_i}(z) * ...}.
877 Эта подстановка выполняется только для первого аргумента.
879 @item @code{additive}
880 Указывает Maxima упрощать @var{a_i} выражения
881 путем подстановки @code{@var{a_i}(x + y + z + ...)} @code{-->}
882 @code{@var{a_i}(x) + @var{a_i}(y) + @var{a_i}(z) + ...}.
883 Эта подстановка выполняется только для первого аргумента.
886 Эквивалентно объявлению @var{a_i} совместно @code{outative} и @code{additive}.
888 @c OBSOLETE @code{analytic} (RECOGNIZED BY DECLARE BUT NEVER USED ANYWHERE)
890 @item @code{integer}, @code{noninteger}
891 Указывает Maxima рассматривать @var{a_i} как целую или нецелую переменную.
893 @item @code{even}, @code{odd}
894 Указывает Maxima рассматривать @var{a_i} как четную или нечетную целую переменную.
896 @item @code{rational}, @code{irrational}
897 Указывает Maxima рассматривать @var{a_i} как рациональную или иррациональную вещественную переменную.
899 @item @code{real}, @code{imaginary}, @code{complex}
900 Указывает Maxima рассматривать @var{a_i} как вещественную, чисто мнимую или комплексную переменную.
902 @item @code{increasing}, @code{decreasing}
903 Указывает Maxima рассматривать @var{a_i} как растущую или убывающую функцию.
904 @c MAXIMA FAILS TO DEDUCE F(2) > F(1) FOR INCREASING FUNCTION F
905 @c AND FAILS TO DEDUCE ANYTHING AT ALL ABOUT DECREASING FUNCTIONS
906 @c REPORTED AS SF BUG # 1483194
909 Указывает Maxima рассматривать @var{a_i} как положительную функцию.
911 @item @code{integervalued}
912 Указывает Maxima рассматривать @var{a_i} как целочисленную функцию.
918 Декларации @code{evfun} и @code{evflag}.
920 @c declare (expand, evfun);
922 @c (a + b)^3, expand;
923 @c declare (demoivre, evflag);
925 @c exp (a + b*%i), demoivre;
928 (%i1) declare (expand, evfun);
933 (%i3) (a + b)^3, expand;
935 (%o3) b + 3 a b + 3 a b + a
936 (%i4) declare (demoivre, evflag);
938 (%i5) exp (a + b*%i);
941 (%i6) exp (a + b*%i), demoivre;
943 (%o6) %e (%i sin(b) + cos(b))
946 Декларация @code{bindtest}.
949 @c declare (aa, bindtest);
957 (%i2) declare (aa, bindtest);
961 -- an error. Quitting. To debug this try debugmode(true);
968 Декларация @code{noun}.
970 @c factor (12345678);
971 @c declare (factor, noun);
972 @c factor (12345678);
976 (%i1) factor (12345678);
979 (%i2) declare (factor, noun);
981 (%i3) factor (12345678);
982 (%o3) factor(12345678)
988 Декларации @code{constant}, @code{scalar}, @code{nonscalar} и @code{mainvar}.
990 @c declare (bb, constant);
991 @c declare (cc, scalar);
992 @c declare (dd, nonscalar);
993 @c declare (ee, mainvar);
998 Декларация @code{alphabetic}.
1001 @c declare ("~", alphabetic);
1002 @c xx~yy + yy~xx + ~xx~~yy~;
1005 (%i1) xx\~yy : 1729;
1007 (%i2) declare ("~", alphabetic);
1009 (%i3) xx~yy + yy~xx + ~xx~~yy~;
1010 (%o3) ~xx~~yy~ + yy~xx + 1729
1013 Декларация @code{feature}.
1015 @c declare (FOO, feature);
1016 @c declare (x, FOO);
1017 @c featurep (x, FOO);
1020 (%i1) declare (FOO, feature);
1022 (%i2) declare (x, FOO);
1024 (%i3) featurep (x, FOO);
1028 Декларации @code{rassociative} и @code{lassociative}.
1030 @c declare (F, rassociative);
1031 @c declare (G, lassociative);
1036 Декларация @code{nary}.
1038 @c H (H (a, b), H (c, H (d, e)));
1039 @c declare (H, nary);
1040 @c H (H (a, b), H (c, H (d, e)));
1043 (%i1) H (H (a, b), H (c, H (d, e)));
1044 (%o1) H(H(a, b), H(c, H(d, e)))
1045 (%i2) declare (H, nary);
1047 (%i3) H (H (a, b), H (c, H (d, e)));
1048 (%o3) H(a, b, c, d, e)
1051 Декларации @code{symmetric} и @code{antisymmetric}.
1054 @c declare (S, symmetric);
1056 @c S (a, c, e, d, b);
1058 @c declare (T, antisymmetric);
1060 @c T (a, c, e, d, b);
1065 (%i2) declare (S, symmetric);
1069 (%i4) S (a, c, e, d, b);
1070 (%o4) S(a, b, c, d, e)
1073 (%i6) declare (T, antisymmetric);
1077 (%i8) T (a, c, e, d, b);
1078 (%o8) T(a, b, c, d, e)
1081 Декларации @code{oddfun} и @code{evenfun}.
1084 @c declare (o, oddfun);
1087 @c declare (e, evenfun);
1091 (%i1) o (- u) + o (u);
1093 (%i2) declare (o, oddfun);
1095 (%i3) o (- u) + o (u);
1097 (%i4) e (- u) - e (u);
1099 (%i5) declare (e, evenfun);
1101 (%i6) e (- u) - e (u);
1105 Декларация @code{outative}.
1108 @c declare (F1, outative);
1110 @c declare (zz, constant);
1116 (%i2) declare (F1, outative);
1120 (%i4) declare (zz, constant);
1126 Декларация @code{multiplicative}.
1129 @c declare (F2, multiplicative);
1133 (%i1) F2 (a * b * c);
1135 (%i2) declare (F2, multiplicative);
1137 (%i3) F2 (a * b * c);
1138 (%o3) F2(a) F2(b) F2(c)
1141 Декларация @code{additive}.
1144 @c declare (F3, additive);
1148 (%i1) F3 (a + b + c);
1150 (%i2) declare (F3, additive);
1152 (%i3) F3 (a + b + c);
1153 (%o3) F3(c) + F3(b) + F3(a)
1156 Декларация @code{linear}.
1158 @c 'sum (F(k) + G(k), k, 1, inf);
1159 @c declare (nounify (sum), linear);
1160 @c 'sum (F(k) + G(k), k, 1, inf);
1163 (%i1) 'sum (F(k) + G(k), k, 1, inf);
1167 (%o1) > (G(k) + F(k))
1171 (%i2) declare (nounify (sum), linear);
1173 (%i3) 'sum (F(k) + G(k), k, 1, inf);
1177 (%o3) > G(k) + > F(k)
1183 @opencatbox{Категории:}
1184 @category{Факты и выводы}
1190 @deffn {Функция} disolate (@var{expr}, @var{x_1}, ..., @var{x_n})
1191 аналогична @code{isolate (@var{expr}, @var{x})},
1192 за исключением того, что она дает возможность пользователю изолировать
1193 более чем одну переменную одновременно. Это может быть полезно, например,
1194 если пользователь пытается заменить переменные в многократном
1195 интегрировании и эта замена переменных включает две или более переменных интегрирования.
1196 Данная функция автоматически загружается из
1197 @file{simplification/disol.mac}. Демонстрация доступна по
1198 @code{demo("disol")$}.
1200 @opencatbox{Категории:}
1201 @category{Выражения}
1207 @deffn {Функция} dispform (@var{expr})
1208 Возвращает внешнее представление @var{expr} по отношению к его
1209 главному оператору. Это может быть полезно в сочетании с @code{part}, которая
1210 также имеет дело с внешним представлением. Предположим @var{expr} есть -A.
1211 Тогда внутреннее представление @var{expr} есть "*"(-1,A), в то время как
1212 внешнее представление есть "-"(A). @code{dispform (@var{expr}, all)} конвертирует
1213 все выражение (не только верхний уровень) в внешний формат. Например,
1214 если @code{expr: sin (sqrt (x))}, то @code{freeof (sqrt, expr)} и
1215 @code{freeof (sqrt, dispform (expr))} дают @code{true}, в то время как
1216 @code{freeof (sqrt, dispform (expr, all))} дает @code{false}.
1218 @opencatbox{Категории:}
1219 @category{Выражения}
1225 @deffn {Функция} distrib (@var{expr})
1226 Распространяет суммы над произведениями. Она отличается от @code{expand}
1227 тем, что она работает только на самом верхнем уровне выражения, то есть она не
1228 рекурсивная и работает быстрее чем @code{expand}. Она отличается от @code{multthru} тем,
1229 что раскрывает все суммы на этом уровне.
1234 (%i1) distrib ((a+b) * (c+d));
1235 (%o1) b d + a d + b c + a c
1236 (%i2) multthru ((a+b) * (c+d));
1237 (%o2) (b + a) d + (b + a) c
1238 (%i3) distrib (1/((a+b) * (c+d)));
1240 (%o3) ---------------
1242 (%i4) expand (1/((a+b) * (c+d)), 1, 0);
1244 (%o4) ---------------------
1245 b d + a d + b c + a c
1248 @opencatbox{Категории:}
1249 @category{Выражения}
1255 @deffn {Функция} dpart (@var{expr}, @var{n_1}, ..., @var{n_k})
1256 Выбирает тоже подвыражение что и @code{part}, но
1257 вместо только возвращения этого подвыражения как значения, она возвращает
1258 все выражение с выбранным подвыражением, изображенным внутри
1259 бокса. Данный бокс в действительности является частью выражения.
1262 (%i1) dpart (x+y/z^2, 1, 2, 1);
1271 @opencatbox{Категории:}
1272 @category{Выражения}
1277 @c PROBABLY MORE TO BE SAID HERE
1279 @deffn {Функция} exp (@var{x})
1280 Представляет собой экспоненциальную функцию.
1281 Все экземпляры @code{exp (@var{x})} при вводе упрощаются до @code{%e^@var{x}}.
1282 @code{exp} не присутствует в упрощенных выражениях.
1284 Если @code{demoivre} равно @code{true}, то @code{%e^(a + b %i)} упрощается до
1285 @code{%e^(a (cos(b) + %i sin(b)))}, если @code{b} свободна от @code{%i}. См. @code{demoivre}.
1287 Если @code{%emode}, равно @code{true}, то
1288 @code{%e^(%pi %i x)} упрощается. См. @code{%emode}.
1290 Если @code{%enumer}, равно @code{true}, то @code{%e} заменяется на
1291 2.718..., когда @code{numer} есть @code{true}. См. @code{%enumer}.
1293 @c NEED EXAMPLES HERE
1295 @opencatbox{Категории:}
1296 @category{Экспоненциальные и логарифмические функции}
1301 @defvr {Управляющая переменная} %emode
1302 Значение по умолчанию: @code{true}
1304 Когда @code{%emode} есть @code{true},
1305 то @code{%e^(%pi %i x)} упрощается следующим образом.
1307 @code{%e^(%pi %i x)} упрощается до @code{cos (%pi x) + %i sin (%pi x)}, если @code{x} есть
1308 число с плавающей точкой, целое или произведение 1/2, 1/3, 1/4 или 1/6 и тогда в дальнейшем упрощается.
1310 Для других численных @code{x},
1311 @code{%e^(%pi %i x)} упрощается до @code{%e^(%pi %i y)}, где @code{y} есть
1312 @code{x - 2 k} для некоторых целых @code{k}, таких что @code{abs(y) < 1}.
1314 Когда @code{%emode} есть @code{false},
1315 специальное упрощение @code{%e^(%pi %i x)} не выполняется.
1317 @c NEED EXAMPLES HERE
1319 @opencatbox{Категории:}
1320 @category{Экспоненциальные и логарифмические функции}
1321 @category{Флаги и переменные упрощения}
1326 @defvr {Управляющая переменная} %enumer
1327 Значение по умолчанию: @code{false}
1329 Когда @code{%enumer} есть @code{true},
1330 то @code{%e} заменяется своим численным значением
1331 2.718..., когда @code{numer} есть @code{true}.
1333 Когда @code{%enumer} есть @code{false}, эта подстановка выполняется
1334 только если экспонента в @code{%e^x} вычисляется до численного значения.
1336 См. также @code{ev} и @code{numer}.
1338 @c NEED EXAMPLES HERE
1340 @opencatbox{Категории:}
1341 @category{Экспоненциальные и логарифмические функции}
1342 @category{Флаги вычисления}
1347 @defvr {Управляющая переменная} exptisolate
1348 Значение по умолчанию: @code{false}
1350 @c WHAT DOES THIS MEAN EXACTLY ??
1351 Если @code{exptisolate} равно @code{true}, то @code{isolate (expr, var)}
1352 исследует показатели атомов (таких как @code{%e}), которые содержат @code{var}.
1354 @c NEED EXAMPLES HERE
1356 @opencatbox{Категории:}
1357 @category{Выражения}
1362 @defvr {Управляющая переменная} exptsubst
1363 Значение по умолчанию: @code{false}
1365 Если @code{exptsubst} равно @code{true}, то позволяется выполнять подстановки, такие как @code{y}
1366 для @code{%e^x} в @code{%e^(a x)}.
1368 @c NEED EXAMPLES HERE
1370 @opencatbox{Категории:}
1371 @category{Экспоненциальные и логарифмические функции}
1372 @category{Выражения}
1377 @deffn {Функция} freeof (@var{x_1}, ..., @var{x_n}, @var{expr})
1378 @code{freeof (@var{x_1}, @var{expr})}
1379 Возвращает @code{true}, если никакое подвыражение @var{expr} не равно @var{x_1}
1380 или если @var{x_1} возникает только как немая переменная в
1381 @var{expr}, иначе возвращает @code{false}.
1383 @code{freeof (@var{x_1}, ..., @var{x_n}, @var{expr})}
1384 эквивалентно @code{freeof (@var{x_1}, @var{expr}) and ... and freeof (@var{x_n}, @var{expr})}.
1386 Аргументы @var{x_1}, ..., @var{x_n}
1387 могут быть именами функций или переменных, именами с индексами,
1388 операторами (заключенными в двойные кавычки) или выражениями общего вида.
1389 @code{freeof} вычисляет свои аргументы.
1391 @code{freeof} действует только на @var{expr} в том виде, в как оно есть,
1392 (после упрощения и вычисления) и
1393 не пытается определить, может ли некоторое эквивалентное выражение дать другой результат.
1394 В частности, упрощение может давать эквивалентное, но другое выражение, которое
1395 содержит некоторые различные элементы чем исходная форма @var{expr}.
1397 Переменная является немой переменной в некотором выражении, если она не имеет значения за пределами выражения.
1398 Немые переменные, распознаваемые @code{freeof}, есть
1399 индекс суммы или произведения, переменная предела в @code{limit},
1400 переменная интегрирования в определенном интеграле @code{integrate},
1401 исходная переменная в @code{laplace},
1402 формальные переменные в выражениях @code{at}
1403 и аргументы в @code{lambda} выражениях.
1404 Локальные переменные в @code{block} не распознаются @code{freeof} как немые
1405 переменные. Это ошибка.
1407 Неопределенное интегрирование @code{integrate} @i{не} свободно от
1408 переменной интегрирования.
1412 Аргументы есть имена функций, переменные, имена с индексами, операторы и выражения.
1413 @code{freeof (a, b, expr)} эквивалентно
1414 @code{freeof (a, expr) and freeof (b, expr)}.
1417 (%i1) expr: z^3 * cos (a[1]) * b^(c+d);
1421 (%i2) freeof (z, expr);
1423 (%i3) freeof (cos, expr);
1425 (%i4) freeof (a[1], expr);
1427 (%i5) freeof (cos (a[1]), expr);
1429 (%i6) freeof (b^(c+d), expr);
1431 (%i7) freeof ("^", expr);
1433 (%i8) freeof (w, sin, a[2], sin (a[2]), b*(c+d), expr);
1438 @code{freeof} вычисляет свои аргументы.
1441 (%i1) expr: (a+b)^5$
1443 (%i3) freeof (c, expr);
1448 @code{freeof} не учитывает эквивалентные выражения.
1449 Упрощение может дать эквивалентное, но отличное выражение.
1452 (%i1) expr: (a+b)^5$
1453 (%i2) expand (expr);
1455 (%o2) b + 5 a b + 10 a b + 10 a b + 5 a b + a
1456 (%i3) freeof (a+b, %);
1458 (%i4) freeof (a+b, expr);
1463 (%i6) freeof (exp, exp (x));
1467 @item Суммирование или определенный интеграл свободно от своих немых переменных.
1468 Неопределенный интеграл не свободен от своей переменной интегрирования.
1471 (%i1) freeof (i, 'sum (f(i), i, 0, n));
1473 (%i2) freeof (x, 'integrate (x^2, x, 0, 1));
1475 (%i3) freeof (x, 'integrate (x^2, x));
1480 @opencatbox{Категории:}
1481 @category{Выражения}
1486 @c IS THIS DEFINITION CORRECT ??
1487 @deffn {Функция} genfact (@var{x}, @var{y}, @var{z})
1488 Возвращает обобщенный факториал, заданный как
1489 @code{x (x-z) (x - 2 z) ... (x - (y - 1) z)}. Таким образом, для целого @var{x},
1490 @code{genfact (x, x, 1) = x!} и @code{genfact (x, x/2, 2) = x!!}.
1492 @opencatbox{Категории:}
1493 @category{Гамма функция и факториал}
1498 @deffn {Функция} imagpart (@var{expr})
1499 Возвращает мнимую часть выражения @var{expr}.
1501 @code{imagpart} есть вычислительная функция,
1502 а не функция упрощения.
1503 @c PROBABLY NEED TO EXPLAIN IMPLICATIONS OF ABOVE STATEMENT
1504 @c SEE ALSO SF BUG REPORT # 902290
1506 См. также @code{abs}, @code{carg}, @code{polarform}, @code{rectform}
1509 @c NEED EXAMPLES HERE
1511 @opencatbox{Категории:}
1512 @category{Комплексные переменные}
1518 @deffn {Функция} infix (@var{op})
1519 @deffnx {Функция} infix (@var{op}, @var{lbp}, @var{rbp})
1520 @deffnx {Функция} infix (@var{op}, @var{lbp}, @var{rbp}, @var{lpos}, @var{rpos}, @var{pos})
1521 Объявляет @var{op} инфиксным оператором.
1522 Инфиксный оператор есть функция двух аргументов,
1523 с именем функции, записанным между этими аргументами.
1524 Например, оператор вычитания @code{-} есть инфиксный оператор.
1526 @code{infix (@var{op})} объявляет @var{op} инфиксным оператором
1527 со степенями связывания по умолчанию (левая и правая, обе равны 180)
1528 и частями речи по умолчанию (левая и правая, обе равны @code{any}).
1529 @c HOW IS pos DIFFERENT FROM lpos AND rpos ??
1531 @code{infix (@var{op}, @var{lbp}, @var{rbp})} объявляет @var{op} инфиксным оператором
1532 с указанными левой и правой степени связывания
1533 и частями речи по умолчанию (левая и правая, обе равны @code{any}).
1535 @code{infix (@var{op}, @var{lbp}, @var{rbp}, @var{lpos}, @var{rpos}, @var{pos})} объявляет @var{op} инфиксным оператором
1536 с указанными левой и правой степенями связывания и частями речи
1537 @var{lpos}, @var{rpos} и @var{pos} для левого операнда, правого операнда и результата
1540 Термин "часть речи" по отношению к объявлению операторов, означает тип выражения.
1541 Различается три типа: @code{expr}, @code{clause} и @code{any},
1542 которые означают алгебраическое выражение, логическое выражение и выражение
1543 произвольного типа соответственно.
1544 Maxima может обнаружить некоторые синтаксические ошибки, сравнивая
1545 объявленные для оператора части речи с актуальными выражениями.
1547 Приоритет @var{op} по отношению к другим операторам
1548 выводится из левой и правой степеней связывания рассматриваемых операторов.
1549 Если левые и правые степени связывания @var{op} обе больше
1550 левых и правых степеней связывания другого оператора,
1551 то @var{op} имеет более высокий приоритет чем этот оператор.
1552 Если степени связывания обе не больше или меньше,
1553 то имеют место некоторые более сложные соотношения.
1555 Ассоциативность @var{op} зависит от его степени связывания.
1556 Большая левая степень связывания (@var{lbp}) означает, что
1557 @var{op} вычисляется до других операторов, стоящих слева от него в выражении,
1558 в то время как большая правая степень связывания (@var{rbp}) означает, что
1559 @var{op} вычисляется до других операторов, стоящих справа от него в выражении.
1560 Таким образом, большее @var{lbp} делает @var{op} право-ассоциативным,
1561 в то время как большее @var{rbp} делает @var{op} лево-ассоциативным.
1562 Если @var{lbp} равно @var{rbp}, то @var{op} является лево-ассоциативный.
1564 См. также @code{Syntax}.
1570 Если левые и правые степени связывания @var{op} обе больше
1571 левых и правых степеней связывания другого оператора,
1572 то @var{op} имеет более высокий приоритет чем этот оператор.
1575 (%i1) "@@"(a, b) := sconcat("(", a, ",", b, ")")$
1576 (%i2) :lisp (get '$+ 'lbp)
1578 (%i2) :lisp (get '$+ 'rbp)
1580 (%i2) infix ("@@", 101, 101)$
1583 (%i4) infix ("@@", 99, 99)$
1590 Большее @var{lbp} делает @var{op} право-ассоциативным,
1591 в том время как большее @var{rbp} делает @var{op} лево-ассоциативным.
1594 (%i1) "@@"(a, b) := sconcat("(", a, ",", b, ")")$
1595 (%i2) infix ("@@", 100, 99)$
1596 (%i3) foo @@ bar @@ baz;
1597 (%o3) (foo,(bar,baz))
1598 (%i4) infix ("@@", 100, 101)$
1599 (%i5) foo @@ bar @@ baz;
1600 (%o5) ((foo,bar),baz)
1603 Maxima может обнаружить некоторые синтаксические ошибки, сравнивая
1604 объявленные для оператора части речи с актуальными выражениями.
1607 @c infix ("##", 100, 99, expr, expr, expr);
1608 @c if x ## y then 1 else 0;
1609 @c infix ("##", 100, 99, expr, expr, clause);
1610 @c if x ## y then 1 else 0;
1613 (%i1) infix ("##", 100, 99, expr, expr, expr);
1615 (%i2) if x ## y then 1 else 0;
1616 Incorrect syntax: Found algebraic expression where logical expression expected
1619 (%i2) infix ("##", 100, 99, expr, expr, clause);
1621 (%i3) if x ## y then 1 else 0;
1622 (%o3) if x ## y then 1 else 0
1625 @opencatbox{Категории:}
1626 @category{Операторы}
1627 @category{Факты и выводы}
1628 @category{Синтаксис}
1633 @defvr {Управляющая переменная} inflag
1634 Значение по умолчанию: @code{false}
1636 Когда @code{inflag} есть @code{true}, функции для извлечения частей
1637 выражения работает с внутренней формой @code{expr}.
1639 Заметим, что упрощатель переупорядочивает выражения.
1640 Таким образом, @code{first (x + y)} возвращает @code{x} если @code{inflag}
1641 есть @code{true}, и @code{y}, если @code{inflag} есть @code{false}
1642 (@code{first (y + x)} дает те же результаты.)
1644 Также, установка @code{inflag} равным @code{true} и вызов @code{part} или @code{substpart} есть
1645 тоже самое, что вызов @code{inpart} или @code{substinpart}.
1647 Функции, на которые влияет значение @code{inflag}:
1648 @code{part}, @code{substpart}, @code{first}, @code{rest}, @code{last}, @code{length},
1649 конструкция @code{for} ... @code{in},
1650 @code{map}, @code{fullmap}, @code{maplist}, @code{reveal} и @code{pickapart}.
1652 @c NEED EXAMPLES HERE
1654 @opencatbox{Категории:}
1655 @category{Выражения}
1661 @deffn {Функция} inpart (@var{expr}, @var{n_1}, ..., @var{n_k})
1662 аналогична @code{part}, но работает с внутренним
1663 представлением выражения, а не с выводимой формой, и,
1664 таким образом, может быть быстрее, так как форматирование не выполняется.
1665 Нужно быть осторожным
1666 по отношению к порядку подвыражений в суммах и произведениях
1667 (так как этот порядок переменных в внутренней форме часто отличается
1668 от порядка в выводимой форме) и в работе с унарным минусом,
1669 вычитанием и делением (так как эти операторы удаляются из
1670 выражения). @code{part (x+y, 0)} или @code{inpart (x+y, 0)} дает @code{+},
1671 хотя для ссылки на оператор он должен быть заключен в двойные кавычки.
1672 Например @code{... if inpart (%o9,0) = "+" then ...}.
1679 (%i2) inpart (%, 3, 2);
1681 (%i3) part (%th (2), 1, 2);
1683 (%i4) 'limit (f(x)^g(x+1), x, 0, minus);
1687 (%i5) inpart (%, 1, 2);
1691 @opencatbox{Категории:}
1692 @category{Выражения}
1698 @deffn {Функция} isolate (@var{expr}, @var{x})
1699 Возвращает @var{expr} с подвыражениями, которые есть суммы, и
1700 которые не содержат переменную @var{var}, замененные метками промежуточных выражений
1701 (атомарными символами, такими как @code{%t1}, @code{%t2}, ...). Это часто бывает полезно,
1702 чтобы избежать ненужного раскрытия подвыражений, которые не содержат
1703 интересующих переменных. Так как данные метки промежуточных выражений имеют подвыражения
1704 в качестве своих значений, то они могут быть подставлены обратно вычислением этого
1707 Если @code{exptisolate} (значение по умолчанию: @code{false}) равно @code{true},
1708 то @code{isolate} исследует показатели атомов (таких как @code{%e}),
1709 которые содержат переменную @var{var}.
1711 Если @code{isolate_wrt_times} равно @code{true}, то @code{isolate} изолирует
1712 также по отношению к произведениям. См. @code{isolate_wrt_times}.
1714 Выполните @code{example (isolate)} для других примеров.
1716 @opencatbox{Категории:}
1717 @category{Выражения}
1723 @defvr {Управляющая переменная} isolate_wrt_times
1724 Значение по умолчанию: @code{false}
1726 Когда @code{isolate_wrt_times} равно @code{true}, то @code{isolate}
1727 также изолирует по отношению к произведениям. Например, сравнивает обе установки
1730 (%i1) isolate_wrt_times: true$
1731 (%i2) isolate (expand ((a+b+c)^2), c);
1743 (%o4) c + %t3 c + %t2 c + %t4
1744 (%i4) isolate_wrt_times: false$
1745 (%i5) isolate (expand ((a+b+c)^2), c);
1747 (%o5) c + 2 b c + 2 a c + %t4
1750 @opencatbox{Категории:}
1751 @category{Выражения}
1757 @defvr {Управляющая переменная} listconstvars
1758 Значение по умолчанию: @code{false}
1760 Когда @code{listconstvars} есть @code{true}, то в список,
1761 возвращаемый @code{listofvars}, включаются @code{%e}, @code{%pi}, @code{%i} и
1762 другие переменные, объявленные константами.
1763 По умолчанию они опускаются.
1765 @opencatbox{Категории:}
1766 @category{Выражения}
1771 @defvr {Управляющая переменная} listdummyvars
1772 Значение по умолчанию: @code{true}
1774 Когда @code{listdummyvars} есть @code{false}, "немые переменные" в
1775 выражении не будут включаться в список, возвращаемый @code{listofvars}.
1776 (Смысл "немых переменных" тот же, что и в @code{freeof}.
1777 "Немые переменные" -- это математические объекты, такие
1778 как индекс суммы или произведения, переменная предела и переменная интегрирования
1779 в определенном интеграле).
1784 (%i1) listdummyvars: true$
1785 (%i2) listofvars ('sum(f(i), i, 0, n));
1787 (%i3) listdummyvars: false$
1788 (%i4) listofvars ('sum(f(i), i, 0, n));
1792 @opencatbox{Категории:}
1793 @category{Выражения}
1799 @deffn {Функция} listofvars (@var{expr})
1800 Возвращает список переменных в @var{expr}.
1802 Когда @code{listconstvars} есть @code{true}, то в список,
1803 возвращаемый @code{listofvars}, включаются @code{%e}, @code{%pi}, @code{%i} и
1804 другие переменные, объявленные константами.
1805 По умолчанию они опускаются.
1808 (%i1) listofvars (f (x[1]+y) / g^(2+a));
1813 @opencatbox{Категории:}
1814 @category{Выражения}
1820 @deffn {Функция} lfreeof (@var{list}, @var{expr})
1821 Для каждого члена @var{m} списка @var{list}, вызывает @code{freeof (@var{m}, @var{expr})}.
1822 Возвращает @code{false}, если какой либо из вызовов @code{freeof} дает @code{false},
1823 иначе возвращает @code{true}.
1825 @opencatbox{Категории:}
1826 @category{Выражения}
1831 @deffn {Функция} lopow (@var{expr}, @var{x})
1832 Возвращает наименьший показатель степени @var{x}, который явно присутствует
1833 в @var{expr}. Таким образом,
1836 (%i1) lopow ((x+y)^2 + (x+y)^a, x+y);
1840 @opencatbox{Категории:}
1841 @category{Выражения}
1847 @deffn {Функция} lpart (@var{label}, @var{expr}, @var{n_1}, ..., @var{n_k})
1848 Аналогично @code{dpart}, но использует
1849 помеченный бокс. Помеченный бокс аналогичен боксу сделанному с помощью
1850 @code{dpart}, но имеет имя в верхней строке.
1852 @opencatbox{Категории:}
1853 @category{Выражения}
1859 @deffn {Функция} multthru (@var{expr})
1860 @deffnx {Функция} multthru (@var{expr_1}, @var{expr_2})
1861 Умножает множитель @var{expr} (который должен быть суммой) на
1862 другие множители @var{expr}. То есть, @var{expr} есть
1863 @code{@var{f_1} @var{f_2} ... @var{f_n}},
1865 один множитель, скажем @var{f_i}, есть сумма членов. Каждый член
1866 в той сумме умножается на остальные множители в этом произведении.
1867 (А именно на все множители, за исключением @var{f_i}). @code{multthru}
1868 не раскрывает суммы, возведенные в степень.
1869 Эта функция есть самый быстрый способ распространять произведения (коммутативные
1870 или некоммутативные) на суммы. Так как дроби представляются как
1871 произведения, то @code{multthru} может также использоваться для деления сумм
1874 @code{multthru (@var{expr_1}, @var{expr_2})} умножает каждый член в @var{expr_2}
1875 (который должен быть суммой или уравнением) на @var{expr_1}.
1876 Если @var{expr_1} сам по себе не является суммой, то эта
1877 форма эквивалентна @code{multthru (@var{expr_1}*@var{expr_2})}.
1880 (%i1) x/(x-y)^2 - 1/(x-y) - f(x)/(x-y)^3;
1882 (%o1) - ----- + -------- - --------
1885 (%i2) multthru ((x-y)^3, %);
1887 (%o2) - (x - y) + x (x - y) - f(x)
1888 (%i3) ratexpand (%);
1890 (%o3) - y + x y - f(x)
1891 (%i4) ((a+b)^10*s^2 + 2*a*b*s + (a*b)^2)/(a*b*s^2);
1893 (b + a) s + 2 a b s + a b
1894 (%o4) ------------------------------
1897 (%i5) multthru (%); /* note that this does not expand (b+a)^10 */
1900 (%o5) - + --- + ---------
1903 (%i6) multthru (a.(b+c.(d+e)+f));
1904 (%o6) a . f + a . c . (e + d) + a . b
1905 (%i7) expand (a.(b+c.(d+e)+f));
1906 (%o7) a . f + a . c . e + a . c . d + a . b
1909 @opencatbox{Категории:}
1910 @category{Выражения}
1916 @deffn {Функция} nounify (@var{f})
1917 Возвращает невычисляемую форму функции с именем @var{f}. Это
1918 необходимо, если требуется представить имя вычисляемой функции так,
1919 если бы она была невычисляемой. Заметим, что некоторые вычисляемые функции
1920 возвращают их невычисляемые формы,
1921 если они не могут быть вычислены для определенных значений аргументов.
1922 Невычисляемая форма возвращается также в случае, если перед функцией стоит кавычка.
1924 @opencatbox{Категории:}
1925 @category{Невычисляемые и вычисляемые формы}
1931 @deffn {Функция} nterms (@var{expr})
1932 Возвращает число членов, которое выражение @var{expr} имело бы, если оно было бы
1933 полностью раскрыто и не возникло бы сокращений или комбинаций членов.
1934 Заметим, что выражения такие как @code{sin (@var{expr})}, @code{sqrt (@var{expr})}, @code{exp (@var{expr})} и др.
1935 считаются только как один член, вне независимости от того, как много членов @var{expr} имеет (если оно сумма).
1937 @opencatbox{Категории:}
1938 @category{Выражения}
1944 @deffn {Функция} op (@var{expr})
1945 Возвращает главный оператор выражения @var{expr}.
1946 @code{op (@var{expr})} эквивалентно @code{part (@var{expr}, 0)}.
1948 @code{op} возвращает строку, если главный оператор
1949 встроенный или определенный пользователем префиксный,
1950 бинарный или n-арный инфиксный, постфиксный, матчфиксный
1951 или безфиксный оператор.
1952 Иначе @code{op} возвращает символ.
1954 @code{op} следит за значением глобального флага @code{inflag}.
1956 @code{op} вычисляет свой аргумент.
1958 См. также @code{args}.
1963 @c stringdisp: true$
1966 @c op ('sin (a + b));
1970 @c op ('(if a > b then c else d));
1977 (%i1) stringdisp: true$
1978 (%i2) op (a * b * c);
1980 (%i3) op (a * b + c);
1982 (%i4) op ('sin (a + b));
1988 (%i7) op ([a, b, c]);
1990 (%i8) op ('(if a > b then c else d));
1992 (%i9) op ('foo (a));
1994 (%i10) prefix (foo);
2000 @opencatbox{Категории:}
2001 @category{Выражения}
2002 @category{Операторы}
2008 @deffn {Функция} operatorp (@var{expr}, @var{op})
2009 @deffnx {Функция} operatorp (@var{expr}, [@var{op_1}, ..., @var{op_n}])
2011 @code{operatorp (@var{expr}, @var{op})} возвращает @code{true},
2012 если @var{op} равен оператору @var{expr}.
2014 @code{operatorp (@var{expr}, [@var{op_1}, ..., @var{op_n}])} возвращает @code{true},
2015 если какой-нибудь элемент @var{op_1}, ..., @var{op_n} равен оператору @var{expr}.
2017 @opencatbox{Категории:}
2018 @category{Функции предикаты}
2019 @category{Операторы}
2025 @deffn {Функция} optimize (@var{expr})
2026 Возвращает выражение, которое выдает тоже самое значение и
2027 побочные эффекты, как и @var{expr}, но выполняется более
2028 эффективно за счет устранения лишних повторных вычислений
2029 общих подвыражений. @code{optimize} также имеет побочный
2030 эффект "сворачивания" своего аргумента так что все общие
2031 подвыражения используются совместно.
2032 Выполните @code{example (optimize)} для примеров.
2034 @opencatbox{Категории:}
2035 @category{Выражения}
2040 @defvr {Управляющая переменная} optimprefix
2041 Значение по умолчанию: @code{%}
2043 @code{optimprefix} это префикс, используемый для генерации символов
2044 командой @code{optimize}.
2046 @opencatbox{Категории:}
2047 @category{Выражения}
2053 @c WHAT DOES ">" MEAN IN THIS CONTEXT ??
2054 @deffn {Функция} ordergreat (@var{v_1}, ..., @var{v_n})
2055 Устанавливает синонимы для переменных @var{v_1}, ..., @var{v_n},
2056 такие, что @var{v_1} > @var{v_2} > ... > @var{v_n},
2057 и @var{v_n} > любой другой переменной, не включенной в аргументы.
2059 См. также @code{orderless}.
2061 @opencatbox{Категории:}
2062 @category{Выражения}
2068 @c WHAT DOES "PRECEDES" MEAN IN THIS CONTEXT ??
2069 @deffn {Функция} ordergreatp (@var{expr_1}, @var{expr_2})
2070 Возвращает @code{true}, если @var{expr_2} предшествует @var{expr_1} в
2071 упорядочивании, установленном с помощью функции @code{ordergreat}.
2073 @opencatbox{Категории:}
2074 @category{Выражения}
2075 @category{Функции предикаты}
2081 @c WHAT DOES "<" MEAN IN THIS CONTEXT
2082 @deffn {Функция} orderless (@var{v_1}, ..., @var{v_n})
2083 Устанавливает синонимы для переменных @var{v_1}, ..., @var{v_n},
2084 такие, что @var{v_1} < @var{v_2} < ... < @var{v_n},
2085 и @var{v_n} < любой другой переменная, не включенной в аргументы.
2087 @c EXPRESS THIS ORDER IN A MORE COMPREHENSIBLE FASHION
2088 Таким образом, полная шкала упорядочивания такова:
2089 численные константы < объявленные константы < объявленные скаляры < первый аргумент @code{orderless} <
2090 ... < последний аргумент @code{orderless} < переменные, которые начинаются
2092 < переменные, которые начинаются с Z < последний аргумент @code{ordergreat} <
2093 ... < первый аргумент @code{ordergreat} < объявленные главные переменные @code{mainvar}.
2095 См. также @code{ordergreat} и @code{mainvar}.
2097 @opencatbox{Категории:}
2098 @category{Выражения}
2104 @c WHAT DOES "PRECEDES" MEAN IN THIS CONTEXT ??
2105 @deffn {Функция} orderlessp (@var{expr_1}, @var{expr_2})
2106 Возвращает @code{true}, если @var{expr_1} предшествует @var{expr_2} в
2107 упорядочивании, установленном командой @code{orderless}.
2109 @opencatbox{Категории:}
2110 @category{Выражения}
2111 @category{Функции предикаты}
2117 @deffn {Функция} part (@var{expr}, @var{n_1}, ..., @var{n_k})
2118 Возвращает части внешней формы @code{expr}. Функция
2119 получает часть @code{expr}, которая определена индексами @var{n_1}, ..., @var{n_k}.
2121 часть @var{n_1} @code{expr} взята, берется часть @var{n_2} от нее и т.д.
2123 часть @var{n_k} от ... части @var{n_2}, от части @var{n_1} выражения @code{expr}.
2125 @code{part} может быть использована для того, чтобы получить элемент списка,
2126 строку матрицы и т.п.
2128 @c "If the last argument to a part function" => FOLLOWING APPLIES TO OTHER FUNCTIONS ??
2129 @c ATTEMPT TO VERIFY; IF SO, COPY THIS COMMENTARY TO DESCRIPTIONS OF OTHER FUNCTIONS
2130 Если последний аргумент функции @code{part} есть список индексов, то
2131 выбираются несколько подвыражений, каждое из которых соответствует
2132 индексу в списке. Таким образом, @code{part (x + y + z, [1, 3])} есть @code{z+x}.
2134 @code{piece} запоминает последнее выражение, выбранное при использовании
2135 функции @code{part}. Оно доступно во время выполнения этой функция и, таким образом,
2136 может быть использовано в самой функции, как показано ниже.
2138 Если @code{partswitch} установлен равным @code{true}, то @code{end} возвращается
2139 когда выбранная часть выражения не существует, иначе выдается сообщение об
2142 @c NEED "SEE ALSO" POINTING TO ALL OTHER PART FUNCTIONS
2144 Пример: @code{part (z+2*y, 2, 1)} дает 2.
2146 @c MERGE IN example (part) OUTPUT HERE
2147 @code{example (part)} показывает дополнительные примеры.
2149 @opencatbox{Категории:}
2150 @category{Выражения}
2156 @deffn {Функция} partition (@var{expr}, @var{x})
2157 Возвращает список из двух выражений. Они есть (1)
2158 множители @var{expr} (если оно произведение), члены @var{expr}
2159 (если оно является суммой), или список (если оно является списком), которые
2160 не содержит @var{x} и, (2) те множители, члены или список, которые содержат.
2163 (%i1) partition (2*a*x*f(x), x);
2165 (%i2) partition (a+b, x);
2167 (%i3) partition ([a, b, f(a), c], a);
2168 (%o3) [[b, c], [a, f(a)]]
2171 @opencatbox{Категории:}
2172 @category{Выражения}
2178 @defvr {Управляющая переменная} partswitch
2179 Значение по умолчанию: @code{false}
2181 Когда @code{partswitch} есть @code{true}, то @code{end} возвращается,
2182 если выбранная часть выражения не существует, иначе выдается сообщение
2185 @opencatbox{Категории:}
2186 @category{Выражения}
2192 @deffn {Функция} pickapart (@var{expr}, @var{n})
2193 Присваивает меткам промежуточных выражений все подвыражения
2194 @var{expr} глубины @var{n} (целое число).
2195 Подвыражения большей или меньшей глубин меткам не присваиваются.
2196 @code{pickapart} возвращает выражение в терминах промежуточных выражений
2197 эквивалентное исходному @var{expr}.
2199 См. также @code{part}, @code{dpart}, @code{lpart}, @code{inpart} и @code{reveal}.
2204 (%i1) expr: (a+b)/2 + sin (x^2)/3 - log (1 + sqrt(x+1));
2207 (%o1) - log(sqrt(x + 1) + 1) + ------- + -----
2209 (%i2) pickapart (expr, 0);
2213 (%t2) - log(sqrt(x + 1) + 1) + ------- + -----
2217 (%i3) pickapart (expr, 1);
2219 (%t3) - log(sqrt(x + 1) + 1)
2232 (%o5) %t5 + %t4 + %t3
2233 (%i5) pickapart (expr, 2);
2235 (%t6) log(sqrt(x + 1) + 1)
2245 (%o8) --- + --- - %t6
2247 (%i8) pickapart (expr, 3);
2249 (%t9) sqrt(x + 1) + 1
2256 (%o10) ----- - log(%t9) + ---------
2258 (%i10) pickapart (expr, 4);
2264 (%o11) ------- + ----- - log(%t11 + 1)
2266 (%i11) pickapart (expr, 5);
2272 (%o12) ------- + ----- - log(sqrt(%t12) + 1)
2274 (%i12) pickapart (expr, 6);
2277 (%o12) ------- + ----- - log(sqrt(x + 1) + 1)
2281 @opencatbox{Категории:}
2282 @category{Выражения}
2288 @defvr {Системная переменная} piece
2289 Содержит последнее выражение, выбранное при использовании функции @code{part}.
2290 @c WHAT DOES THIS MEAN EXACTLY ??
2291 Оно доступно во время выполнения функции и, таким образом,
2292 может быть в ней использовано.
2294 @c NEED "SEE ALSO" TO POINT TO LIST OF ALL RELEVANT FUNCTIONS
2296 @opencatbox{Категории:}
2297 @category{Выражения}
2303 @deffn {Функция} polarform (@var{expr})
2304 Возвращает выражение @code{r %e^(%i theta)} эквивалентное @var{expr},
2305 такое, что @code{r} и @code{theta} чисто вещественные.
2307 @opencatbox{Категории:}
2308 @category{Комплексные переменные}
2309 @category{Экспоненциальные и логарифмические функции}
2314 @c ISN'T THERE AN EQUIVALENT FUNCTION SOMEWHERE ??
2315 @c NEEDS WORK (IF KEPT)
2316 @deffn {Функция} powers (@var{expr}, @var{x})
2317 Выдает степени @var{x}, встречающиеся в @var{expr}.
2319 @code{load ("powers")} загружает эту функцию.
2320 @c HMM, THERE'S A BUNCH OF MAXIMA FUNCTIONS IN src/powers.lisp ...
2321 @c FOR SOME REASON src/powers.lisp IS NOT PART OF THE USUAL BUILD -- STRANGE
2323 @c HERE IS THE TEXT FROM archive/share/unknown/powers.usg -- MERGE !!!
2324 @c THIS FUNCTION IS A GENERALISATION OF "HIPOW" AND "LOPOW"
2325 @c IN THAT IT RETURNS A LIST OF ALL THE POWERS OF VAR OCCURING
2326 @c IN EXPR. IT IS STILL NECESSARY TO EXPAND EXPR BEFORE APPLYING
2327 @c POWERS (ON PAIN OF GETTING THE WRONG ANSWER).
2329 @c THIS FUNCTION HAS MANY USES, E.G. IF YOU WANT TO FIND ALL
2330 @c THE COEFFICIENTS OF X IN A POLYNOMIAL POLY YOU CAN USE
2331 @c MAP(LAMBDA([POW],COEFF(POLY,X,POW)),POWERS(POLY,X));
2332 @c AND MANY OTHER SIMILAR USEFUL HACKS.
2334 @opencatbox{Категории:}
2335 @category{Выражения}
2336 @category{Многочлены}
2341 @deffn {Функция} product (@var{expr}, @var{i}, @var{i_0}, @var{i_1})
2342 Представляет произведение значений @var{expr} с
2343 индексом @var{i}, меняющимся от @var{i_0} до @var{i_1}.
2344 Невычисляемая форма @code{'product} изображается как заглавная буква пи.
2346 @code{product} вычисляет @var{expr} и нижний и верхний пределы @var{i_0} и @var{i_1},
2347 @code{product} не вычисляет индекс @var{i}.
2349 Если верхний и нижний пределы различаются на целое число,
2350 @var{expr} вычисляется для каждого значения индекса @var{i},
2351 и результат есть точное произведение.
2353 Иначе, диапазон индекса является неопределенным.
2354 Для упрощения произведения применяются некоторые правила.
2355 Когда глобальная переменная @code{simpproduct} есть @code{true},
2356 применяются дополнительные правила.
2357 В некоторых случаях, упрощение дает результат, который не является произведением,
2358 иначе, результат есть невычисляемая форма @code{'product}.
2360 См. также @code{nouns} и @code{evflag}.
2365 @c product (x + i*(i+1)/2, i, 1, 4);
2366 @c product (i^2, i, 1, 7);
2367 @c product (a[i], i, 1, 7);
2368 @c product (a(i), i, 1, 7);
2369 @c product (a(i), i, 1, n);
2370 @c product (k, k, 1, n);
2371 @c product (k, k, 1, n), simpproduct;
2372 @c product (integrate (x^k, x, 0, 1), k, 1, n);
2373 @c product (if k <= 5 then a^k else b^k, k, 1, 10);
2377 (%i1) product (x + i*(i+1)/2, i, 1, 4);
2378 (%o1) (x + 1) (x + 3) (x + 6) (x + 10)
2379 (%i2) product (i^2, i, 1, 7);
2381 (%i3) product (a[i], i, 1, 7);
2384 (%i4) product (a(i), i, 1, 7);
2385 (%o4) a(1) a(2) a(3) a(4) a(5) a(6) a(7)
2386 (%i5) product (a(i), i, 1, n);
2393 (%i6) product (k, k, 1, n);
2400 (%i7) product (k, k, 1, n), simpproduct;
2402 (%i8) product (integrate (x^k, x, 0, 1), k, 1, n);
2409 (%i9) product (if k <= 5 then a^k else b^k, k, 1, 10);
2414 @opencatbox{Категории:}
2415 @category{Суммы и произведения}
2421 @deffn {Функция} realpart (@var{expr})
2422 Возвращает вещественную часть @var{expr}. @code{realpart} и @code{imagpart}
2423 будут работать для выражений, включающих тригонометрические и гипергеометрические функции,
2424 также как и квадратный корень, логарифм и возведение в степень.
2426 @opencatbox{Категории:}
2427 @category{Комплексные числа}
2433 @deffn {Функция} rectform (@var{expr})
2434 Возвращает выражение @code{a + b %i}, эквивалентное @var{expr},
2435 такое, что @var{a} и @var{b} чисто вещественные.
2437 @opencatbox{Категории:}
2438 @category{Комплексные числа}
2443 @deffn {Функция} rembox (@var{expr}, unlabelled)
2444 @deffnx {Функция} rembox (@var{expr}, @var{label})
2445 @deffnx {Функция} rembox (@var{expr})
2446 Удаляет боксы из @var{expr}.
2448 @code{rembox (@var{expr}, unlabelled)} удаляет все непомеченные боксы из @var{expr}.
2450 @code{rembox (@var{expr}, @var{label})} удаляет только боксы, содержащие @var{label}.
2452 @code{rembox (@var{expr})} удаляет все боксы, помеченные и непомеченные.
2454 Боксы рисуются функциями @code{box}, @code{dpart} и @code{lpart}.
2459 @c expr: (a*d - b*c)/h^2 + sin(%pi*x);
2460 @c dpart (dpart (expr, 1, 1), 2, 2);
2461 @c expr2: lpart (BAR, lpart (FOO, %, 1), 2);
2462 @c rembox (expr2, unlabelled);
2463 @c rembox (expr2, FOO);
2464 @c rembox (expr2, BAR);
2468 (%i1) expr: (a*d - b*c)/h^2 + sin(%pi*x);
2470 (%o1) sin(%pi x) + ---------
2473 (%i2) dpart (dpart (expr, 1, 1), 2, 2);
2475 (%o2) sin("%pi x") + ---------
2480 (%i3) expr2: lpart (BAR, lpart (FOO, %, 1), 2);
2481 FOO""""""""""" BAR""""""""
2482 " """"""" " "a d - b c"
2483 (%o3) "sin("%pi x")" + "---------"
2484 " """"""" " " """" "
2485 """""""""""""" " " 2" "
2489 (%i4) rembox (expr2, unlabelled);
2491 FOO""""""""" "a d - b c"
2492 (%o4) "sin(%pi x)" + "---------"
2496 (%i5) rembox (expr2, FOO);
2499 (%o5) sin("%pi x") + "---------"
2505 (%i6) rembox (expr2, BAR);
2507 " """"""" " a d - b c
2508 (%o6) "sin("%pi x")" + ---------
2513 (%i7) rembox (expr2);
2515 (%o7) sin(%pi x) + ---------
2520 @opencatbox{Категории:}
2521 @category{Выражения}
2526 @deffn {Функция} sum (@var{expr}, @var{i}, @var{i_0}, @var{i_1})
2527 Представляет собой суммирование значений @var{expr} для
2528 индекса @var{i}, изменяющегося от @var{i_0} до @var{i_1}.
2529 Невычисляемая форма @code{'sum} изображается как заглавная буква сигма.
2531 @code{sum} вычисляет свое слагаемое @var{expr} и нижний и верхний пределы @var{i_0} и @var{i_1},
2532 @code{sum} не вычисляет индекс @var{i}.
2534 Если верхний и нижний пределы отличаются на целое число,
2535 слагаемое @var{expr} вычисляется для каждого значения индекса суммирования @var{i},
2536 и результат есть точная сумма.
2538 Иначе, диапазон индекса является неопределенным.
2539 Для упрощения суммирования применяются некоторые правила.
2540 Когда глобальная переменная @code{simpsum} есть @code{true}, дополнительные правила применяются.
2541 В некоторых случаях, упрощение дает результат, который не есть суммирование,
2542 иначе, результат есть невычисляемая форма @code{'sum}.
2544 Когда @code{evflag} (флаг вычисления) @code{cauchysum} есть @code{true},
2545 произведение суммирования выражается как произведение Коши,
2546 в котром индекс внутреннего суммирования есть функция
2547 индекса внешнего суммирования, а не меняющейся независимо индекс.
2549 Глобальная переменная @code{genindex} есть буквенный префикс,
2551 генерации следующего индекса суммирования,
2552 если требуется автоматически сгенерированный индекс.
2554 @code{gensumnum} есть численный суффикс, используемый для генерирования следующего
2556 генерации следующего индекса суммирования,
2557 если требуется автоматически сгенерированный индекс.
2558 Когда @code{gensumnum} есть @code{false}, автоматически сгенерированный индекс
2559 есть только @code{genindex} без численного суффикса.
2561 См. также @code{sumcontract}, @code{intosum},
2562 @code{bashindices}, @code{niceindices},
2563 @code{nouns}, @code{evflag} и @code{zeilberger}.
2568 @c sum (i^2, i, 1, 7);
2569 @c sum (a[i], i, 1, 7);
2570 @c sum (a(i), i, 1, 7);
2571 @c sum (a(i), i, 1, n);
2572 @c sum (2^i + i^2, i, 0, n);
2573 @c sum (2^i + i^2, i, 0, n), simpsum;
2574 @c sum (1/3^i, i, 1, inf);
2575 @c sum (1/3^i, i, 1, inf), simpsum;
2576 @c sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf);
2577 @c sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf), simpsum;
2578 @c sum (integrate (x^k, x, 0, 1), k, 1, n);
2579 @c sum (if k <= 5 then a^k else b^k, k, 1, 10);
2583 (%i1) sum (i^2, i, 1, 7);
2585 (%i2) sum (a[i], i, 1, 7);
2586 (%o2) a + a + a + a + a + a + a
2588 (%i3) sum (a(i), i, 1, 7);
2589 (%o3) a(7) + a(6) + a(5) + a(4) + a(3) + a(2) + a(1)
2590 (%i4) sum (a(i), i, 1, n);
2598 (%i5) sum (2^i + i^2, i, 0, n);
2606 (%i6) sum (2^i + i^2, i, 0, n), simpsum;
2609 (%o6) 2 + --------------- - 1
2611 (%i7) sum (1/3^i, i, 1, inf);
2619 (%i8) sum (1/3^i, i, 1, inf), simpsum;
2623 (%i9) sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf);
2631 (%i10) sum (i^2, i, 1, 4) * sum (1/i^2, i, 1, inf), simpsum;
2634 (%i11) sum (integrate (x^k, x, 0, 1), k, 1, n);
2642 (%i12) sum (if k <= 5 then a^k else b^k, k, 1, 10);
2644 (%o12) b + b + b + b + b + a + a + a + a + a
2647 @opencatbox{Категории:}
2648 @category{Суммы и произведения}
2653 @deffn {Функция} lsum (@var{expr}, @var{x}, @var{L})
2654 Представляет собой сумму @var{expr} для каждого элемента @var{x} в @var{L}.
2656 Невычисляемая форма @code{'lsum} возвращается,
2657 если аргумент @var{L} не вычисляется до списка.
2662 @c lsum (x^i, i, [1, 2, 7]);
2663 @c lsum (i^2, i, rootsof (x^3 - 1, x));
2666 (%i1) lsum (x^i, i, [1, 2, 7]);
2669 (%i2) lsum (i^2, i, rootsof (x^3 - 1, x));
2676 i in rootsof(x - 1, x)
2679 @opencatbox{Категории:}
2680 @category{Суммы и произведения}
2685 @deffn {Функция} verbify (@var{f})
2686 Возвращает вычисляемую форму функции с именем @var{f}.
2688 См. также @code{verb}, @code{noun} и @code{nounify}.
2699 (%i1) verbify ('foo);
2703 (%i2) nounify (foo);
2709 @opencatbox{Категории:}
2710 @category{Невычисляемые и вычисляемые формы}