Sageを使用する際に知っていると便利な約束事(表記方法)があります。 代表的なものについて、以下に示します。
Sageは、pythonのインタプリタを使っているため、pythonの構文がそのまま使えます。
pythonでのコメント(実行に影響しない注釈)は、#記号から行末がコメントとして扱われます。 コメントには日本語も使用できますので、式の説明やメモを入れておくと後で役立ちます。
9 9 |
複数の式を1行にまとめるには、式を;(セミコロン)で区切ります。
セルを評価するとprint文やshowコマンドの結果、それと一番最後の結果が表示されます。 しかし、最後の代入文の結果は表示されないため、例のように;(セミコロン)の後に変数名 を入力します。
4 1 4 1 |
計算結果をpython変数に代入するときには、= (イコール)を使います。 python変数と断っているのは、sageの数式で使われる変数と区別するためです。
変数aに$\frac{1}{2} + \frac{1}{3}$の結果を代入します。結果は、$\frac{5}{6}$と分数で表示されます。 aの値を数値として出力するには、N関数またはnメソッドを使います。
5/6 0.833333333333333 5/6 0.833333333333333 |
タプルは、カンマで区切られた値からなるシーケンスデータ型です。 タプルの出力は()カッコで括られたカンマ区切りの形式で表示されます。
タプルの変数への代入をタプル・パッキングと呼び、逆にタプルから変数への代入をシーケンス・アンパッキングと呼びます。 シーケンス・アンパッキングは変数への一括代入に使用すると便利です。
リストや辞書と合わせるために、あえてカッコ()をつけてタプルを使用しることにします。
(1, 2, 3) 1 2 3 (1, 2, 3) 1 2 3 |
sageでは、リストがもっとも重要なデータ構造になります。 タプルとは異なり、リストでは要素の参照の他に、要素の追加、削除、結合などの操作ができます。
[1, 2, 3] [1, 2, 3, 4] 3 [2, 3] 4 [1, 2, 3, 4, 9, 8, 7] [1, 2, 3] [1, 2, 3, 4] 3 [2, 3] 4 [1, 2, 3, 4, 9, 8, 7] |
辞書、別名「連想配列」と言われ、リストのインデックスの代わりにキーで値を取得することが できます。
{'Sarah': 28, 'Mike': 31, 'John': 24} 28 {'Sarah': 28, 'Mike': 31, 'John': 24} 28 |
sageの式で変数として認識させるには変数をvar関数で宣言しなくてなりません。変数の宣言は、
var('変数名')複数の変数を宣言する場合には、スペースを空けて指定します。 宣言される変数を参照したりする場合には、
x, y = var('x y')のようにpython変数x, yに宣言したsage変数を代入します。
sageの関数には、以下の3種類の指定方法があります。必要に応じて使い分けて下さい。
sqrt(2) sqrt(2) sqrt(2) sqrt(x + y) sqrt(x + y) sqrt(x + y) sqrt(2) sqrt(2) sqrt(2) sqrt(x + y) sqrt(x + y) sqrt(x + y) |
変数の値を指定して関数の値を取得するには、以下の3つの方法があります。
以下の例では$f(x) = a x + b$の関数をf(x)、g(x, a, b)で定義した場合のa, bの値の代入方法 を示しています。subsの場合には、a=2, b=1のようにカンマで区切って値をセットする方法と辞書形式 で与える方法が使用できます。var関数で変数を定義すればa=c, b=dのように別の変数への置換も可能です。
2*x + 1 2*x + 1 x |--> 2*x + 1 x |--> 2*x + 1 x |--> 2*c*x + d + 1 2*x + 1 2*x + 1 x |--> 2*x + 1 x |--> 2*x + 1 x |--> 2*c*x + d + 1 |
規則の代入には、subs_expr関数を使います。例として、関数hの$x^2$をwに置き換えてみます。
変数の置換では行えない変換もsub_exprを使うことによって可能になります。
x^2 + 3 w + 3 x^2 + 3 w + 3 |
直前の実行結果を _ で参照することができます。
[1, 2, 3] [1, 2, 3] |
6 6 |