Examples cleanup
[maxima.git] / doc / info / zh / Help.texi
blobd427439bbe80a8f39b7443c007ebc4133ad857eb
1 @menu
2 * Lisp与Maxima::            
3 * 垃圾收集::          
4 * 文档::               
5 * 帮助函数与变量::        
6 @end menu
8 @node Lisp与Maxima, 垃圾收集, 帮助, 帮助
9 @section Lisp and Maxima
10 Maxima是用Lisp写的,从Maxima里很容易访问Lisp的函数与变量,反之也一样.
11 Lisp与Maxima的标志符通过命名习惯来区分.
12 一个以美元符号@code{$}开始的Lisp标志符对应于一个没有美元符号的Maxima标志符.
13 @c NEED TO MENTION THIS OR IS IT JUST CLUTTERING ??
14 @c This includes special Maxima variables such as @code{%} and input and output labels,
15 @c which appear as @code{$%}, @code{$%i1}, @code{$%o1}, etc., in Lisp.
17 一个以问号@code{?}开始的Maxima标志符对应于一个没有问号的Lisp标志符.
19 例如Maxima标志符@code{foo}对应于Lisp标志符@code{$foo},而Maxima标志符@code{?foo}对应于Lisp标志符@code{foo},注意书写@code{?foo}时@code{?}与@code{foo}之间没有空格,否则可能会误认为是@code{describe ("foo")}.
21 连接号@code{-},星号@code{*}或者其它在Lisp中的标志符当它们出现在Maxima代码中时必须通过反斜杠@code{\}来转义.
22 例如,Lisp标志符 @code{*foo-bar*}在Maxima中要写成@code{?\*foo\-bar\*}.
24 Lisp代码可以在Maxima对话中执行.
25 包含一种或者多种形式的一行Lisp代码可以通过特殊命令command @code{:lisp}来执行.例如
27 @example
28 (%i1) :lisp (foo $x $y)
29 @end example
30 @noindent
31 将调用Lisp函数@code{foo},并以Maxima变量@code{x}与@code{y}作为参数. 
32 @code{:lisp} 结构能出现在交互式提示符中或者在一个通过@code{batch} 与 @code{demo}处理过的文件中,
33 但是不能出现在@code{load}, @code{batchload}, @code{translate_file}, 或 @code{compile_file}处理的文件中.
35 函数@code{to_lisp()}将开启一个交互式Lisp环境.
36 键入@code{(to-maxima)} 将关闭这个交互式环增色并返回Maxima.
38 @c I DON'T EVEN WANT TO MENTION USING CTRL-C TO OPEN A LISP SESSION.
39 @c (1) IT TAKES EXTRA SET UP TO GET STARTED NAMELY :lisp (setq *debugger-hook* nil)
40 @c (2) IT GETS SCREWED UP EASILY -- TYPE SOMETHING WRONG AND YOU CAN'T GET BACK TO MAXIMA
41 @c (3) IT DOESN'T OFFER FUNCTIONALITY NOT PRESENT IN THE to_lisp() SESSION
43 那些打算在Maxima中可见的只有普通的名字的Lsip函数与变量,它的Lisp名字必须以美元标志@code{$}开始.
44 Maxima是大小写敏感的,可以区分大写与小写字母的标志符,然而Lisp却不是.
45 有一些规则来控制这些名字在Lisp与Maxima中的变化.
47 @enumerate
48 @item
49 一个没有被竖条围住的Lisp标志符对应一个小写的Maxima标志符
50 无论Lisp标志符是大写,小写还是大小写混杂的都将被忽略,例如Lisp的@code{$foo}, @code{$FOO}, 和 @code{$Foo}都对应着Maxima的 @code{foo}.
52 @item
53 全大写或者全小写并且用竖条围住的Lisp标志符对应着Maxima的标志符大小写颠倒的.
54 即大写全部变成小写,小写全部变成大写.
55 如Lisp标志符Lisp @code{|$FOO|} 与 @code{|$foo|}各自对应着Maxima的@code{foo} 与 @code{FOO}.
57 @item
58 一个大小写混杂的并且用竖条围着Lisp标志符对应着Maxima同样的标志符,
59 例如Lisp标志符@code{|$Foo|}对应着Maxima中的@code{Foo}.
60 @end enumerate
62 Lisp宏@code{#$}允许在Lisp代码中运用Maxima表达式.
63 Lisp表达式@code{#$@var{expr}$}等同于 Maxima表达式@var{expr}.
65 @example
66 (msetq $foo #$[x, y]$)
67 @end example
69 @noindent
70 输入下面内容也起同样作用
72 @example
73 (%i1) foo: [x, y];
74 @end example
76 @noindent
77 Lisp函数@code{displa} 以Maxima格式输出一个表达式.
79 @example
80 (%i1) :lisp #$[x, y, z]$ 
81 ((MLIST SIMP) $X $Y $Z)
82 (%i1) :lisp (displa '((MLIST SIMP) $X $Y $Z))
83 [x, y, z]
84 NIL
85 @end example
87 在Maxima中定义的函数不是普通的Lisp函数.
88 Lisp函数@code{mfuncall}调用一个Maxima函数.
89 例如:
91 @example
92 (%i1) foo(x,y) := x*y$
93 (%i2) :lisp (mfuncall '$foo 'a 'b)
94 ((MTIMES SIMP) A B)
95 @end example
97 一些Lisp函数在Maxima包中是看不见的,它们是:
99 @code{complement},
100 @code{continue},
101 @code{//},
102 @code{float},
103 @code{functionp},
104 @code{array},
105 @code{exp},
106 @code{listen},
107 @code{signum},
108 @code{atan},
109 @code{asin},
110 @code{acos},
111 @code{asinh},
112 @code{acosh},
113 @code{atanh},
114 @code{tanh},
115 @code{cosh},
116 @code{sinh},
117 @code{tan},
118 @code{break},
119 和 @code{gcd}.
122 @node 垃圾收集,文档,Lisp与Maxima,帮助
123 @section 垃圾收集
124 符号运算很容易产生大量垃圾,有效的处理这些垃圾对一些程序的完成是非常重要的.
126 @c HOW MUCH OF THE FOLLOWING STILL HOLDS ??
127 @c WHAT ABOUT GC IN GCL ON MS WINDOWS ??
128 @c SHOULD WE SAY SOMETHING ABOUT GC FOR OTHER LISPS ??
130 GCL语言下可以调用UNIX系统(包括SUN OS4.0 及一些变种BSD)的mprotect系统,那是一种分层的垃圾收集功能.
131 这限制了最近写入的页的回收.参见GCL文档中ALLOCATE与GBC,在Lisp层次下使用(setq si::*notify-gbc* t)能帮助你决定哪一个层次需要更多空间.
132 @c上面这一段话翻译得不准,需改
134 @node 文档, 帮助有关函数与变量,垃圾收集,帮助 
135 @section 帮助
137 @c SHOULD TALK ABOUT OTHER FORMS OF DOCUMENTATION ASIDE FROM ON-LINE MANUAL.
139 Maxima在线用户手册可以通过多种形式阅读,在Maxima交互式命令行中,用户手册可以用@code{?}命令显示成普通文本(例如@code{describe} 函数),还可以显示成@code{info}超文本通过 @code{info} 显示程序来看,也可以通过网页通过网页浏览器来看.
141 @code{example} 显示了许多Maxima函数例子.
142 例如,
144 @example
145 (%i1) example (integrate);
146 @end example
148 将输出
150 @example
151 (%i2) test(f):=block([u],u:integrate(f,x),ratsimp(f-diff(u,x)))
152 (%o2) test(f) := block([u], u : integrate(f, x), 
154                                          ratsimp(f - diff(u, x)))
155 (%i3) test(sin(x))
156 (%o3)                           0
157 (%i4) test(1/(x+1))
158 (%o4)                           0
159 (%i5) test(1/(x^2+1))
160 (%o5)                           0
161 @end example
163 和一些别的信息.
165 @node 帮助的函数与变量,文档,帮助
166 @section 与帮助有关的函数与变量
168 @deffn {Function} demo (@var{filename})
169 评估@var{filename}里Maxima表达式并显示结果.
170 @code{demo}将会在评估完每一个表达式后暂停,等待用户输入回车键继续.
171 如果是在Xmaxima里运行,@code{demo}可能需要输入一个分号@code{;}再按回车.
173 @code{demo} 搜索目录列表@code{file_search_demo} 来查找@code{filename}
174 如果文件有@code{dem}后缀,这个后缀可能会被省略掉. 参见@code{file_search}.
177 @code{demo} 计算它的参数.
178 @code{demo} 返回演示的文件名.
180 例子:
182 @example
183 (%i1) demo ("disol");
185 batching /home/wfs/maxima/share/simplification/disol.dem
186  At the _ prompt, type ';' followed by enter to get next demo
187 (%i2)                      load(disol)
190 (%i3)           exp1 : a (e (g + f) + b (d + c))
191 (%o3)               a (e (g + f) + b (d + c))
194 (%i4)                disolate(exp1, a, b, e)
195 (%t4)                         d + c
197 (%t5)                         g + f
199 (%o5)                   a (%t5 e + %t4 b)
202 (%i5) demo ("rncomb");
204 batching /home/wfs/maxima/share/simplification/rncomb.dem
205  At the _ prompt, type ';' followed by enter to get next demo
206 (%i6)                     load(rncomb)
209                              z         x
210 (%i7)               exp1 : ----- + ---------
211                            y + x   2 (y + x)
212                           z         x
213 (%o7)                   ----- + ---------
214                         y + x   2 (y + x)
217 (%i8)                     combine(exp1)
218                           z         x
219 (%o8)                   ----- + ---------
220                         y + x   2 (y + x)
223 (%i9)                     rncombine(%)
224                              2 z + x
225 (%o9)                       ---------
226                             2 (y + x)
229                              d   c   b   a
230 (%i10)                exp2 : - + - + - + -
231                              3   3   2   2
232                           d   c   b   a
233 (%o10)                    - + - + - + -
234                           3   3   2   2
237 (%i11)                    combine(exp2)
238                       2 d + 2 c + 3 (b + a)
239 (%o11)                ---------------------
240                                 6
243 (%i12)                   rncombine(exp2)
244                       2 d + 2 c + 3 b + 3 a
245 (%o12)                ---------------------
246                                 6
249 (%i13) 
250 @end example
252 @end deffn
254 @deffn {Function} describe (@var{string})
255 @deffnx {Function} describe (@var{string}, exact)
256 @deffnx {Function} describe (@var{string}, inexact)
257 @ifinfo
258 @fnindex Help
259 @end ifinfo
261 @code{describe(@var{string})} 等同于 @code{describe(@var{string}, exact)}.
263 @code{describe(@var{string}, exact)}查找一个名称等同于(大小写不敏感) @var{string}的子项, 当然要存在那么一个子项.
265 @code{describe(@var{string}, inexact)} 搜索所有标题中包含@var{string}的文档子项,
266 如果找到多于一个子项,Maxima将会询问用户显示哪一项或者多项.
268 在交互式命令行中@code{? foo} (@code{?} 与 @code{foo}中有一个空格)等同于@code{describe("foo", exact)},
269 @code{?? foo}等同于 @code{describe("foo", inexact)}.
271 @code{describe("", inexact)}将输出所有在线手册主题列表.
273 @code{describe}将它的参数括起来了.
274 如果@code{describe}找到文档将返回@code{true},否则返回@code{false}.
276 参见 @ref{Documentation}.
278 Example:
280 @example
281 (%i1) ?? integ
282  0: Functions and Variables for Elliptic Integrals
283  1: Functions and Variables for Integration
284  2: Introduction to Elliptic Functions and Integrals
285  3: Introduction to Integration
286  4: askinteger  (Functions and Variables for Simplification)
287  5: integerp  (Functions and Variables for Miscellaneous Options)
288  6: integer_partitions  (Functions and Variables for Sets)
289  7: integrate  (Functions and Variables for Integration)
290  8: integrate_use_rootsof  (Functions and Variables for
291     Integration)
292  9: integration_constant_counter  (Functions and Variables for
293     Integration)
294  10: nonnegintegerp  (Functions and Variables for linearalgebra)
295 Enter space-separated numbers, `all' or `none': 7 8
297  -- Function: integrate (<expr>, <x>)
298  -- Function: integrate (<expr>, <x>, <a>, <b>)
299      Attempts to symbolically compute the integral of <expr> with
300      respect to <x>.  `integrate (<expr>, <x>)' is an indefinite
301      integral, while `integrate (<expr>, <x>, <a>, <b>)' is a
302      definite integral, [...]
303      
304  -- Option variable: integrate_use_rootsof
305      Default value: `false'
307      When `integrate_use_rootsof' is `true' and the denominator of
308      a rational function cannot be factored, `integrate' returns
309      the integral in a form which is a sum over the roots (not yet
310      known) of the denominator.
311      [...]
312 @end example
314 在这个例子中,子项7与子项8被选择了.可以用 @code{all}或者@code{none}来全选或全不选,也可以用它们的缩写形式,@code{a} 与 @code{n}.
315 @end deffn
317 @deffn {Function} example (@var{topic})
318 @deffnx {Function} example ()
319 @code{example (@var{topic})} 将显示 @var{topic}中的一些例子,var{topic}是符号而不是字符串.
320 许多题目都是函数名称.@code{example ()} 将返回所有认识的主题列表.
321 包含例子的文件名是通过全局变量@code{manual_demo}给定的,它的缺省值是 @code{"manual.demo"}.
323 @code{example} 括起了它的参数.
324 @code{example} 将返回 @code{done},如遇到错误或者没有参数@code{example}将返回所有认识的题目.
326 Examples:
328 @example
329 (%i1) example (append);
330 (%i2) append([x+y,0,-3.2],[2.5E+20,x])
331 (%o2)             [y + x, 0, - 3.2, 2.5E+20, x]
332 (%o2)                         done
333 (%i3) example (coeff);
334 (%i4) coeff(b+tan(x)+2*a*tan(x) = 3+5*tan(x),tan(x))
335 (%o4)                      2 a + 1 = 5
336 (%i5) coeff(1+x*%e^x+y,x,0)
337 (%o5)                         y + 1
338 (%o5)                         done
339 @end example
341 @end deffn