$x$ を実数とするとき、$x$ から正負の符号を取り去った値を $x$ の絶対値と定義し、$|x|$ と書きます。 $|\,|$ を絶対値記号とよびます。言い換えると、$|x|$ は $x$ が正のときは値をそのまま返し、$x$ が負のときには $x$ を正の値に変える関数です:
\[|x| = \begin{cases}x & (x \geq 0)\\-x & (x \lt 0)\end{cases}\tag{1}\]
たとえば、$x=-5$ のとき、$x$ の絶対値は $|-5|=5$ となります。$x=5$ のときは絶対値をとっても元の値を変えません ($|5|=5$)。
$x$ が複素数のときは、絶対値は拡張定義されます(虚数単位 $i$ の絶対値は $|i|=i$ ではありません!)。$x=a+bi$ で表したとき、$x$ の絶対値は
\[|x|=\sqrt{a^2+b^2}\tag{2}\]
として定義されます。この定義にしたがうと、虚数単位は $i=0+1i$ なので、$a=0,\ b=1$ として、
\[|i|=\sqrt{0^2+1^2}=1\tag{3}\]
となります。同様の計算で $|-i|=1$ であることもわかります。
この記事では、Exel の ABS や VBA の Abs 関数で絶対値を計算する方法について解説します。
【Excel】ABS関数で絶対値を計算する
Excel の ABS 関数は引数の絶対値を返します。たとえば、適当なセルに
=ABS(-35)
と入力すると、-35 の絶対値 35 を返します。ただし、引数に複素数を渡すことはできません。複素数の絶対値を計算する場合は IMABS 関数 を使ってください (≫ IMABS 関数の使い方は、こちらの記事で説明しています)
ABS関数を使って、$\sin x$ の絶対値、$y=|\sin x|$ のグラフをワークシートに表示してみましょう。下図を参照にデータを作成してください。
変数 x の刻み幅は $\Delta x=\pi/32$ とします。セル G4 に
=PI()/32
と入力します。x のマイナス側の端点は $2\pi$ とします。セル C5 には
2*PI()
と入力してください。セル C6 には $2\pi$ に刻み幅を $\delta x$ を加えた値を入れます。セル G4 を相対参照して
=C5+$G$4
と入力します。あとはオートフィルで x が 6.283 … になるまでデータを埋めてください。C 列と D 列のデータを使って散布図を作成すると次のようなグラフが表示されます。
【VBA】Abs関数で絶対値を計算する
VBA の Abs() は引数の 絶対値 を返します。戻り値は引数と同じ型になります。Abs は絶対値を意味する Absolute Value の略です。
以下のコードは InputBox に任意の数値を入力して、その絶対値を返すマクロです。
'[VBA] Absolute Value 'InputBoxに入力された数値の絶対値を返すプロシージャ Sub Absolute() Dim x As Double, a As Double x = InputBox("数値を入力してください") a = Abs(x) MsgBox (a) End Sub
Absolute() を実行すると数値を入力するように促されるます。
たとえば「-10」を入力すると絶対値「10」が返ってきます。
一次関数の絶対値 y = |x| のデータをシートに揃えるマクロを載せておきます。
'[VBA] xとxの絶対値のデータを出力するプロシージャ Sub Absolute_x() Dim i As Double i = -8 Range("A1") = "x" Range("B1") = "y=|x|" Range("A2").Select Do While i <= 8.01 ActiveCell.Value = i ActiveCell.Offset(, 1).Value = Abs(i) ActiveCell.Offset(1).Select i = i + 0.2 Loop End Sub
Absolute_x() によって得られたデータを使うと、次のような絶対値付一次関数のグラフを描けます。
エクセルや数学に関するコメントをお寄せください