数式処理ソフト DERIVE(デライブ) de ドライブ

7.加減乗除とべき乗以外の演算の例(1)

加減乗除とべき乗は、数式処理ソフト DERIVE(デライブ)の前回までに出てきていますが、それ以外でよく使われる演算について、その使用例をいくつか掲げておきましょう。
以下では、演算の対象は、数値または数値変数だと考えています。ベクトルやマトリックスなどに対する演算は、後述する予定です。
これまで、特にお断りしてきませんでしたが、DERIVEで使用できる変数、数値、演算子、関数は、すべて半角英数字です。
ただし、+、-、( )、*(の代わりに×で書いています)、!、/などの記号は、見やすくするために全角文字を使用している個所が多いです。ご注意ください。

また、変数名の記法は、既定では、英字1文字です。a2と書くとa2という変数ではなく、a×2と認識されます。a2などの2文字以上の変数名を使用したい場合(通常は、こちらだと思うのですが)は、オプションメニューからモード設定で入力タブ内の「連続した文字列を1変数と見なす」の方に丸を付けてください。この場合は、x2×3は、x2*3と書かなければなりません。x23とするとx23という変数と見なされてしまいます。

平方根

SQRT(x)は、実数xの平方根を表します。負の場合は、虚数単位 i がつきます。
例:SQRT(3)は、√3と数式シートに表示されます。ツールバーの≒(近似値)をクリックすると既定の精度(既定では、有効数字 10桁)で表示されます。今回は、1.732050807でした。
なお、このブログで、√abc・・と書いた場合は、abc・・全体にルートがかかっているものと理解してください。

階乗

整数nの階乗は、おなじみの記号!を付けて、n!とします。負の場合は、±∞となります。
例:100!は、このまま数式シートに表示され、=(計算)をクリックすると、瞬時に約157桁の数値が現れます。
例:階乗に関するスターリングの近似式は、LN(n!)≒nLN(n)-nです。ここで、LNは、自然対数を表します。LN(100!)≒363.7393755、一方、近似式からは、100!の対数の近似値として、360.5170185が得られます。

等号と不等号

等号は、数学通りですが、注意すべき記法は次のとおりです。
x≠yは、x/=y
x≦yは、x<=y

絶対値

ABS(z)は、複素数zの絶対値を表します。虚数単位は、下部のツールバーでちょっと変わった書体のi(アイ)を選択します。
例:ABS(-3)は、|-3|と表示されも計算を指示すると3になります。
また、ABS(1+3i)は、|1+3i|と表示され計算すると√10となります。

順列と組み合わせ

順列 nPrは、PERM(n,r)です。順列の英語のpermutationからきています。階乗を使えば、n!/(n-r)!です。
組み合わせnCrは、COMB(n,r)です。やはり、combinationからきています。階乗を使えば、n!/((n-r)!r!)です。

剰余

すでに登場しましたが整数nをmで割った余りを求める関数は、MOD(n,m)です。モジュロ moduloからきているのでしょう。
なお、第2引数を省略して、MOD(x)とすると非負の実数xの小数部分が分数として表示されます。負の実数の場合は、注意が必要です。
例 MOD(10,3)=1、MOD(10/3)=1/3、MOD(-1.33)=67/100
また、a^nについてmで割った余りを求める専用の関数があります。それは、POWER_MOD(a, n, m) =MOD(a^n,m)です。
たとえば、POWER_MOD(2,1024000,1067)=837、この数値は、3/6の記事のものと当然ですが、一致しますね。

素数

素数か否かを判定する関数は、すでに登場しました。PRIME(n)です。nが素数の時、trueを返し、合成数では、falseを返します。
素数pの次の素数を求める関数があります。NEXT_PRIME(p)です。たとえば、NEXT_PRIME(13)=17です。
逆に素数pの一つ前の素数は、PREVIOUS_PRIME(p)で与えられます。
更にn番目の素数は、NTH_PRIME(n)で与えられます。NTH_PRIME(5)=11。これを使うと1から100番目までの素数の表が簡単に得られます。
すなわち、数式入力行にNTH_PRIME(n)と入力し、メニューの「解析」から「数列の作成」を指示します。ダイアログボックスが開きますので、変数nの初期値として、1を、終了値として100を、増分値として1をそれぞれ指示すると、下記のように100個の素数が(ベクトルとして)得られます。

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541]

試みに1000番までの素数を求めてみましたが、要した時間は、5秒未満でした。

最大公約数、最小公倍数

最大公約数の定義は、覚えていますか。2つの整数を同時に割ることができる最大の整数でしたね。DERIVEでは、GCD(m,n)で表します。
たとえば、GCD(28,40)=4です。
同様に2つの整数の最小公倍数は、LCM(32,40)=160です。
どちらも3つ以上の引数を扱うことができます。
たとえば、GCD(25,40,150)=5。LCM(25,40,150)=600です。