GNU Octave 2.1.x 日本語マニュアル/算術演算
19 算術演算
編集以下の解説において特に注釈がない場合,この章で紹介するすべての関数は,実数型と複素数型のス カラおよび行列のいずれにも使用することが出来ます。
19.1 ユーティリティ関数
編集ここで紹介する関数群は,複素数に対しても使用することができます。 各関数とも,1 つの引数を与 えるように作られています。 これらの関数群を,マッピング関数(mapping function)と呼びます。
この名称は,引数として行列を与えたとき,行列の各要素に対して同じ処理をすることに由来するも のです。
ceil (x)
編集[Mapping Function]
x よりも小さくない最小の整数を返します。 x が複素数のときは,ceil (real (x)) + ceil (imag (x)) * Iを返します。
exp (x)
編集[Mapping Function]
x の指数関数を計算します。 行列に対して指数行列を計算するには,Chapter 20 [Linear Algebra]の章を参照してください。
fix (x)
編集[Mapping Function]
x をゼロに向かって丸める。 x が複素数のときは,fix (real (x)) + fix (imag (x)) * I を返します。
floor (x)
編集[Mapping Function]
x よりも大きくない最大の整数を返します。 x が複素数のときは,floor (real (x)) + floor (imag (x)) * Iを返します。
g = gcd (a1, ...)
編集[Loadable Function]
[g, v1, ...] = gcd (a1, ...)
編集[Loadable Function]
引数をひとつだけ与えると,その最大公約数を返します。 2 つ以上の引数を指定するときは,それ らが同じサイズのベクトルもしくはスカラでなければなりません。 この場合,対応する要素につ いてそれぞれ最大公約数を計算します。 指定する各要素は,整数でなければなりません。 以下に例 を示す。
gcd ([15, 20]) ) 5 あるいは,以下のようにすることもできます。
gcd ([15, 9], [20 18]) ) 5 9 v1 のように返り値を追加すると,以下のような整数のベクトルを返します。
g = v1a1 + v2a2 + ¢ ¢ ¢ 以前のOctave における後方互換性を確保するため,全ての引数がスカラであるときには,単 一の返り値v1 にすべての値(v1, ...)を含めるようになっています。
lcm (x, ...)
編集[Mapping Function]
x あるいは指定した全引数について,その最小公倍数を計算します。 たとえば, lcm (a1, ..., ak) と lcm ([a1, ..., ak]). は同じ意味です。 全ての要素は同じ大きさであるか,スカラでなければなりません。
log (x)
編集[Mapping Function]
x の各要素について,自然対数を計算します。 対数行列を計算するには,Chapter 20 [LinearAlgebra]の項を参照のこと。
log10 (x)
編集[Mapping Function]
x の常用対数(10 を底とする対数)を計算します。
log2 (x)
編集[Mapping Function]
[f, e] = log2 (x)
編集[Mapping Function]
x について,2 を底とする対数を計算します。 返り値を2 つ指定すると,1=2 <= jfj < 1 およ びx = f ¢ 2e を満たすf とe を返します。
max (x, y, dim)
編集[Mapping Function]
[w, iw] = max (x)
編集[Mapping Function]
引数としてベクトルを渡すと,その要素の最大値を返します。 行列を渡すと,各列ごとに最大値を 返すので,結果は行ベクトルとなります。 dim を指定すると,その次数を指定することができます。
2 つの行列(あるいは行列とスカラ)を渡すと,対で比較した結果を返します。 以下に例を挙げる。
max (max (x)) この結果は,x に含まれる要素の最大値を返します。
max (2:5, pi) ) 3.1416 3.1416 4.0000 5.0000 これは,2:5の範囲にある各要素とpiとを比較し,最大値を含む行ベクトルを返します。
引数に複素数を渡すと,要素の大きさで比較を行う。
1 つの入力に対して2 つの返り値を受け取るとき,max関数は,最大値に対応する要素の位置 も返します。 以下の例を参照されたい。
[x, ix] = max ([1, 3, 5, 2, 5]) ) x = 5 ix = 3
min (x, y, dim)
編集[Mapping Function]
[w, iw] = min (x)
編集[Mapping Function]
引数としてベクトルを渡すと,その要素の最小値を返します。 行列を渡すと,各列ごとに最小値を 返すので,結果は行ベクトルとなります。 dim を指定すると,その次数を指定することができます。 2 つの行列(あるいは行列とスカラ)を渡すと,対で比較した結果を返します。 以下に例を挙げる。
min (min (x))
この結果は,x に含まれる要素の最小値を返します。
min (2:5, pi) ) 2.0000 3.0000 3.1416 3.1416
これは,2:5の範囲にある各要素とpiとを比較し,最小値を含む行ベクトルを返します。 引数に複素数を渡すと,要素の大きさで比較を行う。 1つの入力に対して2つの返り値を受け取るとき,min関数は,最小値に対応する要素の位置も返します。 以下の例を参照してください。
[x, ix] = min ([1, 3, 0, 2, 5]) ) x = 0 ix = 3
mod (x, y)
編集[Mapping Function]
以下の計算式により,剰余(割り算の余り)を計算します。
x - y .* floor (x ./ y) 負の値を正しく扱うことに注意されたい。 つまり,mod (-1, 3)の結果は2 であり,-1 ではな い。 rem (-1, 3)の結果は-1 となります。 また,mod (x, 0)は,x を返します。
引数の次数が合わないとき,あるいは引数に複素数を指定したときはエラーメッセージを表示 します。
nextpow2 (x)
編集[Function File] x がスカラであれば,2n , jxj. を満たす最初の整数n を返します。
x がベクトルであれば,nextpow2 (length (x))を返します。
pow2 (x)
編集[Mapping Function] pow2 (f, e) ==== [Mapping Function]
引数を1つだけ指定したときには,x の各要素について2x を計算します。 2つの引数に対して は,f ¢ 2e. を計算します。
rem (x, y)
編集[Mapping Function]
以下の式によって,x / yの余りを計算します。
x - y .* fix (x ./ y) 引数の次数が合わないとき,あるいは複素数が渡されたときにはエラーメッセージを表示します。
round (x)
編集[Mapping Function]
x に最も近い整数を返します。 x が複素数のときには,round (real (x)) + round (imag (x))
- Iを返します。
sign (x)
編集[Mapping Function]
符号関数(signum function)を計算します。 この関数は,以下のように定義されます。
sign(x) = 8<
1; x > 0; 0; x = 0; !1; x < 0. 複素数については,x ./ abs (x)を返します。
sqrt (x)
編集[Mapping Function]
x の正の平方根(ルート)を計算します。 x が負のとき,複素数を返します。 行列の平方根について は,Chapter 20 [Linear Algebra]を参照してください。
19.2 複素数演算
編集ここで紹介する関数群は,複素数に対しても使用することができます。 各関数とも,1 つの引数を与え るように作られています。 引数として行列を与えたとき,行列の各要素ごとに同じ処理をします。 以 降の解説において,z は複素数x + iy であり,i は虚数単位( p !1)です。
abs (z)
編集[Mapping Function]
z の大きさを,jzj = p x2 + y2. から計算します。
以下に例を示す。
abs (3 + 4i) ) 5
conj (z)
編集[Mapping Function]
z の共役複素数 ̄z = x ! iy を返します。
imag (z)
編集[Mapping Function]
z の虚部を実数で返します。
real (z)
編集[Mapping Function]
z の実部を返します。
19.3 三角関数
編集Octave では以下の三角関数を提供しています。 引数はラジアンで指定します。 角度(degree)をラ ジアンに変換するには,角度に?=180 を乗じてください(たとえば,sin (30 * pi/180)は,30 度 に対する正弦の値を返す)。
sin (x)
編集[Mapping Function]
x の各要素について,正弦(サイン)を計算します。
cos (x)
編集[Mapping Function]
x の各要素について,余弦(コサイン)を計算します。
tan (z)
編集[Mapping Function]
x の各要素について,正接(タンジェント)を計算します。
sec (x)
編集[Mapping Function]
x の各要素について,余割(セカント)を計算します。
csc (x)
編集[Mapping Function]
x の各要素について,余割(コセカント)を計算します。
cot (x)
編集[Mapping Function]
x の各要素について,余接(コタンジェント)を計算します。
asin (x)
編集[Mapping Function]
x の各要素について,逆正弦(アークサイン)を計算します。
acos (x)
編集[Mapping Function]
x の各要素について,逆余弦(アークコサイン)を計算します。
atan (x)
編集[Mapping Function]
x の各要素について,逆正接(アークタンジェント)を計算します。
asec (x)
編集[Mapping Function]
x の各要素について,逆正割(アークセカント)を計算します。
acsc (x)
編集[Mapping Function]
x の各要素について,逆余割(アークコセカント)を計算します。
acot (x)
編集[Mapping Function]
x の各要素について,逆余接(アークコタンジェント)を計算します。
sinh (x)
編集[Mapping Function]
x の各要素について,双曲線正弦(ハイパボリックサイン)を計算します。
cosh (x)
編集[Mapping Function]
x の各要素について,双曲線余弦(ハイパボリックコサイン)を計算します。
tanh (x)
編集[Mapping Function]
x の各要素について,双曲線正接(ハイパボリックタンジェント)を計算します。
sech (x)
編集[Mapping Function]
x の各要素について,双曲線正割(ハイパボリックセカント)を計算します。
csch (x)
編集[Mapping Function]
x の各要素について,双曲線余割(ハイパボリックコセカント)を計算します。
coth (x)
編集[Mapping Function]
x の各要素について,逆双曲線余接(逆ハイパボリックコタンジェント)を計算します。
asinh (x)
編集[Mapping Function]
x の各要素について,逆双曲線正弦(逆ハイパボリックサイン)を計算します。
acosh (x)
編集[Mapping Function]
x の各要素について,逆双曲線正接(逆ハイパボリックコサイン)を計算します。
atanh (x)
編集[Mapping Function]
x の各要素について,逆双曲線正接(逆ハイパボリックタンジェント)を計算します。
asech (x)
編集[Mapping Function]
x の各要素について,逆双曲線正割(逆ハイパボリックセカント)を計算します。
acsch (x)
編集[Mapping Function]
x の各要素について,逆双曲線余割(逆ハイパボリックコセカント)を計算します。
acoth (x)
編集[Mapping Function]
x の各要素について,逆双曲線余接(逆ハイパボリックコタンジェント)を計算します。
以上の関数は,引数が1 つであることを想定しています。 引数に行列を与えたときは,以下に示す ように,各要素ごとに計算を行います。
sin ([1, 2; 3, 4]) ) 0.84147 0.90930 0.14112 -0.75680
atan2 (y, x)
編集[Mapping Function]
x とy の対応する要素について,y / x の逆正接(アークタンジェント)を計算します。 結果を !? から? の範囲で返します。
19.4 和と積
編集sum (x, dim)
編集[Built-in Function]
次元dim 方向の和を計算します。 dim が省略されたときは,1 を指定した(列方向に和をとる) とみなす。
例外として,x がベクトルでdim を省略したとき,要素の和を返します。
prod (x, dim)
編集[Built-in Function]
次元dim 方向の積を計算します。 dim が省略されたときは,1を指定した(列方向に積をとる)とみなす。 例外として,x がベクトルでdim を省略したとき,x の要素の積を返します。
cumsum (x, dim)
編集[Built-in Function]
次元dim 方向の累積和を計算します。 dim が省略されたときは,1 を指定した(列方向に累積和をとる)とみなす。 例外として,x がベクトルでdim を省略したとき,x の要素の累積和を返します。
cumprod (x, dim)
編集[Built-in Function]
次元dim 方向の累積積を計算します。 dim が省略されたときは,1 を指定した(列方向に累積積 をとる)とみなす。
例外として,x がベクトルでdim を省略したとき,x の要素の累積積を返します。
sumsq (x, dim)
編集[Built-in Function] 次元dim 方向の積和を計算します。 dim が省略されたときは,1を指定した(列方向に積和をとる)とみなす。 例外として,x がベクトルでdim を省略したとき,要素の積和を返します。 この関数は,概念的には以下の計算を行っているに等しい。
sum (x .* conj (x), dim)
しかし,この関数の方が使用メモリが少なく,xが実数の場合にconjを呼び出さないので,より効率的です。
19.5 特殊な関数
編集[j, ierr] = besselj (alpha, x, opt)
編集[Loadable Function]
[y, ierr] = bessely (alpha, x, opt)
編集[Loadable Function]
[i, ierr] = besseli (alpha, x, opt)
編集[Loadable Function]
[k, ierr] = besselk (alpha, x, opt)
編集[Loadable Function]
[h, ierr] = besselh (alpha, k, x, opt)
編集[Loadable Function]
さまざまなBessel(あるいはHankel)関数を計算します。
- besselj 第1 種のBessel 関数
- bessely 第2 種のBessel 関数
- besseli 第1 種の修正Bessel 関数
- besselk 第2 種の修正Bessel 関数
- besselh 第1 種(k=1)あるいは第2 種(k=2)のHankel 関数
引数opt を与えたとき,k = 1 に対してexp (-I*x),k = 2 に対してexp (I*x)によってスケール化した値を返します。
alpha がスカラであれば,結果はx と同じサイズになります。 x がスカラであれば,結果はalpha と 同じサイズになります。 alpha が行ベクトルでx が列ベクトルであれば,返す結果はlength (x) 行length (alpha)列の行列となります。 一方,alpha とx は整合性がなければならず,結果は同 じサイズとなります。
alpha の値は実数でなければなりません。 x は複素数でもよい。
必要に応じてierr を指定することにより,以下のような実行結果を得ることができます。 これは 結果と同じサイズになります。
- 0. 正常終了
- 1. 入力エラーによりNaNを返した
- 2. オーバーフローによりInfを返した
- 3. argument reduction による有効桁のロスにより,計算機精度の半分以下の精度となった
- 4. argument reduction によって有効桁が完全にロスした
- 5. エラー?計算は行われず,収束せずにNaNを返した
[a, ierr] = airy (k, z, opt)
編集[Loadable Function]
第1 種および第2 種のAiry 関数,およびその導関数を計算します。
K Function Scale factor (if a third argument is supplied)
- --- -------- ----------------------------------------------
0 Ai (Z) exp ((2/3) * Z * sqrt (Z)) 1 dAi(Z)/dZ exp ((2/3) * Z * sqrt (Z)) 2 Bi (Z) exp (-abs (real ((2/3) * Z *sqrt (Z)))) 3 dBi(Z)/dZ exp (-abs (real ((2/3) * Z *sqrt (Z)))) 関数をairy (z)の形式で呼び出すと,airy (0, z) として実行したものと見なします。
結果はz と同じサイズになります。
必要に応じてierr を指定することにより,以下のような実行結果を得ることができます。 これは 結果と同じサイズになります。
- 0. 正常終了
- 1. 入力エラーによりNaNを返した
- 2. オーバーフローによりInfを返した
- 3. argument reduction による有効桁のロスにより,計算機精度の半分以下の精度となった
- 4. argument reduction によって有効桁が完全にロスした
- 5. エラー?計算は行われず,収束せずにNaNを返した
beta (a, b)
編集[Mapping Function]
ベータ関数を返します。
B(a; b) = !(a)!(b) !(a + b) :
betainc (x, a, b)
編集[Mapping Function]
不完全ベータ関数を返します。
 ̄(x; a; b) = B(a; b)!1 Z x 0 t(a!z)(1 ! t)(b!1)dt: x が複数の成分を含むならば,a とb の両方ともスカラでなければなりません。 x がスカラなら ば,a とb は同じ次数でなければなりません。
