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


数の計算(2)



実数

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

たとえば、√2 は

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

● v1^2;
                                     2

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

■ 実数定数

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

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

■ 関数

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

平方根 sqrt(x)
指数関数 exp(x)     ( = ex )
自然対数 ln(x)     ( = logex )
三角関数 cos(x), cot(x), csc(x), sec(x), sin(x), tan(x)    ( csc はコセカント)
逆三角関数 acos(x), acot(x), acsc(x), asec(x), asin(x), atan(x)
双曲線関数 cosh(x), coth(x), csch(x), sech(x), sinh(x), tanh(x)
逆双曲線関数    acosh(x), acoth(x), acsch(x), asech(x), asinh(x), atanh(x)
● v1 := exp(5);
                                  exp(5)

● ln(v1);
                                     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) 絶対値。
float(x) 近似値。
round(x)     小数点以下 四捨五入。
ceil(x) 小数点以下 切り上げ。 区間 [x,∞) に含まれる最小の整数。
floor(x) 小数点以下 切り捨て。 区間 (-∞,x] に含まれる最大の整数。
frac(x) x の小数部分。 frac(x)=x-floor(x)。
● v1 := PI-2*E;
                               PI - 2 exp(1)

● sign(v1);
                                    -1

● abs(v1);
                               2 exp(1) - PI

● float(v1);
                               -2.294971003

● round(v1);
                                    -2

● ceil(v1);
                                    -2

● floor(v1);
                                    -3

● frac(7/3);
                                    1/3

■ 式変形

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

expand(e) 式 e の展開
simplify(e,f)     式 e を f に関して簡略化
normal(e) 分数式 e を一つの分数にまとめる。
radsimp(e) 式 e の2重根号の処理
● v1 := (sqrt(3)+1)*(sqrt(3)-2);
                             1/2        1/2
                           (3    + 1) (3    - 2)

● expand(v1);
                                      1/2
                                 1 - 3

● v2 := sqrt(6)-sqrt(2)*sqrt(3);
                              1/2    1/2  1/2
                             6    - 2    3

● simplify(v2, sqrt);
                                     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
                              (5 - 2 6   )

● radsimp(v4);
                                 1/2    1/2
                                3    - 2

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



近似計算

実数計算では、少数による近似値が知りたいときがあります。 そのときは関数 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);
                     cos(1) exp(1) + (sin(1) exp(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 入門】