算術演算子
この節では、数に適用されるすべての演算子と関数についてまとめます。この他にも多くの演算子がありますが、 ベクトルと行列, 幾何演算子, および 関数プロット の節で解説します。
挿入演算子¶
数学の基本的な演算子 +, -, *, /, ˆはそのまま使えます。これらは、数とリストに適用できますが、演算の意味は、適用されるものによって違います。たとえば、 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で定義されますので、 aˆb は一般には多価関数です。 b が整数でない場合には aˆb は最初の主要な値を返します
例:
| 式 | 結果 | |
5ˆ2 |
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)を与えれば別の乱数列が発生します。