算術演算子 - Cinderella Documentation
Description: The user's guide to the Interactive Geometry Software Cinderella

コンテンツにスキップ

# 算術演算子

この節では、数に適用されるすべての演算子と関数についてまとめます。この他にも多くの演算子がありますが、 ベクトルと行列, 幾何演算子, および 関数プロット の節で解説します。

### 挿入演算子

数学の基本的な演算子 +, -, *, /, ˆはそのまま使えます。これらは、数とリストに適用できますが、演算の意味は、適用されるものによって違います。たとえば、 `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>|`

`|...|` 演算子を、引数２つで使うことができます。その場合、２つのオブジェクトの距離を計算します。オブジェクトは、実数、複素数、ベクトルのいずれかですが、２つとも同じ種類のものとします。

例:

式 | 結果 |
`|-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>)`

これらは、 +, -, *, /と同等な、２つの数の演算をする関数です。

例:

式 | 結果 |
`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)を与えれば別の乱数列が発生します。