• 検索結果がありません。

Sage ワークシートのドキュメントとしての機能

ドキュメント内 if if-else if-elif-else (ページ 73-76)

上のように,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

ドキュメント内 if if-else if-elif-else (ページ 73-76)