上のように,Sageワークシートのソース を直接編集して,欄外にドキュメントを書 くことができますが,もっと便利な方法が あります。右の図のように,セルの外側に マウスカーソルを置くと青紫色の線が現れ ます:このとき,
Shift +マウス左クリック
を押すと,次の図のようにテキスト編集画 面が現れます。
ここにテキストを書いてフォントの種類やサイズを変えたり,番号付けしたり,LATEX形式で数式を書いた りすることができます。
画像ファイルを貼り付けることもできます。記入したら,『Save Changes』をクリックすれば編集が反映さ れます。また,すでに編集した欄外の項目であれば,ダブルクリックするだけでテキスト編集画面が現れます。
このように,Sage Worksheetは,計算できる上に,ドキュメント形式としても十分な機能を持ってるので,
計算可能なドキュメント であるといえます。
35 練習問題
Sage の ワ ー ク シ ー ト 作 成 ,フ ァ イ ル に 保 存 し て み ま し ょ う 。Sage ワ ー ク シ ー ト の フ ァ イ ル 名 は
sagews01.swsとすること。ファイルを保存したらSageノートブックの画面の Upload からアップして,
ワークシートが正常に読み込まれているか確認してみましょう。
36 2つの関数
36 2つの関数
ここでは,以前にPythonで定義した関数とは 異なる『関数』について解説します。まず,Pythonにおけ る関数の復習をします。Pythonにおける関数は,いくつかの処理をひとかたまりにして名前を付けたもので した。たとえば,次のように関数を定義しました:
1 def fib ( n ): # 関 数 f i bの 定 義 , 引 数n
2 a , b = 0 , 1 # こ こ か ら
3 for i in r a n g e( n ): #
4 a , b = b , a + b # こ こ ま で が 一 連 の 処 理
5 r e t u r n a # 上 の 処 理 が 終 わ っ た ら aの 値 を 返 す
6
7 for i in r a n g e(1 ,10): # i =1 ,…, 9 に 対 し て
8 p r i n t fib ( i ) # fib ( i )を プ リ ン ト
9
10 p r i n t ty p e( fib ) # f i bの デ ー タ の 型 を 表 示
実行結果の例 1 1 2 3 5 8 13 21 34
<type ’function’>
上のプログラムでは,関数fibが呼び出されると,そのときの引数nに対して2行∼4行の処理を行い,それ が終わるとaの値を返す(return)という事をしています。
はじめてPythonの関数を習ったときに,違和感を憶えた人も多いと思います。それは,高校以前の数学で
『関数』と呼ばれているものは文字式として定義されていて,方程式を解いたり微分したりといった文字式と しての取り扱い方を学習するからだとおもいます。たとえば
4x+ 3, x2, sin(x), 1
x2+ 1 (6)
はどれも文字式による関数です。ここでは,xは関数の変数(variable)や不定元(indeterminate)と呼ばれま す。これらの関数は,xに具体的な数値を代入すれば,計算によりその関数の値が定まりますが,Pythonの 関数のように計算手順を記述したものではありません。そして,これらはxが何者であるかはとりあえずは特 定せずにxの文字式としての扱われます。
Sageでは,文字式としての関数に対応するものを定義することができます。
文字式としての関数の定義1
1 var (’ x ’) # xを 変 数 = 不 定 元 に す る 宣 言
2 f = x ^2 # 文 字 式x ^2を 変 数 fに 代 入
上のプログラムの1行目は文字xを変数として取り扱いますという宣言です。これによりxの文字式が 扱えるようになります。2行目で関数f =x2を定義しています。
上に続いて次を実行します
1 p r i n t f # fを プ リ ン ト
2 p r i n t f ( x =5) # x =5の と き の fを プ リ ン ト 3 p r i n t ty p e( f ) # fの 型 を 調 べ る
4 p r i n t ty p e( x )
実行結果の例 x^2
25
<type ’sage.symbolic.expression.Expression’>
<type ’sage.symbolic.expression.Expression’>
このようにして定義した関数fの特定のxに対する値を計算するときには2行目のように書きます。3,4行 目の結果は,fとxのデータの型はsage.symbolic.expression.Expressionというものになっています。
一方,上で定義したfibのデータの型は’function’です。
次のように文字式を定義する方法もあります:
文字式としての関数の定義2
1 var (’ x ’)
2 f ( x ) = x ^2 # 変 数 の 指 定( x )が あ る の が 前 と 異 な る
3
4 p r i n t f
5 p r i n t f (5) # こ れ で 関 数 の 値 が 返 さ れ る
6 p r i n t ty p e( f )
実行結果の例 x |--> x^2
25
<type ’sage.symbolic.expression.Expression’>
また,2変数x,yの関数を定義するには次のようにします
1 var (’ x y ’) # x , yを 文 字 式 と し て 取 り 扱 う 宣 言
2 g = ( x + y )^2 # 関 数gの 定 義
3 p r i n t g
4 p r i n t g ( x =3 , y =6) # x =3 , y =6の と き のgの 値 5 p r i n t g ( y =3) # y =3の と き のgの 値
実行結果の例 (x + y)^2
81 (x + 3)^2