3 @c File=Miscellaneous.texi
4 @c OriginalRevision=1.25
5 @c TranslatedBy: (c) 2007-06 Vadim V. Zhytnikov <vvzhyt@gmail.com>
8 * Введение в вспомогательные опции::
10 * Вспомогательные функции и переменные::
13 @node Введение в вспомогательные опции, Библиотека Share, Вспомогательные опции, Вспомогательные опции
14 @section Введение в вспомогательные опции
16 В этом разделе обсуждаются различные опции, имеющие глобальное влияние на
17 работу Maxima. Также описываются различные системные списки, такие как
18 список всех определенных пользователем функций.
20 @node Библиотека Share, Вспомогательные функции и переменные, Введение в вспомогательные опции, Вспомогательные опции
21 @section Библиотека Share
23 Maxima директория "share" содержит программы и другие полезные для
24 пользователей Maxima файлы, не входящие в ядро системы.
25 Обычно, эти программы загружаются с помощью команд @code{load} или @code{setup_autoload}.
27 @code{:lisp *maxima-sharedir*} указывает расположение директории "share"
30 @c FIXME FIXME FIXME -- WE REALLY NEED AN UP-TO-DATE LIST OF SHARE PACKAGES !!
31 Команда @code{printfile ("share.usg")} печатает устаревший список пакетов share.
32 Возможно, более информативным будет просмотр этой директории при помощи
33 обычного файл-менеджера.
36 @node Вспомогательные функции и переменные, , Библиотека Share, Вспомогательные опции
37 @section Вспомогательные функции и переменные
39 @defvr {Системная переменная} aliases
40 Значение по умолчанию: @code{[]}
42 @code{aliases} -- список всех атомов, котрые имеют определенные пользователем алиасы (определяются
43 функциями @code{alias}, @code{ordergreat}, @code{orderless} или при декларации атома @code{noun}
44 при помощи @code{declare}).
46 @opencatbox{Категории:}
47 @category{Факты и выводы}
48 @category{Глобальные переменные}
53 @defvr {Декларация} alphabetic
54 @code{alphabetic} является декларацией типа, распознаваемой функцией @code{declare}.
55 Декларация @code{declare(@var{s}, alphabetic)} говорит Maxima рассматривать все
56 символы, входящие в @var{s} (должен быть строкой), как буквенные.
58 См. также @ref{Идентификаторы}.
64 @c declare ("~`@", alphabetic);
65 @c xx~yy`@ + @yy`xx + `xx@@yy~;
69 (%i1) xx\~yy\`\@@ : 1729;
71 (%i2) declare ("~`@@", alphabetic);
73 (%i3) xx~yy`@@ + @@yy`xx + `xx@@@@yy~;
74 (%o3) `xx@@@@yy~ + @@yy`xx + 1729
76 (%o4) [@@yy`xx, `xx@@@@yy~]
80 @opencatbox{Категории:}
81 @category{Факты и выводы}
86 @c DOES apropos RETURN THE SAME THING AS THE LIST SHOWN BY describe ??
87 @deffn {Функция} apropos (@var{string})
88 Ищет имена объектов Maxima, содержащие @var{string} в качестве подстроки.
89 Например, вызов @code{apropos (exp)} возвращает список всех переменных и функций,
90 имеющих @code{exp} в качестве части своего имени, такие как @code{expand},
91 @code{exp} и @code{exponentialize}. Таким образом, если вы помните только часть имени
92 какого-либо объекта, то можете использовать эту команду для поиска полного
94 Аналогично, можно использовать @code{apropos (tr_)}, для того, чтобы вывести
95 список переключателей, влияющих на работу транслятора, т.к.
96 имена большинства из них начинаются с @code{tr_}.
98 @opencatbox{Категории:}
103 @deffn {Функция} args (@var{expr})
104 Возвращает список аргументов параметра @code{expr}, который может быть
105 любым отличным от атома выражением.
106 Возвращаются только аргументы оператора самого верхнего уровня.
107 Подвыражения @code{expr} появляются, как элементы подвыражений элементов
110 Порядок выражений в возвращаемом списке может зависеть от глобального флага @code{inflag}.
112 Вызов @code{args (@var{expr})} эквивалентен @code{substpart ("[", @var{expr}, 0)}.
113 См. также @code{substpart} и @code{op}.
116 @opencatbox{Категории:}
121 @defvr {Управляющая переменная} genindex
122 Значение по умолчанию: @code{i}
124 @code{genindex} -- буквенный префикс, используемый для создания
125 новой переменной суммирования.
127 @opencatbox{Категории:}
128 @category{Суммы и произведения}
132 @defvr {Управляющая переменная} gensumnum
133 Значение по умолчанию: 0
135 @code{gensumnum} -- числовой суффикс, используемый для создания новой переменной суммирования.
136 Если равна @code{false}, то индекс будет состоять только из @code{genindex}
137 без числового суффикса.
139 @opencatbox{Категории:}
140 @category{Суммы и произведения}
144 @defvr {Системная переменная} infolists
145 Значение по умолчанию: @code{[]}
147 @code{infolists} -- есть список имен всех информационных списков Maxima.
152 Все имеющие значение @code{%i}, @code{%o} и @code{%t} метки.
154 Все имеющие значение атомы, определенные пользователем (не встроенные в Maxima
155 управляющие переменные и переключатели), созданные при помощи операторов @code{:}, @code{::}
156 или функциональным присваиванием.
157 @c WHAT IS INTENDED BY "FUNCTIONAL BINDING" HERE ??
159 Все определенные пользователем функции, созданные при помощи @code{:=} или @code{define}.
161 Все объявленные и необъявленные массивы, созданные при помощи @code{:}, @code{::} или @code{:=}.
162 @c AREN'T THERE OTHER MEANS OF CREATING ARRAYS ??
164 Все определенные пользователем макро-функции.
166 Все управляющие переменные, значение которых было изменено
167 пользователем, независимо от того, имеют ли они в данный момент значения
168 по умолчанию или нет.
170 Все определенные пользователем правила подстановок и правила упрощения,
171 созданные при помощи @code{tellsimp}, @code{tellsimpafter}, @code{defmatch} или @code{defrule}.
173 Все атомы, имеющие определенные пользователем алиасы, созданные при помощи функций @code{alias},
174 @code{ordergreat}, @code{orderless} или при декларации атома @code{noun} с помощью @code{declare}.
176 Все атомы, имеющие функциональные зависимости, созданные с помощью функций
177 @code{depends} или @code{gradef}.
179 Все функции, имеющие определенные пользователем производные, определенные при помощи функции
181 @c UMM, WE REALLY NEED TO BE SPECIFIC -- WHAT DOES "ETC" CONTAIN HERE ??
183 Все атомы, имеющие свойства, отличные от упомянутых выше, такие как свойства
184 задаваемые @code{atvalue}, @code{matchdeclare} и т.п.,
185 а также, свойства, установленные функцией @code{declare}.
186 @item let_rule_packages
187 Все определенные пользователем пакеты правил @code{let} плюс специальный
188 пакет @code{default_let_rule_package}.
189 (@code{default_let_rule_package} -- имя пакета правил, который используется по умолчанию,
190 если иной не объявлен пользователем явно.)
193 @opencatbox{Категории:}
194 @category{Факты и выводы}
195 @category{Глобальные переменные}
199 @deffn {Функция} integerp (@var{expr})
200 Возвращает @code{true}, если @var{expr} является буквальным целым числом,
201 и @code{false} в противном случае.
203 Функция @code{integerp} возвращает @code{false}, если аргумент является символом,
204 даже если этот символ объявлен целочисленным.
213 (%i3) integerp (-17);
215 (%i4) integerp (0.0);
217 (%i5) integerp (1.0);
219 (%i6) integerp (%pi);
223 (%i8) declare (n, integer);
229 @opencatbox{Категории:}
230 @category{Функции предикаты}
234 @defvr {Управляющая переменная} m1pbranch
235 Значение по умолчанию: @code{false}
237 @code{m1pbranch} определяет главную ветвь для отрицательной степени @code{-1}.
238 Величины, подобные @code{(-1)^(1/3)} (т.е. "нечетные" рациональные степени) и
239 @code{(-1)^(1/4)} (т.е. "четные" рациональные степени)
240 определяются следующим образом:
242 @c REDRAW THIS AS A TABLE
247 (-1)^(1/4): (-1)^(1/4)
250 m1pbranch:false m1pbranch:true
251 (-1)^(1/3) 1/2+%i*sqrt(3)/2
252 (-1)^(1/4) sqrt(2)/2+%i*sqrt(2)/2
255 @opencatbox{Категории:}
257 @category{Глобальные флаги}
261 @deffn {Функция} numberp (@var{expr})
262 Возвращает @code{true}, если @var{expr} есть буквальное целое число, рациональное число,
263 число с плавающей точкой или число с плавающей точкой высокой точности,
264 иначе возвращается @code{false}.
266 Функция @code{numberp} возвращает @code{false}, если параметр является символом,
267 даже если он является символическим числом, таким как @code{%pi} или @code{%i},
268 или объявлен @code{even}, @code{odd}, @code{integer}, @code{rational}, @code{irrational},
269 @code{real}, @code{imaginary} или @code{complex}.
276 (%i2) numberp (-13/19);
278 (%i3) numberp (3.14159);
280 (%i4) numberp (-1729b-4);
282 (%i5) map (numberp, [%e, %pi, %i, %phi, inf, minf]);
283 (%o5) [false, false, false, false, false, false]
284 (%i6) declare (a, even, b, odd, c, integer, d, rational,
285 e, irrational, f, real, g, imaginary, h, complex);
287 (%i7) map (numberp, [a, b, c, d, e, f, g, h]);
288 (%o7) [false, false, false, false, false, false, false, false]
291 @opencatbox{Категории:}
292 @category{Функции предикаты}
296 @c CROSS REF TO WHICH FUNCTION OR FUNCTIONS ESTABLISH PROPERTIES !! (VERY IMPORTANT)
297 @c NEEDS EXPANSION, CLARIFICATION, AND EXAMPLES
298 @deffn {Функция} properties (@var{a})
299 Возвращает список имен всех свойств, ассоциированных
302 @opencatbox{Категории:}
303 @category{Факты и выводы}
307 @c CROSS REF TO WHICH FUNCTION OR FUNCTIONS ESTABLISH PROPERTIES !! (VERY IMPORTANT)
308 @c NEEDS EXPANSION, CLARIFICATION, AND EXAMPLES
309 @c WHAT IS HIDDEN IN THE "etc" HERE ??
310 @defvr {Специальный символ} props
311 @code{props} -- список атомов, имеющих свойства отличные от тех, что явно
312 перечислены в @code{infolists}, такие как, свойства, задаваемые @code{atvalue},
313 @code{matchdeclare} и т.п., а также свойства, задаваемые функцией @code{declare}.
315 @opencatbox{Категории:}
316 @category{Факты и выводы}
317 @category{Глобальные переменные}
321 @c CROSS REF TO WHICH FUNCTION OR FUNCTIONS ESTABLISH PROPERTIES !! (VERY IMPORTANT)
322 @c NEEDS EXPANSION, CLARIFICATION, AND EXAMPLES
323 @deffn {Функция} propvars (@var{prop})
324 Возвращает список атомов из списка @code{props}, которые имеют
325 свойство, обозначаемое @var{prop}. Т.е. @code{propvars (atvalue)}
326 возвращает список атомов, имеющих свойство @code{atvalue}.
328 @opencatbox{Категории:}
329 @category{Факты и выводы}
333 @c CROSS REF TO OTHER FUNCTIONS WHICH PUT/GET PROPERTIES !! (VERY IMPORTANT)
334 @c NEEDS EXPANSION, CLARIFICATION, AND EXAMPLES
335 @c ARE PROPERTIES ESTABLISHED BY put THE SAME AS PROPERTIES ESTABLISHED BY declare OR OTHER FUNCTIONS ??
336 @c IS put (foo, true, integer) EQUIVALENT TO declare (foo, integer) FOR EXAMPLE ??
337 @deffn {Функция} put (@var{atom}, @var{value}, @var{indicator})
338 Присваивает атому @var{atom} значение свойства @var{indicator}, равное @var{value}.
339 @var{indicator} может быть не только системным свойством, но любым другим именем
342 Функция @code{put} вычисляет свои аргументы.
343 @code{put} возвращает @var{value}.
348 (%i1) put (foo, (a+b)^5, expr);
351 (%i2) put (foo, "Hello", str);
353 (%i3) properties (foo);
354 (%o3) [[user properties, str, expr]]
355 (%i4) get (foo, expr);
358 (%i5) get (foo, str);
362 @opencatbox{Категории:}
363 @category{Факты и выводы}
367 @deffn {Функция} qput (@var{atom}, @var{value}, @var{indicator})
368 Присваивает атому @var{atom} значение свойства @var{indicator}, равное @var{value}.
369 Аналогично @code{put}, но не вычисляет свои аргументы.
377 (%i4) put (foo, bar, baz);
379 (%i5) properties (aa);
380 (%o5) [[user properties, cc]]
383 (%i7) qput (foo, bar, baz);
385 (%i8) properties (foo);
386 (%o8) [value, [user properties, baz]]
387 (%i9) get ('foo, 'baz);
391 @opencatbox{Категории:}
392 @category{Факты и выводы}
396 @c CROSS REF TO OTHER FUNCTIONS WHICH PUT/GET PROPERTIES !! (VERY IMPORTANT)
397 @c NEEDS EXPANSION, CLARIFICATION, AND EXAMPLES
398 @c HOW DOES THIS INTERACT WITH declare OR OTHER PROPERTY-ESTABLISHING FUNCTIONS ??
399 @c HOW IS THIS DIFFERENT FROM remove ??
400 @deffn {Функция} rem (@var{atom}, @var{indicator})
401 Удаляет свойство @var{indicator} у атома @var{atom}.
403 @opencatbox{Категории:}
404 @category{Факты и выводы}
408 @c CROSS REF TO OTHER FUNCTIONS WHICH PUT/GET PROPERTIES !! (VERY IMPORTANT)
409 @c NEEDS EXPANSION, CLARIFICATION, AND EXAMPLES
410 @c HOW DOES THIS INTERACT WITH declare OR OTHER PROPERTY-ESTABLISHING FUNCTIONS ??
411 @c HOW IS THIS DIFFERENT FROM rem ??
412 @deffn {Функция} remove (@var{a_1}, @var{p_1}, ..., @var{a_n}, @var{p_n})
413 @deffnx {Функция} remove ([@var{a_1}, ..., @var{a_m}], [@var{p_1}, ..., @var{p_n}], ...)
414 @deffnx {Функция} remove ("@var{a}", operator)
415 @deffnx {Функция} remove (@var{a}, transfun)
416 @deffnx {Функция} remove (all, @var{p})
417 Удаляет свойства, ассоциированные с атомами.
419 Вызов @code{remove (@var{a_1}, @var{p_1}, ..., @var{a_n}, @var{p_n})}
420 удаляет свойство @code{p_k} у атома @code{a_k}.
422 Вызов @code{remove ([@var{a_1}, ..., @var{a_m}], [@var{p_1}, ..., @var{p_n}], ...)}
423 удаляет свойства @code{@var{p_1}, ..., @var{p_n}}
424 у атомов @var{a_1}, ..., @var{a_m}.
425 Может быть более чем одна пара списков.
427 @c VERIFY THAT THIS WORKS AS ADVERTISED
428 Вызов @code{remove (all, @var{p})} удаляет все свойства @var{p} у всех имеющих его атомов.
430 @c SHOULD REFER TO A LIST OF ALL SYSTEM-DEFINED PROPERTIES HERE.
431 Удаляемые свойства могут быть как системными, такими как
432 @code{function}, @code{macro} или @code{mode_declare}, так и пользовательскими.
434 @c VERIFY THAT THIS WORKS AS ADVERTISED
435 @c IS transfun PECULIAR TO remove ?? IF SO, SHOW SPECIAL CASE AS @defunx
436 Удаление свойства @code{transfun} удаляет транслированный Lisp вариант функции.
437 После удаления этого свойства, вместо транслированной Lisp версии функции будет
438 выполняться Maxima версия.
440 Вызов @code{remove ("@var{a}", operator)} или, эквивалентно, @code{remove ("@var{a}", op)},
441 удаляет у @var{a} операторные свойства, декларированные функциями @code{prefix}, @code{infix},
442 @code{nary}, @code{postfix}, @code{matchfix} или @code{nofix}.
443 Отметим, что имя оператора должно быть записано в виде строки с двойными кавычками.
445 @code{remove} всегда возвращает @code{done}, независимо от того, имел ли атом
446 требуемое свойство или нет.
447 Такое поведение отличается от более специфичных функций, удаляющих свойства, таких как
448 @code{remvalue}, @code{remarray}, @code{remfunction} и @code{remrule}.
450 @c IN SERIOUS NEED OF EXAMPLES HERE
451 @opencatbox{Категории:}
452 @category{Факты и выводы}
457 @deffn {Функция} remvalue (@var{name_1}, ..., @var{name_n})
458 @deffnx {Функция} remvalue (all)
459 Удаляет из системы значения пользовательских переменных @var{name_1}, ..., @var{name_n}
460 (могут быть переменными с индексом).
462 Вызов @code{remvalue (all)} удаляет все значения всех переменных из списка определенных
463 пользователем переменных @code{values} (в отличии от переменных, автоматически определенных
466 См. также @code{values}.
468 @opencatbox{Категории:}
469 @category{Вычисление}
475 @deffn {Функция} rncombine (@var{expr})
476 Преобразует выражение @var{expr}, комбинируя слагаемые @var{expr}, имеющие
477 одинаковые знаменатели или знаменатели отличающиеся только на числовой множитель.
478 Это поведение несколько отличается от поведения функции @code{combine},
479 которая собирает члены с идентичными знаменателями.
481 Устанавливая @code{pfeformat: true} и используя @code{combine}, можно получить результат
482 более компактный, чем дает @code{rncombine}, но @code{rncombine} выполняет
483 дополнительный шаг, перемножая численные множители знаменателей.
484 Это приводит к более ясной форме и возможности распознать сокращения.
486 Команда @code{load("rncomb")} загружает эту функцию.
488 @opencatbox{Категории:}
493 @c NEEDS CLARIFICATION AND EXAMPLES
494 @deffn {Функция} scalarp (@var{expr})
495 Возвращает @code{true} если @var{expr} является числом, константой или переменной,
496 объявленной @code{scalar} при помощи @code{declare}, или выражением, полностью состоящим
497 из чисел, констант и скалярных переменных, но не содержащим матрицы или списки.
499 @opencatbox{Категории:}
500 @category{Функции предикаты}
506 @deffn {Функция} setup_autoload (@var{filename}, @var{function_1}, ..., @var{function_n})
507 Определяет то, что если любая из функций @var{function_1}, ..., @var{function_n}
508 вызывается, но еще не определена в момент вызова, то файл @var{filename} загружается
509 при помощи @code{load}.
510 Файл @var{filename} обычно содержит определения указанных функций,
511 хотя это и не обязательно.
513 @code{setup_autoload} не работает для функций-массивов.
515 @code{setup_autoload} не вычисляет свои аргументы.
519 @c EXAMPLE GENERATED FROM FOLLOWING INPUT
520 @c legendre_p (1, %pi);
521 @c setup_autoload ("specfun.mac", legendre_p, ultraspherical);
522 @c ultraspherical (2, 1/2, %pi);
523 @c legendre_p (1, %pi);
524 @c legendre_q (1, %pi);
526 (%i1) legendre_p (1, %pi);
527 (%o1) legendre_p(1, %pi)
528 (%i2) setup_autoload ("specfun.mac", legendre_p, ultraspherical);
530 (%i3) ultraspherical (2, 1/2, %pi);
531 Warning - you are redefining the Macsyma function ultraspherical
532 Warning - you are redefining the Macsyma function legendre_p
535 (%o3) ------------ + 3 (%pi - 1) + 1
537 (%i4) legendre_p (1, %pi);
539 (%i5) legendre_q (1, %pi);
543 (%o5) ---------------- - 1
547 @opencatbox{Категории:}
548 @category{Определение функций}
549 @category{Ввод файлов}