【数式処理 MuPAD 入門】
平田 浩一 / 1997年11月25日 
hirata@edserv.ed.ehime-u.ac.jp 
愛媛大学教育学部数学教室 


数の計算(2)



実数

次は実数です。有理数については説明しましたので、 実数といったら無理数を含む計算のことです。 MuPAD では無理数を少数で近似したりはしません。 無理数は記号のままで扱います。

たとえば、√2 は

● v1:=sqrt(2);
                                    1/2
                                   2
● v1^2;
                                     2

のようになります。近似計算ではないので 2乗するともとの整数にきちんと戻ります。

■ 実数定数

円周率と自然対数の底を表す定数記号が用意されています。

PI     円周率 π
E 自然対数の底 e

■ 関数

よく使われる実数関数として次のものが用意されています。

平方根 sqrt
指数関数 exp
自然対数 ln
三角関数 cos, cot, csc, sec, sin, tan (csc はコセカント)
逆三角関数 acos, acot, acsc, asec, asin, atan
双曲線関数 cosh, coth, csch, sech, sinh, tanh
逆双曲線関数    acosh, acoth, acsch, asech, asinh, atanh
● E^5;
                                  exp(5)
● exp(-1);
                                     1
                                     -
                                     E
● ln(E^5);
                                     5
● cos(PI/6);
                                    1/2
                                   3
                                   ----
                                    2
● sin(PI/8);
                                  1/2     1/2
                              (- 2    + 2)
                              ---------------
                                     2
● tan(PI/5);
                                    / PI \
                                 tan| -- |
                                    \ 5  /

その他、有益な関数として以下のものがあります。

sign(x) x の符号。x>0 のとき 1、 x<0 のとき -1、x=0 のとき 0。
abs(x) 絶対値。
round(x)     小数点以下四捨五入。
ceil(x) 切り上げ。区間 [x,∞) に含まれる最小の整数。
floor(x) 切り捨て。区間 (-∞,x] に含まれる最大の整数。
frac(x) x の小数部分。frac(x)=x-floor(x)。
● sign(2*E-PI);
                                     1
● abs(2*E-PI);
                                 2 E - PI
● round(2*E-PI);
                                     2
● ceil(2*E-PI);
                                     3
● floor(2*E-PI);
                                     2
● frac(2*E-PI);
                              frac(2 E - PI)
● frac(7/3);
                                    1/3

■ 式変形

式を変形する関数として次のものがあります。無理数の処理にも役立ちます。

expand 展開
simplify     簡略化
normal 一つの分数にまとめる。
radsimp 2重根号の処理
● v1:=(sqrt(3)+1)*(sqrt(3)-2);
                             1/2        1/2
                           (3    + 1) (3    - 2)
● expand(v1);
                                   1/2
                                - 3    + 1
● v2:=sqrt(6)-sqrt(2)*sqrt(3);
                              1/2    1/2  1/2
                             6    - 2    3
● simplify(v2);
                                     0
● v3:=1/(PI+1)-1/(PI-1);
                               1         1
                             ------ + --------
                             PI + 1   - PI + 1
● normal(v3);
                                      2
                                 - -------
                                     2
                                   PI  - 1
● v4:=sqrt(5-2*sqrt(6));
                                   1/2     1/2
                             (- 2 6    + 5)
● radsimp(v4);
                                  1/2    1/2
                               - 2    + 3

このような処理ができますが、実際のところは、 無理数を含む計算は難しくきれいに整理できないときが多いようです。



近似計算

実数計算では、少数による近似値が知りたいときがあります。 そのときは関数 float を用います。

● float(sqrt(2));
                                1.414213562
● float(sin(PI/7));
                               0.4338837391

近似計算の精度は DIGITS という変数で指定することができます。 DIGITS の初期値は 10 で、10 桁の精度になっています。 変数 DIGITS の値を変えることで、より高い精度で計算できます。

● DIGITS;
                                    10
● float(PI);
                                3.141592653
● DIGITS:=50;
                                    50
● float(PI);
                3.1415926535897932384626433832795028841971693993751


複素数

複素数の計算ももちろんできます。虚数単位を表す定数記号は

I     虚数単位

です。

● (I+3)/(I+1);
                                   2 - I

指数関数、三角関数等は複素数に拡張定義されています。 また、複素数を処理するための関数としては

Re(z) 実部
Im(z) 虚部
conjugate(z)     複素共役
rectform(z) 実部と虚部に分解

があります。

● v1:=5+3*I;
                                  5 + 3 I
● Re(v1);
                                     5
● Im(v1);
                                     3
● conjugate(v1);
                                  5 - 3 I
● v2:=exp(1+I);
                                exp(1 + I)
● rectform(v2);
                          E cos(1) + (E sin(1)) I


【演習問題】

(1) x=sqrt(3)+1 のとき x4-2x3-x2+x-2 を求めよ。

(2)  a=(1+sqrt(5))/2, b=(1-sqrt(5))/2 とする。このとき、 (an-bn)/sqrt(5) が整数となることを n=1,2,3,4,5 について計算で確かめよ。

(3) 次の等式が成り立つことを精度100桁の近似計算で確かめよ。

  1. π = 16 Arctan(1/5) - 4 Arctan(1/239)
  2. π = 48 Arctan(1/18) + 32 Arctan(1/57) - 20 Arctan(1/239)

(4)  次の複素数の実部と虚部を求めよ。 (log は自然対数、i は虚数単位)

  1. sin(1+i)
  2. log(2+3i) の複素共役

【数式処理 MuPAD 入門】