bincoeff (n, k)
編集[Mapping Function]
以下の計算式においてn とk を与えたときの二項係数を返します。
A n k ! = n(n ! 1)(n ! 2) ¢ ¢ ¢ (n ! k + 1) k! たとえば, bincoeff (5, 2) ) 10 となります。
erf (z)
編集[Mapping Function]
誤差関数を計算します。
erf(z) = 2 p ? Z z 0 e!t2 dt
erfc (z)
編集[Mapping Function]
補誤差関数1 ! erf(z) を計算します。
erfinv (z)
編集[Mapping Function]
誤差関数の逆関数を計算します。
gamma (z)
編集[Mapping Function]
ガンマ関数を計算します。
!(z) = Z 1 0 tz!1e!tdt:
gammainc (x, a)
編集[Mapping Function]
不完全ガンマ関数を計算します。
°(x; a) = Z x 0 e!tta!1dt !(a) a がスカラならば,gammainc (x, a)はx の各要素に対して結果を返します。
x とa の両方ともスカラではないならば,x とa は同じサイズでなければなりません。 このとき, 要素ごとに結果を返します。
lgamma (a, x)
編集[Mapping Function]
gammaln (a, x)
編集[Mapping Function]
ガンマ関数の自然対数を返します。
cross (x, y, dim)
編集[Function File] 3次元のベクトルx とy のcross product を計算します。
cross ([1,1,0], [0,1,1]) ) [ 1; -1; 1 ] x とy が行列ならば,最初の次元の3 要素についてcross product を計算します。 オプション引 数dim を指定すると,dim 次元の方向に沿ってcross product を計算します。
commutation_matrix (m, n)
編集[Function File] 交換行列(commutation matrix)Km;n を返します。 これは,m£n の行列A に対して,Km;n ¢ vec(A) = vec(AT ) となるmn×mn の行列です。
引数としてm のみを与えるならば,Km;m を返します。
統計学ならびに経済学における行列の微分についての応用は,Magnus and Neudecker (1988) を参照してください。
duplication_matrix (n)
編集[Function File] duplication matrix Dn を返します。 これは,n×n の対称行列matrices A について,Dn ? vech(A) = vec(A) なるn2×n(n + 1)=2 の行列です。
統計学ならびに経済学における行列の微分についての応用は,Magnus and Neudecker (1988) を参照してください。
19.6 座標変換
編集[theta, r] = cart2pol (x, y)
編集[Function File]
[theta, r, z] = cart2pol (x, y, z)
編集[Function File] Transform cartesian to polar or cylindrical coordinates. x, y (and z) must be of same shape. theta describes the angle relative to the x - axis. r is the distance to the z - axis (0, 0, z).
[x, y] = pol2cart (theta, r)
編集[Function File]
[x, y, z] = pol2cart (theta, r, z)
編集[Function File]
Transform polar or cylindrical to cartesian coordinates. theta, r (and z) must be of same shape. theta describes the angle relative to the x - axis. r is the distance to the z - axis (0, 0, z).
[theta, phi, r] = cart2sph (x, y, z)
編集[Function File]
Transform cartesian to spherical coordinates. x, y and z must be of same shape. theta describes the angle relative to the x - axis. phi is the angle relative to the xy - plane. r is the distance to the origin (0, 0, 0).
[x, y, z] = sph2cart (theta, phi, r)
編集[Function File]
Transform spherical to cartesian coordinates. x, y and z must be of same shape. theta describes the angle relative to the x-axis. phi is the angle relative to the xy-plane. r is the distance to the origin (0, 0, 0).
19.7 数学的定数
編集I
編集[Built-in Variable]
J
編集[Built-in Variable]
i
編集[Built-in Variable]
j
編集[Built-in Variable] 虚数単位であり,
- sqrt(-1)
と定義されます。 これらの組み込み変数は,関数のような挙動をします。 ゆえに,その名前を別の目的に使用することができます。 もし,これらを変数名として使用して値 を代入し,その後クリアするならば,それらは再びあらかじめ特別に定義してあったものとし て機能します。 詳細は,Section 9.3 [Status of Variables]を参照のこと。
Inf
編集[Built-in Variable]
inf
編集[Built-in Variable] 無限大を表す。 これは,1/0 のような演算,あるいは浮動小数点オーバーフローの結果として 返されます。
NaN
編集[Built-in Variable]
nan
編集[Built-in Variable] 非数を表す。 これは,0=0,あるいは1!1,さらにはNaN を含む演算を行った場合に返さ れる。
ある演算で返されたNaNは,別のNaNと比較できません。 この挙動は,浮動小数点演算のIEEE 標準において明記されています。 ある値がNaN かどうかを判定するには,isnan関数を使用す ること。
pi
編集[Built-in Variable] 円周率です。 内部的には,piは‘4.0 * atan (1.0)’として計算されます。
e
編集[Built-in Variable] 自然対数の底です。 この定数e は,log(e) = 1. を満たす。
eps
編集[Built-in Variable] 計算機の精度を表す。 正確に言えば,epsは計算機の浮動小数点演算機能において,任意の隣 り合うふたつの数の相対間隔の最大値です。 この数値は,明らかにシステムに依存します。 64ビットIEEE 浮動小数点数値をサポートする計算機において,epsは近似的に2:2204£10!16となります。
realmax
編集[Built-in Variable] 浮動小数点値として表すことのできる最も大きな値です。 実際の値は,システムに依存す る。 64 ビットIEEE 浮動小数点数値をサポートする計算機において,realmaxは近似的に 1:7977×10^308. となります。
realmin
編集[Built-in Variable] 浮動小数点値として表すことのできる最も小さな値です。 実際の値は,システムに依存す る。 64 ビットIEEE 浮動小数点数値をサポートする計算機において,realmaxは近似的に 2:2251×10!308. となります。