算術演算子
この節では、数に適用されるすべての演算子と関数についてまとめます。この他にも多くの演算子がありますが、 ベクトルと行列, 幾何演算子, および 関数プロット の節で解説します。
挿入演算子
数学の基本的な演算子 +, -, *, /, はそのまま使えます。これらは、数とリストに適用できますが、演算の意味は、適用されるものによって違います。たとえば、 5+7 の結果は 12 であり、 [2,3,4]+[3,-1,5] の結果は [5,2,9] です。
加法演算子: <expr>+<expr>
説明: 数(整数、実数、複素数) は、 + 演算子で和が求められます。同じ形をしているリストでも和になり、成分ごとの和が求められます。
例:
式 | 結果
| 7 + 8 | 15
| 2.3 + 5.9 | 8.2
| [2,3,4] + [3,4,6] | [5,7,10]
| [2,3,[1,2]] + [3,4,[1,3]] | [5,7,[2,4]]
|
参照: 文字列演算子
減法演算子: <expr>-<expr>
説明: 数(整数、実数、複素数) は、 - 演算子で差が求められます。同じ形をしているリストでも差になり、成分ごとの差が求められます。また - 演算子は、負(マイナス)記号としても使えます。
例:
式 | 結果
| 7 - 8 | -1
| 8.3 - 5.9 | 2.4
| [2,6,4] - [3,4,6] | [-1,2,-2]
| [5,3,[1,2]] - [3,4,[1,3]] | [2,-1,[0,-1]]
|
参照: 文字列演算子
乗法演算子: <expr>*<expr>
説明: 数(整数、実数、複素数) は、 * 演算子で積が求められます。数のベクトルまたは数の行列の場合は、演算可能な次元であれば積が求められます。詳しくは例を見てください。
例:
式 | 結果 | コメント
| 7 * 8 | 56 | 整数の積
| (1+i) * (2+i) | 1+3*i | 複素数の積
| 2 * [5,3,2] | [10,2,4] | ベクトルの実数倍
| [5,3,2] * 2 | [10,2,4] | ベクトルの実数倍
| [2,2,3] * [3,4,6] | 32 | ベクトルの内積 (x_1,x_2,…,x_n)*(y_1,y_2, …,y_n)=(x_1*x_2+…+x_n*y_n)
| [[1,2],[3,4]] * [1,2] | [5,11] | 行列と列ベクトルの積
| [1,2] * [[1,2],[3,4]] | [7,10] | 行ベクトルと行列の積
| [[1,2],[3,4]] * [[1,2],[3,4]] | [[7,10],[15,22]] | 行列の積
|
参照: ベクトルと行列
除法演算子: <expr>/<number>
説明: 数(整数、実数、複素数) は、 / 演算子で商が求められます。
また、ベクトルは数で割ることができます。
例:
式 | 結果
| 56 / 8 | 7
| [6,8,4] / 2 | [3,4,2]
|
べき乗演算子: <expr><expr>
説明:
数(整数、実数、複素数) のべき乗で、指数は整数に限らず、実数、複素数でも可能です。正式には exp(b*ln(a)) が計算されます。(ln(a)は複素変数の対数関数)
ln(…) は周期 2*pi で定義されますので、 ab は一般には多価関数です。 b が整数でない場合には ab は最初の主要な値を返します
例:
式 | 結果
| 52 | 25
| 5(-1) | 0.2
| 2(1/2) | 1.4142…
|
角度演算子: <number>°
この演算子は、その数に pi/180 を掛けます。これで、度数法(60分法)による角度を弧度法に変換します。
例:
式 | 結果
| 180° | 3.1416…
| cos(180°) | -1
|
絶対値演算子: |<number>|
この演算子はオブジェクトの絶対値を求めます。オブジェクトは、実数、複素数、ベクトルのいずれかです。
例:
式 | 結果
| |-5| | 5
| |(3,4)| | 5
| |1+i| | 1.4142…
|
注意: |_| 演算子を入れ子にして使うことはできません。Cindyscriptはそれを構文エラーとみなします。入れ子にしたい場合はabs()関数を用います。
距離演算子: |<number>,<number>|
|...| 演算子を、引数2つで使うことができます。その場合、2つのオブジェクトの距離を計算します。オブジェクトは、実数、複素数、ベクトルのいずれかですが、2つとも同じ種類のものとします。
例:
式 | 結果
| |-5,8| | 13
| |(1,1),(4,5)| | 5
|
注意: |_| 演算子を入れ子にして使うことはできません。Cindyscriptはそれを構文エラーとみなします。入れ子にしたい場合はdist()関数を用います。
関数
次の演算子は、数(整数、実数、複素数)に適用されます。
いくつかの関数はベクトルにも適用されます。
算術関数
和: add(<expr1>,<expr2>)
差: sub(<expr1>,<expr2>)
積: mult(<expr1>,<expr2>)
商: div(<expr1>,<expr2>)
累乗: pow(<expr1>,<expr2>)
これらは、 +, -, *, /と同等な、2つの数の演算をする関数です。
例:
式 | 結果
| add(5,6) | 11
| pow(6,2) | 36
| mod(23,4) | 3
| add((1,2),(3,4)) | (4,6)
| mult(2,(3,4)) | (6,8)
| mult((4,5),(3,4)) | 32
|
剰余: mod(<expr1>,<expr2>)
説明: mod 関数は <expr1> を <expr2> で割った余りを求めます。
標準的な関数
平方根: sqrt(<expr>)
指数関数: exp(<expr>)
自然対数: log(<expr>)
これらは、数から数への関数です。
これらの関数では複素数も使えます。
三角関数
標準的な三角関数です。
三角関数 sine: sin(<expr1>)
三角関数 cosine: cos(<expr1>)
三角関数 tangent: tan(<expr1>)
sine の逆関数: arcsin(<expr1>)
cosine の逆関数: arccos(<expr1>)
tangent の逆関数: arctan(<expr1>)
ベクトルのなす角: arctan2(<real1,real2>)
ベクトルのなす角: arctan2(<vec>)
arc は原則として多価です。しかし、演算子は−piからpiの間の解をひとつ返します。
例:
式 | 結果
| sin(pi) | 0
| arccos(-1) | 3.1416…
| arctan2(1,1) | 45°
| arctan2(-1,-1) | -135°
|
数値関数
次の関数では、単一の数のほか、リストにも適用できます。
絶対値: abs(<expr>)
四捨五入: round(<expr>)
その数以下の最大の整数: floor(<expr>)
その数以上の最小の整数: ceil(<expr>)
複素数の実部: re(<expr>)
複素数の虚部: im(<expr>)
共役複素数: conjugate(<expr>)
複素数に対しては、 round, floor, ceil は実部と虚部のそれぞれに対して適用されます。
abs は、実数、複素数、ベクトルなどのノルムを計算します。他の関数はリストにも適用できます。
例:
式 | 結果
| round(4.3) | 4
| round([3.2,7.8,3.1+i*6.9]) | [3,8,3+i*7]
| abs([1,3,1,2,1]) | 4
| floor(4.8) | 4
|
乱数
次の関数は乱数を発生します。
0 から 1 までの一様乱数: random()
(0,1)正規乱数: randomnormal()
ブール値の乱数 true または false : randombool()
0 から <number> までの実数の一様乱数: random(<number>)
0 から <number> までの整数の一様乱数: randomint(<number>)
random 関数は、負の数や複素数を引数にすることもできます。例えば、 random(-5) は -5 から 0 までの乱数を発生します。 randomint(6+i*10) は実部が0から6まで、虚部が0から10までの複素数をランダムに発生します。
乱数発生器の初期化: seedrandom(<number>)
疑似乱数は、常に予測不可能な新しい乱数列を発生します。なんらかの理由で、スクリプトを実行するたびに、同じ乱数列を発生させたい場合は、 seedrandom() 関数を使います。引数に与えた整数に対し、同じ乱数列が発生します。異なる引数(seed)を与えれば別の乱数列が発生します。
Contributors to this page: Akira Iritani
.
Page last modified on Wednesday 11 of February, 2015 [23:25:06 UTC] by Akira Iritani.
The content on this page is licensed under the terms of the License.
|
|