10 @c -----------------------------------------------------------------------------
11 @node Numbers, Strings, Data Types and Structures, Data Types and Structures
13 @c -----------------------------------------------------------------------------
16 * Introduction to Numbers::
17 * Functions and Variables for Numbers::
20 @c -----------------------------------------------------------------------------
21 @node Introduction to Numbers, Functions and Variables for Numbers, Numbers, Numbers
22 @subsection Introduction to Numbers
23 @c -----------------------------------------------------------------------------
25 @c -----------------------------------------------------------------------------
26 @subheading Complex numbers
27 @c -----------------------------------------------------------------------------
29 Maximaでは複素数式を式の実部と@code{%i}かける虚部の足し算で指定します。
30 例えば、等式 @code{x^2 - 4*x + 13 = 0}の根は
31 @code{2 + 3*%i}と @code{2 - 3*%i}です。
32 複素数式の積の整理は積を展開することで影響を受けるかもしれないことに注意してください。
34 @code{realpart}, @code{imagpart}, @code{rectform}, @code{polarform},
35 @code{abs}, @code{carg}関数を使って達成することができます。
38 @category{Complex variables}
41 @c -----------------------------------------------------------------------------
42 @node Functions and Variables for Numbers, , Introduction to Numbers, Numbers
43 @subsection Functions and Variables for Numbers
44 @c -----------------------------------------------------------------------------
46 @c -----------------------------------------------------------------------------
48 @deffn {関数} bfloat (@var{expr})
49 @var{expr}の中のすべての数や数の関数を多倍長浮動小数点に変換します。
51 グローバル変数@mref{fpprec}によって規定されます。
53 @mref{float2bf}が@code{false}の場合、
55 (精度が落ちることを意味するので)警告メッセージが出力されます。
58 @category{Numerical evaluation}
62 @c -----------------------------------------------------------------------------
64 @deffn {関数} bfloatp (@var{expr})
66 もし@var{expr}が多倍長浮動小数点数なら@code{true}を、そうでなければ@code{false}を返します。
69 @category{Numerical evaluation}
70 @category{Predicate functions}
74 @c -----------------------------------------------------------------------------
76 @defvr {オプション変数} bftorat
79 @code{bftorat}は多倍長浮動小数点の有理数への変換を制御します。
80 @code{bftorat}が@code{false}の時、
81 @mref{ratepsilon}が変換を制御するのに使われます。
83 @code{bftorat}が@code{true}の時、
84 生成された有理数は多倍長浮動小数点を正確に表します。
87 @category{Numerical evaluation}
92 @c -----------------------------------------------------------------------------
94 @defvr {オプション変数} bftrunc
97 @code{bftrunc}は、非ゼロの多倍長浮動小数点数の中のずるずる続くゼロを表示しないようにします。
98 例えば、もし@code{bftrunc}が@code{false}なら、
99 @code{bfloat (1)}は@code{1.000000000000000B0}と表示されます。
100 そうでなければ、これは、@code{1.0B0}と表示されます。
103 @category{Numerical evaluation}
107 @c -----------------------------------------------------------------------------
109 @deffn {関数} evenp (@var{expr})
111 もし@var{expr}が偶数なら@code{true}を返します。
112 @c THIS IS STRANGE -- SHOULD RETURN NOUN FORM IF INDETERMINATE
113 他の場合には@code{false}を返します。
116 @category{Predicate functions}
120 @c -----------------------------------------------------------------------------
122 @deffn {関数} float (@var{expr})
124 @var{expr}の中の整数、有理数、多倍長浮動小数点を浮動小数点に変換します。
125 @code{float}は@code{evflag}でもあり、
126 非整数有理数と多倍長浮動小数点を浮動小数点に変換します。
129 @category{Numerical evaluation}
130 @category{Evaluation flags}
134 @c --- 08.10.2010 DK -----------------------------------------------------------
136 @defvr {オプション変数} float2bf
139 @code{float2bf}が@code{false}の場合、
140 浮動小数点が多倍長浮動小数点に変換される時、
141 (これは精度の無駄使いとなるかもしれないので、)
143 デフォルト値は@code{true}です。
146 @category{Numerical evaluation}
151 @c -----------------------------------------------------------------------------
153 @deffn {関数} floatnump (@var{expr})
155 @code{true}を返し、そうでないなら
159 @category{Numerical evaluation}
160 @category{Predicate functions}
165 @c -----------------------------------------------------------------------------
167 @defvr {オプション変数} fpprec
170 @code{fpprec}は多倍長浮動小数点上の代数のための有効桁数です。
171 @code{fpprec}は通常の浮動小数点上の計算に影響を与えません。
173 @mref{bfloat}と@mref{fpprintprec}も参照してください。
176 @category{Numerical evaluation}
181 @c -----------------------------------------------------------------------------
183 @defvr {オプション変数} fpprintprec
186 @code{fpprintprec}は、通常の浮動小数点もしくは多倍長浮動小数点を表示する時の
190 @code{fpprintprec}が2から16までの値を持つ時、
191 表示されるディジット数は@code{fpprintprec}に等しいです。
192 そうでなければ、@code{fpprintprec}は0もしくは16より大きく、
196 @code{fpprintprec}が2から@code{fpprec}までの値を持つ時、
197 表示される桁数は、@code{fpprintprec}に等しいです。
198 そうでなければ、@code{fpprintprec}は、0もしくは@code{fpprec}より大きく、
199 表示される桁数は@code{fpprec}に等しいです。
201 @code{fpprintprec}は1にはできません。
204 @category{Numerical evaluation}
205 @category{Display flags and variables}
209 @c -----------------------------------------------------------------------------
211 @deffn {関数} integerp (@var{expr})
212 もし@var{expr}が整数リテラルなら @code{true}を、
213 そうでないなら @code{false}を返します。
215 もし引数がシンボルならたとえ引数が宣言された整数でも、
216 @code{integerp}は @code{false}を返します。
225 (%i3) integerp (-17);
227 (%i4) integerp (0.0);
229 (%i5) integerp (1.0);
231 (%i6) integerp (%pi);
235 (%i8) declare (n, integer);
242 @category{Predicate functions}
246 @c -----------------------------------------------------------------------------
248 @defvr {オプション変数} m1pbranch
251 @code{m1pbranch}は @code{-1}のべき乗の主枝です。
252 @code{(-1)^(1/3)}(すなわち、「奇」の有理指数)や
253 @code{(-1)^(1/4)}(すなわち、「偶」の有理指数)
255 @c REDRAW THIS AS A TABLE
260 (-1)^(1/4): (-1)^(1/4)
263 m1pbranch:false m1pbranch:true
264 (-1)^(1/3) 1/2+%i*sqrt(3)/2
265 (-1)^(1/4) sqrt(2)/2+%i*sqrt(2)/2
269 @category{Expressions}
270 @category{Global flags}
274 @c -----------------------------------------------------------------------------
275 @deffn {関数} nonnegintegerp (@var{n})
277 @code{@var{n} >= 0}かつ @var{n}が整数の時だけ@code{true}を返します。
281 @category{Package linearalgebra}
282 @category{Predicate functions}
286 @c -----------------------------------------------------------------------------
288 @deffn {関数} numberp (@var{expr})
290 もし@var{expr}が文字リテラルか、有理数か、浮動小数点数か、多倍長浮動小数点なら
292 そうでなければ @code{false}を返します。
295 たとえ引数が@code{%pi}や@code{%i}のようなシンボリックな数でも、また、
296 @code{even}, @code{odd}, @code{integer}, @code{rational}, @code{irrational},
297 @code{real}, @code{imaginary}, @code{complex}のいずれかに宣言されていても、
298 @code{numberp}は @code{false}を返します。
305 (%i2) numberp (-13/19);
307 (%i3) numberp (3.14159);
309 (%i4) numberp (-1729b-4);
311 (%i5) map (numberp, [%e, %pi, %i, %phi, inf, minf]);
312 (%o5) [false, false, false, false, false, false]
313 (%i6) declare (a, even, b, odd, c, integer, d, rational,
314 e, irrational, f, real, g, imaginary, h, complex);
316 (%i7) map (numberp, [a, b, c, d, e, f, g, h]);
317 (%o7) [false, false, false, false, false, false, false, false]
321 @category{Predicate functions}
325 @c NEEDS CLARIFICATION, EXAMPLES
326 @c WHAT ARE THE FUNCTIONS WHICH ARE EVALUATED IN FLOATING POINT ??
327 @c WHAT IS A "NUMERVAL" ?? (SOMETHING DIFFERENT FROM A NUMERIC VALUE ??)
328 @c NEED TO MENTION THIS IS AN evflag
330 @c -----------------------------------------------------------------------------
332 @defvr {特殊シンボル} numer
334 @code{numer}は数値の引数を持つ(指数関数を含む)いくつかの数学関数を
336 数値が与えられた@code{expr}の中の変数を値に置き換えるようにします。
337 それは @mref{float}スイッチをオンにもします。
339 @mref{%enumer}も参照してください。
344 @c [sqrt(2), sin(1), 1/(1+sqrt(3))];
345 @c [sqrt(2), sin(1), 1/(1+sqrt(3))],numer;
348 (%i1) [sqrt(2), sin(1), 1/(1+sqrt(3))];
350 (%o1) [sqrt(2), sin(1), -----------]
352 (%i2) [sqrt(2), sin(1), 1/(1+sqrt(3))],numer;
353 (%o2) [1.414213562373095, .8414709848078965, .3660254037844387]
357 @category{Numerical evaluation}
358 @category{Evaluation flags}
362 @c -----------------------------------------------------------------------------
363 @anchor{numer_pbranch}
364 @defvr {オプション変数} numer_pbranch
367 オプション変数@code{numer_pbranch}は
368 負の整数、有理数、または浮動小数点数のべきの数値評価を制御します。
369 @code{numer_pbranch}が@code{true}でかつ、指数が浮動小数点数であるか
370 オプション変数@mref{numer}も@code{true}の時、
371 Maximaは主枝を使って数値結果を評価します。
372 そうでなければ、式整理されたが未評価の結果が返されます。
378 @c (-2)^0.75,numer_pbranch:true;
381 @c (-2)^(3/4),numer,numer_pbranch:true;
387 (%i2) (-2)^0.75,numer_pbranch:true;
388 (%o2) 1.189207115002721*%i-1.189207115002721
391 (%o3) (-1)^(3/4)*2^(3/4)
393 (%i4) (-2)^(3/4),numer;
394 (%o4) 1.681792830507429*(-1)^0.75
396 (%i5) (-2)^(3/4),numer,numer_pbranch:true;
397 (%o5) 1.189207115002721*%i-1.189207115002721
401 @category{Numerical evaluation}
405 @c NEEDS CLARIFICATION, EXAMPLES
406 @c HOW TO FIND ALL VARIABLES WHICH HAVE NUMERVALS ??
408 @c -----------------------------------------------------------------------------
410 @deffn {関数} numerval (@var{x_1}, @var{expr_1}, @dots{}, @var{x_n}, @var{expr_n})
411 変数@code{x_1}, @dots{}, @code{x_n}を
412 @code{expr_1}, @dots{}, @code{expr_n}に等しい数値を持つ変数だと宣言します。
413 もし @code{numer}フラグが @code{true}なら、
414 変数が現れる任意の式にて、数値は評価され、変数に代入されます。
417 式@code{expr_1}, @dots{}, @code{expr_n}は、任意の式を取り得ます。数値である必要はありません。
420 @category{Declarations and inferences}
421 @category{Numerical evaluation}
425 @c -----------------------------------------------------------------------------
427 @deffn {関数} oddp (@var{expr})
428 もしも@var{exp}が奇数であれば@code{true}を返し、
429 @c THIS IS STRANGE -- SHOULD RETURN NOUN FORM IF INDETERMINATE
430 それ以外では@code{false}を返します。
433 @category{Predicate functions}
437 @c -----------------------------------------------------------------------------
439 @defvr {オプション変数} ratepsilon
442 @code{ratepsilon}は浮動小数点数を有理数に変換する際に使われる許容誤差です。
444 @c NEED EXAMPLES HERE
446 @category{Numerical evaluation}
447 @category{Rational expressions}
451 @c -----------------------------------------------------------------------------
453 @deffn {関数} rationalize (@var{expr})
455 Maximaの式@var{expr}の中の倍精度浮動小数点やビッグフローすべてを同値の有理数に変換します。
456 もし浮動小数点の2値表現に詳しくなれば、@code{rationalize (0.1)}が1/10に等しくないことに
458 この振る舞いはMaximaに特別なわけではありません。―1/10は2値の循環小数表現を持ちます。
461 @c rationalize (0.5);
462 @c rationalize (0.1);
464 @c rationalize (0.1b0);
466 @c rationalize (0.1b0);
467 @c rationalize (sin (0.1*x + 5.6));
470 (%i1) rationalize (0.5);
474 (%i2) rationalize (0.1);
479 (%i4) rationalize (0.1b0);
484 (%i6) rationalize (0.1b0);
485 236118324143482260685
486 (%o6) ----------------------
487 2361183241434822606848
488 (%i7) rationalize (sin (0.1*x + 5.6));
497 @c unitfrac(r) := block([uf : [], q],
498 @c if not(ratnump(r)) then
499 @c error("The input to 'unitfrac' must be a rational number"),
501 @c uf : cons(q : 1/ceiling(1/r), uf),
513 (%i1) unitfrac(r) := block([uf : [], q],
514 if not(ratnump(r)) then
515 error("The input to 'unitfrac' must be a rational number"),
517 uf : cons(q : 1/ceiling(1/r), uf),
521 (%o1) unitfrac(r) := block([uf : [], q],
522 if not ratnump(r) then
523 error("The input to 'unitfrac' must be a rational number"),
525 while r # 0 do (uf : cons(q : ----------, uf), r : r - q),
530 (%i2) unitfrac (9/10);
534 (%i3) apply ("+", %);
538 (%i4) unitfrac (-9/10);
542 (%i5) apply ("+", %);
546 (%i6) unitfrac (36/37);
548 (%o6) [-, -, -, --, ----]
550 (%i7) apply ("+", %);
557 @category{Numerical evaluation}
561 @c -----------------------------------------------------------------------------
563 @deffn {関数} ratnump (@var{expr})
564 もし@var{expr}が整数リテラルもしくは整数リテラルの比なら @code{true}を返し、
565 そうでなければ @code{false}を返します。
568 @category{Predicate functions}
569 @category{Rational expressions}
573 @c -----------------------------------------------------------------------------
575 @node Strings, Constants, Numbers, Data Types and Structures
577 @c -----------------------------------------------------------------------------
580 * Introduction to Strings::
581 * Functions and Variables for Strings::
584 @c -----------------------------------------------------------------------------
585 @node Introduction to Strings, Functions and Variables for Strings, Strings, Strings
586 @subsection Introduction to Strings
587 @c -----------------------------------------------------------------------------
589 文字列(クォートされた文字の列)は入力の際にはダブルクォートマーク @code{"}で括り、
590 グローバル変数 @mref{stringdisp}に依存して、クォートマークありだったりなしだったりで
593 文字列は、埋め込みタブ、改行、キャリッジリターン文字を含む任意の文字を含み得ます。
594 列 @code{\"}は文字通りダブルクォートとして認識され、
595 @code{\\}は文字通りバックスラッシュとして認識されます。
597 バックスラッシュと(改行かキャリッジリターンと改行かいずれかの)行終端を無視します。
599 他にバックスラッシュともう一つの文字の組み合わせで特殊なものはありません;
600 @code{"}か, @code{\}, 行終端以外の任意の文字の前にバックスラッシュが現れる時、
602 文字列の中に文字リテラルを埋め込むことを除いて
603 (タブ、改行、キャリッジリターンのような)特殊文字を表す方法はありません。
606 文字単体は1文字の文字列として表されます。
608 @code{stringproc}アドオンパッケージは文字列に機能する多くの関数を含みます。
613 @c s_1 : "This is a string.";
614 @c s_2 : "Embedded \"double quotes\" and backslash \\ characters.";
615 @c s_3 : "Embedded line termination
617 @c s_4 : "Ignore the \
618 @c line termination \
621 @c stringdisp : false;
623 @c stringdisp : true;
627 (%i1) s_1 : "This is a string.";
628 (%o1) This is a string.
629 (%i2) s_2 : "Embedded \"double quotes\" and backslash \\ characters.";
630 (%o2) Embedded "double quotes" and backslash \ characters.
631 (%i3) s_3 : "Embedded line termination
633 (%o3) Embedded line termination
635 (%i4) s_4 : "Ignore the \
639 (%o4) Ignore the line termination characters in this string.
640 (%i5) stringdisp : false;
643 (%o6) This is a string.
644 (%i7) stringdisp : true;
647 (%o8) "This is a string."
654 @c -----------------------------------------------------------------------------
655 @node Functions and Variables for Strings, , Introduction to Strings, Strings
656 @subsection Functions and Variables for Strings
657 @c -----------------------------------------------------------------------------
659 @c -----------------------------------------------------------------------------
661 @deffn {関数} concat (@var{arg_1}, @var{arg_2}, @dots{})
664 引数はアトムに評価されなければいけません。
665 もし最初の引数がシンボルなら戻り値はシンボルで、
668 @code{concat}は引数を評価します。
669 シングルクォート@code{'}は評価を抑制します。
674 (%i3) concat (y, z/2);
676 (%i4) concat ('y, z/2);
680 @code{concat}によって組み立てられたシンボルは値に割り当てられたり、式の中に現れたりします。
681 @mref{::} (ダブルコロン)割り当て演算子は左辺を評価します。
684 (%i5) a: concat ('y, z/2);
700 @code{concat (1, 2)}は数のように見えますが、文字列であることに注意してください。
703 (%i10) concat (1, 2) + 3;
708 @category{Expressions}
713 @c -----------------------------------------------------------------------------
715 @deffn {関数} sconcat (@var{arg_1}, @var{arg_2}, ...)
718 @mref{concat}と違い、引数はアトムである必要は@i{ありません}。
721 (%i1) sconcat ("xx[", 3, "]:", expand ((x+y)^3));
722 (%o1) xx[3]:y^3+3*x*y^2+3*x^2*y+x^3
726 @category{Expressions}
731 @c NEEDS CLARIFICATION AND EXAMPLES
733 @c -----------------------------------------------------------------------------
735 @deffn {関数} string (@var{expr})
737 @code{expr}を、ただまるでタイプされたようにMaximaの線形表記に変換します。
739 @code{string}の戻り値は文字列であり、
747 @c SHOULD BE WRITTEN WITH LEADING ? BUT THAT CONFUSES CL-INFO SO WORK AROUND
749 @c -----------------------------------------------------------------------------
751 @defvr {オプション変数} stringdisp
754 @code{stringdisp}が@code{true}の時、
755 文字列はダブルクォートマークで囲まれて表示されます。
756 そうでなければクォートマークは表示されません。
758 関数定義を表示する時はいつも、@code{stringdisp}は @code{true}です。
763 @c stringdisp: false$
764 @c "This is an example string.";
766 @c print ("This is a string in a function definition.");
768 @c "This is an example string.";
771 (%i1) stringdisp: false$
772 (%i2) "This is an example string.";
773 (%o2) This is an example string.
776 print ("This is a string in a function definition.");
779 print("This is a string in a function definition.")
780 (%i4) stringdisp: true$
781 (%i5) "This is an example string.";
782 (%o5) "This is an example string."
786 @category{Display flags and variables}