Fix bug #1848: taytorat leaks internal gensyms from multivar expansions
[maxima.git] / doc / info / ja / unit.texi
blob82770679e92efd389f582f87e1ad9cc979ae9144
1 @menu
2 * Introduction to Units::
3 * Functions and Variables for Units::
4 @end menu
6 @node Introduction to Units, Functions and Variables for Units, unit, unit
7 @section Introduction to Units
9 @emph{unit}パッケージは、ユーザーが
10 任意の単位間での変換したり、方程式の中の次元を扱うことを可能にします。
11 このパッケージの機能はオリジナルのMaxima単位パッケージとは根本的に違います - 
12 オリジナルは定義の基本的なリストでしたが、
13 このパッケージは、ユーザーが
14 次元基底毎に最後の答えが翻訳される単位を選ぶことを可能にするようなルールセットを使います。
15 表示でそれらを混ぜる代わりに単位を分離し、
16 ユーザーが
17 個々の答えに関連付けられた単位を容易に識別することを可能にします。
18 演繹された単位に整理する間、巧みな制御を供給することはもちろん、
19 ユーザーが式を基本的な基底単位に整理することを可能にします。
20 次元解析が可能で、変換と整理オプションを管理するために様々なツールが利用可能です。
21 カスタマイズ可能な自動変換に加えて、
22 @emph{units}はこれまでの手動変換オプションも提供します。
24 注意 - 単位変換が正確でない時、Maximaは
25 分数に帰着する近似を行います。
26 これは、単位を整理するのに使われる手法の結果です。
27 このタイプの代入を警告するメッセージは、
28 この状況はしばしば起こり、警告が出力を群れをなしておおうので、
29 (通常オンですが)単位の場合デフォルトでディセーブルにされています。
30 (単位変換の後、ratprintの存在している状態は復元されます。
31 だから、そうでなければ、ユーザーのその設定への変更は保持されます。)
32 もしユーザーが単位に関するこの情報を必要とするなら、
33 単位変換プロセスからの警告の印字を再アクティベートするために
34 @emph{unitverbose:on}を設定できます。
36 @emph{unit}はMaximaに、share/contrib/unitディレクトリに含まれます。
37 通常のMaximaのパッケージローディング慣例に従います:
39 @example
40 @group
41 (%i1) load("unit")$
42 *******************************************************************
43 *                       Units version 0.50                        *
44 *          Definitions based on the NIST Reference on             *
45 *              Constants, Units, and Uncertainty                  *
46 *       Conversion factors from various sources including         *
47 *                   NIST and the GNU units package                *
48 *******************************************************************
50 Redefining necessary functions...
51 WARNING: DEFUN/DEFMACRO: redefining function TOPLEVEL-MACSYMA-EVAL ...
52 WARNING: DEFUN/DEFMACRO: redefining function MSETCHK ...
53 WARNING: DEFUN/DEFMACRO: redefining function KILL1 ...
54 WARNING: DEFUN/DEFMACRO: redefining function NFORMAT ...
55 Initializing unit arrays...
56 Done.
57 @end group
58 @end example
60 WARNINGメッセージが予想されますが、心配の原因ではありません - 
61 それらは
62 @emph{unit}パッケージが本来のMaximaで既に定義されている関数を再定義していることを示しています。
63 これは単位を適切には使うために必要です。
64 ユーザーは、もし他のパッケージがこれらの関数に他の変更を加えたならそれらの変更はこのロードプロセスによって上書きされることに気づくべきです。
66 @emph{unit.mac}ファイルは、
67 パッケージに必要なlisp関数を含む
68 lispファイル@emph{unit-functions.lisp}もロードします。
70 Clifford Yappは主作者です。
71 彼は、
72 Nebraska大学Kearney校(UNK)のBarton Willis, Robert Dodier,
73 そしてMaximaメーリングリストの他の大胆不敵な人々から
74 価値ある援助を受けました。
76 たぶん多くのバグがあります。知らせてください。
77 @code{float}と@code{numer}は期待の動作をしません。
79 TODO : 次元機能、温度の扱い、略語表示、仲間。単位を含む量の足し算の例を示す。
81 @opencatbox
82 @category{Physical units}
83 @category{Share packages}
84 @category{Package unit}
85 @closecatbox
88 @node Functions and Variables for Units,  , Introduction to Units, unit
89 @section Functions and Variables for Units
91 @deffn {関数} setunits (@var{list})
92 デフォルトでは、 @emph{unit}パッケージは
93 組み立てられた次元はどんなものでも使いませんが、
94 MKS単位を使ってすべての単位を7つの基本的な次元に変換します。
95 @example
96 @group
97 (%i2) N;
98                                      kg m
99 (%o2)                                ----
100                                        2
101                                       s
102 @end group
103 @group
104 (%i3) dyn;
105                                    1      kg m
106 (%o3)                           (------) (----)
107                                  100000     2
108                                            s
109 @end group
110 @group
111 (%i4) g;
112                                     1
113 (%o4)                             (----) (kg)
114                                    1000
115 @end group
116 @group
117 (%i5) centigram*inch/minutes^2;
118                                   127        kg m
119 (%o5)                       (-------------) (----)
120                              1800000000000     2
121                                               s
122 @end group
123 @end example
125 いくつかの場合、これは望みの振る舞いです。
126 もしユーザーが他の単位を使いたいなら、
127 これは
128 @code{setunits}コマンドで達成されます:
129 @example
130 @group
131 (%i6) setunits([centigram,inch,minute]);
132 (%o6)                                done
133 @end group
134 @group
135 (%i7) N;
136                             1800000000000   %in cg
137 (%o7)                      (-------------) (------)
138                                  127            2
139                                             %min
140 @end group
141 @group
142 (%i8) dyn;
143                                18000000   %in cg
144 (%o8)                         (--------) (------)
145                                  127          2
146                                           %min
147 @end group
148 @group
149 (%i9) g;
150 (%o9)                             (100) (cg)
151 @end group
152 @group
153 (%i10) centigram*inch/minutes^2;
154                                     %in cg
155 (%o10)                              ------
156                                         2
157                                     %min
158 @end group
159 @end example
161 単位の設定は実に柔軟性があります。
162 例えば、もしキログラム、メータ、秒に、それらの次元のデフォルトとして戻りたいなら、
163 以下のようにできます:
164 @example
165 @group
166 (%i11) setunits([kg,m,s]);
167 (%o11)                               done
168 @end group
169 @group
170 (%i12) centigram*inch/minutes^2;
171                                   127        kg m
172 (%o12)                      (-------------) (----)
173                              1800000000000     2
174                                               s
175 @end group
176 @end example
178 組立単位もこのコマンドで扱います:
179 @example
180 @group
181 (%i17) setunits(N);
182 (%o17)                               done
183 @end group
184 @group
185 (%i18) N;
186 (%o18)                                 N
187 @end group
188 @group
189 (%i19) dyn;
190                                     1
191 (%o19)                           (------) (N)
192                                   100000
193 @end group
194 @group
195 (%i20) kg*m/s^2;
196 (%o20)                                 N
197 @end group
198 @group
199 (%i21) centigram*inch/minutes^2;
200                                     127
201 (%o21)                        (-------------) (N)
202                                1800000000000
203 @end group
204 @end example
206 Notice that the 
207 @emph{unit}パッケージは
208 質量、長さ、力として二乗された逆時間の非MKS組み合わせを認識し、
209 それをNewtonのものに変換したことに注目してください。
210 これは一般にMaximaがどのように働くかを示します。
211 例えば、もしNewtonのものよりダインを好むなら、
212 単に以下をします:
213 @example
214 @group
215 (%i22) setunits(dyn);
216 (%o22)                               done
217 @end group
218 @group
219 (%i23) kg*m/s^2;
220 (%o23)                          (100000) (dyn)
221 @end group
222 @group
223 (%i24) centigram*inch/minutes^2;
224                                   127
225 (%o24)                         (--------) (dyn)
226                                 18000000
227 @end group
228 @end example
230 任意の力に整理することを中断するには、
231 uforgetコマンドを使います:
232 @example
233 @group
234 (%i26) uforget(dyn);
235 (%o26)                               false
236 @end group
237 @group
238 (%i27) kg*m/s^2;
239                                      kg m
240 (%o27)                               ----
241                                        2
242                                       s
243 @end group
244 @group
245 (%i28) centigram*inch/minutes^2;
246                                   127        kg m
247 (%o28)                      (-------------) (----)
248                              1800000000000     2
249                                               s
250 @end group
251 @end example
252 これは、
253 @code{uforget(N)}か @code{uforget(%force)}を使って
254 同じようにうまく働きました。
256 @code{uforget}も参照してください。
257 この関数を使うには、最初に @code{load("unit")}を書いてください。
259 @opencatbox
260 @category{Package unit}
261 @closecatbox
263 @end deffn
265 @deffn {関数} uforget (@var{list})
266 デフォルトでは、 @emph{unit}パッケージは
267 、NKS単位を使って、単位すべてを7つの基本次元に変換します。
268 この振る舞いは
269 @code{setunits}コマンドを使って変えることができます。
270 その後、ユーザーは、
271 @code{uforget}コマンドを使って,
272 特定の次元に関してデフォルトの振る舞いに戻すことができます:
273 @example
274 @group
275 (%i13) setunits([centigram,inch,minute]);
276 (%o13)                               done
277 @end group
278 @group
279 (%i14) centigram*inch/minutes^2;
280                                     %in cg
281 (%o14)                              ------
282                                         2
283                                     %min
284 @end group
285 @group
286 (%i15) uforget([cg,%in,%min]);
287 (%o15)                      [false, false, false]
288 @end group
289 @group
290 (%i16) centigram*inch/minutes^2;
291                                   127        kg m
292 (%o16)                      (-------------) (----)
293                              1800000000000     2
294                                               s
295 @end group
296 @end example
298 @code{uforget}は単位ではなく次元上で働きます。
299 だから、特定の次元の任意の単位は機能します。
300 次元それ自身も合法な引数です。
302 @code{setunits}も参照してください。
303 この関数を使うには、最初に @code{load("unit")}を書いてください。
305 @opencatbox
306 @category{Package unit}
307 @closecatbox
309 @end deffn
311 @deffn {関数} convert (@var{expr}, @var{list})
312 グローバル環境をリセットすることがやりすぎの時、
313 @code{convert}コマンドがあります。
314 これは1回変換を許します。
315 変換に使うのに、1つの引数か単位のリストを受け付けることができます。
316 変換演算がされた時、
317 望みの結果が再変換されるのを避けるために
318 正常なグローバル評価系は迂回されます。
319 結果として、
320 もしこの振る舞いを制御しているグローバル環境(@code{ratprint})が真なら、
321 不正確な計算に対して、"rat"警告が見られるでしょう。
322 これは
323 グローバル変換の精度の抜き取り検査に
324 役に立ちます。
325 別の特長は
326 たとえグローバル環境が組立次元に整理するように設定されても
327 @code{convert}はユーザーに基本次元変換することを許すことです。
329 @example
330 @group
331 (%i2) kg*m/s^2;
332                                      kg m
333 (%o2)                                ----
334                                        2
335                                       s
336 @end group
337 @group
338 (%i3) convert(kg*m/s^2,[g,km,s]);
339                                      g km
340 (%o3)                                ----
341                                        2
342                                       s
343 @end group
344 @group
345 (%i4) convert(kg*m/s^2,[g,inch,minute]);
347 `rat' replaced 39.37007874015748 by 5000/127 = 39.37007874015748
348                               18000000000   %in g
349 (%o4)                        (-----------) (-----)
350                                   127           2
351                                             %min
352 @end group
353 @group
354 (%i5) convert(kg*m/s^2,[N]);
355 (%o5)                                  N
356 @end group
357 @group
358 (%i6) convert(kg*m^2/s^2,[N]);
359 (%o6)                                 m N
360 @end group
361 @group
362 (%i7) setunits([N,J]);
363 (%o7)                                done
364 @end group
365 @group
366 (%i8) convert(kg*m^2/s^2,[N]);
367 (%o8)                                 m N
368 @end group
369 @group
370 (%i9) convert(kg*m^2/s^2,[N,inch]);
372 `rat' replaced 39.37007874015748 by 5000/127 = 39.37007874015748
373                                  5000
374 (%o9)                           (----) (%in N)
375                                  127
376 @end group
377 @group
378 (%i10) convert(kg*m^2/s^2,[J]);
379 (%o10)                                 J
380 @end group
381 @group
382 (%i11) kg*m^2/s^2;
383 (%o11)                                 J
384 @end group
385 @group
386 (%i12) setunits([g,inch,s]);
387 (%o12)                               done
388 @end group
389 @group
390 (%i13) kg*m/s^2;
391 (%o13)                                 N
392 @end group
393 @group
394 (%i14) uforget(N);
395 (%o14)                               false
396 @end group
397 @group
398 (%i15) kg*m/s^2;
399                                 5000000   %in g
400 (%o15)                         (-------) (-----)
401                                   127       2
402                                            s
403 @end group
404 @group
405 (%i16) convert(kg*m/s^2,[g,inch,s]);
407 `rat' replaced 39.37007874015748 by 5000/127 = 39.37007874015748
408                                 5000000   %in g
409 (%o16)                         (-------) (-----)
410                                   127       2
411                                            s
412 @end group
413 @end example
415 See also 
416 @code{setunits}と @code{uforget}も参照してください。
417 この関数を使うには、最初に @code{load("unit")}を書いてください。
419 @opencatbox
420 @category{Package unit}
421 @closecatbox
423 @end deffn
426 @defvr {オプション変数} usersetunits
427 デフォルト値: none
429 もしユーザーが
430 記述されたものよりもデフォルト単位の振る舞いを持ちたいなら、
431 それらは
432 @emph{maxima-init.mac}と @emph{usersetunits}変数を利用することができます。
433 @emph{unit}パッケージは
434 この変数がリストに割り当てられているかを見るためにスタートアップ時にチェックします。
435 もし割り当てられているなら、そのリスト上でsetunitsを使い、
436 そのリストからの単位をデフォルトに取ります。
437 @code{uforget}は
438 自身のデフォルト上にusersetunitsで定義された振る舞いに戻します。
439 例えば、
440 もし
441 以下を含む@emph{maxima-init.mac}ファイルを持っているなら:
442 @example
443 usersetunits : [N,J];
444 @end example
445 we would see the following behavior:
446 @example
447 @group
448 (%i1) load("unit")$
449 *******************************************************************
450 *                       Units version 0.50                        *
451 *          Definitions based on the NIST Reference on             *
452 *              Constants, Units, and Uncertainty                  *
453 *       Conversion factors from various sources including         *
454 *                   NIST and the GNU units package                *
455 *******************************************************************
457 Redefining necessary functions...
458 WARNING: DEFUN/DEFMACRO: redefining function
459  TOPLEVEL-MACSYMA-EVAL ...
460 WARNING: DEFUN/DEFMACRO: redefining function MSETCHK ...
461 WARNING: DEFUN/DEFMACRO: redefining function KILL1 ...
462 WARNING: DEFUN/DEFMACRO: redefining function NFORMAT ...
463 Initializing unit arrays...
464 Done.
465 User defaults found...
466 User defaults initialized.
467 @end group
468 @group
469 (%i2) kg*m/s^2;
470 (%o2)                                  N
471 @end group
472 @group
473 (%i3) kg*m^2/s^2;
474 (%o3)                                  J
475 @end group
476 @group
477 (%i4) kg*m^3/s^2;
478 (%o4)                                 J m
479 @end group
480 @group
481 (%i5) kg*m*km/s^2;
482 (%o5)                             (1000) (J)
483 @end group
484 @group
485 (%i6) setunits([dyn,eV]);
486 (%o6)                                done
487 @end group
488 @group
489 (%i7) kg*m/s^2;
490 (%o7)                           (100000) (dyn)
491 @end group
492 @group
493 (%i8) kg*m^2/s^2;
494 (%o8)                     (6241509596477042688) (eV)
495 @end group
496 @group
497 (%i9) kg*m^3/s^2;
498 (%o9)                    (6241509596477042688) (eV m)
499 @end group
500 @group
501 (%i10) kg*m*km/s^2;
502 (%o10)                   (6241509596477042688000) (eV)
503 @end group
504 @group
505 (%i11) uforget([dyn,eV]);
506 (%o11)                           [false, false]
507 @end group
508 @group
509 (%i12) kg*m/s^2;
510 (%o12)                                 N
511 @end group
512 @group
513 (%i13) kg*m^2/s^2;
514 (%o13)                                 J
515 @end group
516 @group
517 (%i14) kg*m^3/s^2;
518 (%o14)                                J m
519 @end group
520 @group
521 (%i15) kg*m*km/s^2;
522 (%o15)                            (1000) (J)
523 @end group
524 @end example
525 @code{usersetunits}なしでは、
526 初期の入力はMKSに変換されたでしょうし、
527 uforgetはMKS規則への復帰をもたらしたでしょう。
528 なるほど、
529 ユーザーの好みは両方のケースで考慮されます。
530 もし望まれるなら、これらはまだオーバーライドされることができることに注目してください。
531 この整理を完全に消すには - 
532 すなわち、ユーザーデフォルトを出荷デフォルトに再設定するには - 
533 @code{dontusedimension}コマンドをつかうことができます。
534 @code{usedimension}が@code{uforget}を使用上自由にする時だけ
535 @code{uforget}はユーザー設定を再び戻すことができますが、
536 代わりに、
537 @code{kill(usersetunits)}は
538 ユーザーデフォルトの知識すべてをセッションから完全に削除します。
539 以下は
540 これらの様々なオプションがいかに働くかを示すいくつかの例です。
541 @example
542 @group
543 (%i2) kg*m/s^2;
544 (%o2)                                  N
545 @end group
546 @group
547 (%i3) kg*m^2/s^2;
548 (%o3)                                  J
549 @end group
550 @group
551 (%i4) setunits([dyn,eV]);
552 (%o4)                                done
553 @end group
554 @group
555 (%i5) kg*m/s^2;
556 (%o5)                           (100000) (dyn)
557 @end group
558 @group
559 (%i6) kg*m^2/s^2;
560 (%o6)                     (6241509596477042688) (eV)
561 @end group
562 @group
563 (%i7) uforget([dyn,eV]);
564 (%o7)                          [false, false]
565 @end group
566 @group
567 (%i8) kg*m/s^2;
568 (%o8)                                  N
569 @end group
570 @group
571 (%i9) kg*m^2/s^2;
572 (%o9)                                  J
573 @end group
574 @group
575 (%i10) dontusedimension(N);
576 (%o10)                             [%force]
577 @end group
578 @group
579 (%i11) dontusedimension(J);
580 (%o11)                         [%energy, %force]
581 @end group
582 @group
583 (%i12) kg*m/s^2;
584                                      kg m
585 (%o12)                               ----
586                                        2
587                                       s
588 @end group
589 @group
590 (%i13) kg*m^2/s^2;
591                                          2
592                                      kg m
593 (%o13)                               -----
594                                        2
595                                       s
596 @end group
597 @group
598 (%i14) setunits([dyn,eV]);
599 (%o14)                               done
600 @end group
601 @group
602 (%i15) kg*m/s^2;
603                                      kg m
604 (%o15)                               ----
605                                        2
606                                       s
607 @end group
608 @group
609 (%i16) kg*m^2/s^2;
610                                          2
611                                      kg m
612 (%o16)                               -----
613                                        2
614                                       s
615 @end group
616 @group
617 (%i17) uforget([dyn,eV]);
618 (%o17)                         [false, false]
619 @end group
620 @group
621 (%i18) kg*m/s^2;
622                                      kg m
623 (%o18)                               ----
624                                        2
625                                       s
626 @end group
627 @group
628 (%i19) kg*m^2/s^2;
629                                          2
630                                      kg m
631 (%o19)                               -----
632                                        2
633                                       s
634 @end group
635 @group
636 (%i20) usedimension(N);
637 Done.  To have Maxima simplify to this dimension, use
638 setunits([unit]) to select a unit.
639 (%o20)                               true
640 @end group
641 @group
642 (%i21) usedimension(J);
643 Done.  To have Maxima simplify to this dimension, use
644 setunits([unit]) to select a unit.
645 (%o21)                               true
646 @end group
647 @group
648 (%i22) kg*m/s^2;
649                                      kg m
650 (%o22)                               ----
651                                        2
652                                       s
653 @end group
654 @group
655 (%i23) kg*m^2/s^2;
656                                          2
657                                      kg m
658 (%o23)                               -----
659                                        2
660                                       s
661 @end group
662 @group
663 (%i24) setunits([dyn,eV]);
664 (%o24)                               done
665 @end group
666 @group
667 (%i25) kg*m/s^2;
668 (%o25)                          (100000) (dyn)
669 @end group
670 @group
671 (%i26) kg*m^2/s^2;
672 (%o26)                    (6241509596477042688) (eV)
673 @end group
674 @group
675 (%i27) uforget([dyn,eV]);
676 (%o27)                           [false, false]
677 @end group
678 @group
679 (%i28) kg*m/s^2;
680 (%o28)                                 N
681 @end group
682 @group
683 (%i29) kg*m^2/s^2;
684 (%o29)                                 J
685 @end group
686 @group
687 (%i30) kill(usersetunits);
688 (%o30)                               done
689 @end group
690 @group
691 (%i31) uforget([dyn,eV]);
692 (%o31)                          [false, false]
693 @end group
694 @group
695 (%i32) kg*m/s^2;
696                                      kg m
697 (%o32)                               ----
698                                        2
699                                       s
700 @end group
701 @group
702 (%i33) kg*m^2/s^2;
703                                          2
704                                      kg m
705 (%o33)                               -----
706                                        2
707                                       s
708 @end group
709 @end example
710 不運にも、
711 このオプションの広い多様性は
712 最初は少し混乱するものですが、
713 一旦、ユーザーがそれらを使うのに成長すれば、
714 それらがワーキング環境上でまさに完全な制御を持つことをユーザーは見いだすに違いありません。
716 @c One other significant customization option available is the @code{setunitprefix}
717 @c command.  Normally, abbreviations used in this package are as close to those
718 @c used in standard texts as possible.  Some people, however, prefer to use those
719 @c symbols for normal work and have units labeled in some other fasion.
720 @c @code{setunitprefix} is provided for this case.  Here is an example of its use:
722 @opencatbox
723 @category{Package unit}
724 @closecatbox
726 @end defvr
729 @deffn {関数} metricexpandall (@var{x})
730 望みの計量単位すべてを自動的に生成するグローバル単位リストを再構築します。
731 @var{x}は
732 ユーザーがいくつの計量接頭子の定義を望むか指定するのに使われる数値引数です。
733 引数は、より低い数字の単位を定義するより高い数字それぞれを持つような
734 以下のようなものです:
735 @example
736 @group
737            0 - none. Only base units
738            1 - kilo, centi, milli
739 (default)  2 - giga, mega, kilo, hecto, deka, deci, centi, milli,
740                micro, nano
741            3 - peta, tera, giga, mega, kilo, hecto, deka, deci,
742                centi, milli, micro, nano, pico, femto
743            4 - all
744 @end group
745 @end example
746 通常は、Maximaは
747 これは非常にたくさんの数の単位をもたらすので、完全な展開を定義しませんが、
748 多少なりとも完全な方法でリストを再構築するのに
749 @code{metricexpandall}を使うことができます。
750 @emph{unit.mac}ファイルの中の適切な変数は @var{%unitexpand}です。
751 @c This should be made configurable as a maxima-init.mac controllable option.
753 @opencatbox
754 @category{Package unit}
755 @closecatbox
757 @end deffn
759 @defvr {変数} %unitexpand
760 デフォルト値: @code{2}
762 これは
763 @emph{unit}の初期ロードの最中に
764 @code{metricexpandall}に供給される
765 値です。
767 @opencatbox
768 @category{Package unit}
769 @closecatbox
771 @end defvr
774 @c @deffn {関数} functionname (@var{arg1}, @var{arg2}, ..., @var{argn})
775 @c @end deffn
777 @c @defvr {オプション変数} variablename
778 @c デフォルト値: @code{true}
779 @c @end defvr