4 @c OriginalRevision=1.25
5 @c TranslatedBy: (c) 2007-02 Andrey Siver <ihep-2005@yandex.ru>
11 * Справочная система::
14 @node Lisp и Maxima, Сборка мусора, Справка, Справка
15 @section Lisp и Maxima
17 Maxima написана на Lisp, поэтому легко получить доступ к Lisp функциям и переменным из Maxima и наоборот.
18 Lisp и Maxima символы различают с помощью соглашения об именах.
19 Lisp символ, который начинается со знака @code{$} соответствует Maxima символу
21 @c NEED TO MENTION THIS OR IS IT JUST CLUTTERING ??
22 @c This includes special Maxima variables such as @code{%} and input and output labels,
23 @c which appear as @code{$%}, @code{$%i1}, @code{$%o1}, etc., in Lisp.
24 Maxima символ, который начинается со знака @code{?} соответствует
25 Lisp символу без знака вопроса.
26 Например, Maxima символ @code{foo} соответствует Lisp символу @code{$foo},
27 в то время как Maxima символ @code{?foo} соответствует Lisp символу @code{foo},
28 Заметим, что @code{?foo} записано без пробелов между @code{?} и @code{foo};
29 иначе можно перепутать с @code{describe ("foo")}.
31 @code{-}, @code{*}, и другие специальные знаки в Lisp символах
32 должны быть экранированы @code{\} везде, где они появляются в коде Maxima.
33 Например, Lisp идентификатор @code{*foo-bar*} записывается как @code{?\*foo\-bar\*} в Maxima.
35 Lisp код может быть выполнен из Maxima сессии. Простая строка с Lisp кодом
36 (содержащая одну и более форм) может быть выполнена с помощью специальной
37 команды @code{:lisp}. Например,
40 (%i1) :lisp (foo $x $y)
44 вызывает Lisp функцию @code{foo} с Maxima переменными @code{x} и @code{y} в качестве аргументов.
45 @code{:lisp} конструкция может появляться в интерактивном приглашении
46 или в файле, исполняемом командой @code{batch} или @code{demo},
47 но только не в файле исполняемом командами @code{load}, @code{batchload},
48 @code{translate_file}, или @code{compile_file}.
50 Функция @code{to_lisp()} открывает интегративную Lisp сессию.
51 Ввод @code{(to-maxima)} закрывает Lisp сессию и возвращает к Maxima.
52 @c I DON'T EVEN WANT TO MENTION USING CTRL-C TO OPEN A LISP SESSION.
53 @c (1) IT TAKES EXTRA SET UP TO GET STARTED NAMELY :lisp (setq *debugger-hook* nil)
54 @c (2) IT GETS SCREWED UP EASILY -- TYPE SOMETHING WRONG AND YOU CAN'T GET BACK TO MAXIMA
55 @c (3) IT DOESN'T OFFER FUNCTIONALITY NOT PRESENT IN THE to_lisp() SESSION
57 Lisp функции и переменные, которые, как известно, видны в Maxima как
58 функции и переменные с обычными именами (без специальной пунктуации)
59 должны иметь Lisp имена, начинающиеся со знака @code{$}.
61 Maxima чувствительна к регистру символов, различая буквы в нижнем и
62 верхнем регистрах, в идентификаторах, в то время как Lisp - нет.
63 Существуют некоторые правила, управляющие переводом имен между Lisp
68 Lisp идентификатор не заключенный в вертикальные черты соответствует Maxima идентификатору в нижнем регистре.
69 Является ли Lisp идентификатор в верхнем, нижнем, или смешанном регистре, регистр игнорируется.
70 То есть, Lisp @code{$foo}, @code{$FOO}, и @code{$Foo} - все соответствуют Maxima @code{foo}.
72 Lisp идентификатор, имеющий все знаки в нижнем или все знаки в верхнем регистре
73 и заключенный в вертикальные черты, соответствует Maxima идентификатору с именем в обратном регистре.
74 То есть, верхний регистр меняется в нижний и нижний регистр - в верхний.
75 Например, Lisp @code{|$FOO|} и @code{|$foo|}
76 соответствуют Maxima @code{foo} и @code{FOO}, в указанном порядке.
78 Lisp идентификатор, который записан в смешанном регистре и заключенный в вертикальные черты соответствует Maxima идентификатору в том же регистре.
79 Например, Lisp @code{|$Foo|} соответствует Maxima @code{Foo}.
82 @code{#$} Lisp макрооператор позволяет использовать Maxima выражения в Lisp коде.
83 @code{#$@var{expr}$} превращается в Lisp выражение, эквивалентное Maxima выражению @var{expr}.
86 (msetq $foo #$[x, y]$)
91 Это имеет тот же самый эффект как при вводе:
98 Lisp функция @code{displa} печатает выражение в Maxima форме.
101 (%i1) :lisp #$[x, y, z]$
102 ((MLIST SIMP) $X $Y $Z)
103 (%i1) :lisp (displa '((MLIST SIMP) $X $Y $Z))
108 Функции, заданные в Maxima не являются обычными Lisp функциями.
109 Lisp функция @code{mfuncall} вызывает Maxima функцию.
113 (%i1) foo(x,y) := x*y$
114 (%i2) :lisp (mfuncall '$foo 'a 'b)
118 Некоторые Lisp функции скрыты в Maxima пакете, а именно такие как:
142 @opencatbox{Категории:}
143 @category{Программирование}
146 @node Сборка мусора, Документация, Lisp и Maxima, Справка
147 @section Сборка мусора
149 Вычисление в символьном виде имеют тенденцию создавать много ``мусора'',
150 и эффективное управление этим мусором может стать решающим для успешного
151 выполнения некоторых программ.
153 @c HOW MUCH OF THE FOLLOWING STILL HOLDS ??
154 @c WHAT ABOUT GC IN GCL ON MS WINDOWS ??
155 @c SHOULD WE SAY SOMETHING ABOUT GC FOR OTHER LISPS ??
156 Под GCL, на UNIX системах, где доступны вызовы системы ``mprotect'',
157 (включая SUN OS 4.0 и некоторые версии BSD) доступна прямая сборка мусора.
158 Это ограничивает сборку страницами, в которые недавно производилась запись.
159 См. документацию по GCL по ключевым словам ALLOCATE и GBC. На уровне
160 Lisp, установка (setq si::*notify-gbc* t) поможет вам определить, какие области
161 памяти, возможно, требуют больше пространства.
163 @node Документация, Справочная система, Сборка мусора, Справка
164 @section Документация
166 @c SHOULD TALK ABOUT OTHER FORMS OF DOCUMENTATION ASIDE FROM ON-LINE MANUAL.
168 Руководство пользователя Maxima можно просматривать в различных форматах.
169 Из интерактивного приглашения Maxima, руководство пользователя
170 просматривается как обычный текст командой @code{?} (то есть, функция @code{describe}).
171 Руководство пользователя просматривается как @code{info} гипертекст с помощью @code{info}
172 просмотрщиком и как веб-страница с помощью обычного веб-браузера.
174 @code{example} показывает примеры для многих Maxima функций.
178 (%i1) example (integrate);
184 (%i2) test(f):=block([u],u:integrate(f,x),ratsimp(f-diff(u,x)))
185 (%o2) test(f) := block([u], u : integrate(f, x),
187 ratsimp(f - diff(u, x)))
192 (%i5) test(1/(x^2+1))
196 и дополнительный вывод.
198 @opencatbox{Категории:}
199 @category{Работа в консоли}
202 @node Справочная система, , Документация, Справка
203 @section Справочная система
205 @deffn {Функция} demo (@var{filename})
206 вычисляет Maxima выражения в @var{filename} и показывает результаты.
207 @code{demo} останавливается после вычислений каждого выражения
208 и продолжает после того, как пользователь нажмет ``Enter''.
209 (Если запущена Xmaxima, @code{demo} необходимо перед вводом
212 @code{demo} просматривает список директорий
213 @code{file_search_demo}, чтобы найти @code{filename}.
214 Если файл имеет расширение @code{dem}, то его можно опустить.
215 См. также @code{file_search}.
217 @code{demo} вычисляет свои аргументы.
218 @code{demo} возвращает имя демонстрационного файла.
223 (%i1) demo ("disol");
225 batching /home/wfs/maxima/share/simplification/disol.dem
226 At the _ prompt, type ';' followed by enter to get next demo
230 (%i3) exp1 : a (e (g + f) + b (d + c))
231 (%o3) a (e (g + f) + b (d + c))
234 (%i4) disolate(exp1, a, b, e)
239 (%o5) a (%t5 e + %t4 b)
242 (%i5) demo ("rncomb");
244 batching /home/wfs/maxima/share/simplification/rncomb.dem
245 At the _ prompt, type ';' followed by enter to get next demo
250 (%i7) exp1 : ----- + ---------
253 (%o7) ----- + ---------
259 (%o8) ----- + ---------
270 (%i10) exp2 : - + - + - + -
278 2 d + 2 c + 3 (b + a)
279 (%o11) ---------------------
283 (%i12) rncombine(exp2)
284 2 d + 2 c + 3 b + 3 a
285 (%o12) ---------------------
292 @opencatbox{Категории:}
293 @category{Работа в консоли}
294 @category{Ввод файлов}
299 @deffn {Функция} describe (@var{string})
300 @deffnx {Функция} describe (@var{string}, exact)
301 @deffnx {Функция} describe (@var{string}, inexact)
306 @code{describe(@var{string})} эквивалентно @code{describe(@var{string}, exact)}.
308 @code{describe(@var{string}, exact)} ищет элемент, с заголовком равным
309 (независимо от регистра) @var{string}, если такой элемент есть.
311 @code{describe(@var{string}, inexact)} ищет все документированные элементы,
312 которые содержат @var{string} в своих заголовках.
313 Если есть более чем один такой элемент, Maxima спросит пользователя выбрать
314 элемент или несколько элементов для отображения.
316 В интерактивном приглашении, @code{? foo} (с пробелом между @code{?} и @code{foo})
317 эквивалентно @code{describe("foo", exact)}, и @code{?? foo} эквивалентно
318 @code{describe("foo", inexact)}.
320 @code{describe("", inexact)} дает список всех тем, документированных в руководстве пользователя.
322 @code{describe} не вычисляет свой аргумент.
323 @code{describe} возвращает @code{true} если документация найдена, @code{false} в противном случае.
325 См. также @ref{Документация}.
331 0: Functions and Variables for Elliptic Integrals
332 1: Functions and Variables for Integration
333 2: Introduction to Elliptic Functions and Integrals
334 3: Introduction to Integration
335 4: askinteger (Functions and Variables for Simplification)
336 5: integerp (Functions and Variables for Miscellaneous Options)
337 6: integer_partitions (Functions and Variables for Sets)
338 7: integrate (Functions and Variables for Integration)
339 8: integrate_use_rootsof (Functions and Variables for
341 9: integration_constant_counter (Functions and Variables for
343 10: nonnegintegerp (Functions and Variables for linearalgebra)
344 Enter space-separated numbers, `all' or `none': 7 8
346 -- Function: integrate (<expr>, <x>)
347 -- Function: integrate (<expr>, <x>, <a>, <b>)
348 Attempts to symbolically compute the integral of <expr> with
349 respect to <x>. `integrate (<expr>, <x>)' is an indefinite
350 integral, while `integrate (<expr>, <x>, <a>, <b>)' is a
351 definite integral, [...]
353 -- Option variable: integrate_use_rootsof
354 Default value: `false'
356 When `integrate_use_rootsof' is `true' and the denominator of
357 a rational function cannot be factored, `integrate' returns
358 the integral in a form which is a sum over the roots (not yet
359 known) of the denominator.
363 В этом примере, были выбраны элементы 7 и 8
364 (вывод команды сокращен, что обозначено @code{[...]}).
365 Все элементы или ни один из элементов могут быть выбраны при помощи @code{all}
366 или @code{none}, что можно также сократить до @code{a} и @code{n} соотвественно.
368 @opencatbox{Категории:}
369 @category{Работа в консоли}
375 @deffn {Функция} example (@var{topic})
376 @deffnx {Функция} example ()
377 @code{example (@var{topic})} показывает некоторые примеры для символа @var{topic} (не строки).
378 Большинство @var{topic} являются именами функций.
379 @code{example ()} возвращает список всех доступных @var{topic}.
381 Имя файла содержащего эти примеры задано глобальной переменной @code{manual_demo},
382 которая исходно равна @code{"manual.demo"}.
384 @code{example} не вычисляет свой аргумент.
385 @code{example} возвращает @code{done}
386 только если нет ошибки или отсутствия аргумента.
387 @code{example} возвращает список всех подходящих тем.
392 (%i1) example (append);
393 (%i2) append([x+y,0,-3.2],[2.5E+20,x])
394 (%o2) [y + x, 0, - 3.2, 2.5E+20, x]
396 (%i3) example (coeff);
397 (%i4) coeff(b+tan(x)+2*a*tan(x) = 3+5*tan(x),tan(x))
399 (%i5) coeff(1+x*%e^x+y,x,0)
404 @opencatbox{Категории:}
405 @category{Работа в консоли}