#freeze [[FrontPage]] #contents 2009/10/06からのアクセス回数 &counter; sageのnotebookをどう活用するか、試行錯誤した結果をお知らせします。 ここでご紹介するワークシートは、以下のURLでみることができます。 http://www.sagenb.org/pub/1029/ ** ワークシートの作成 [#u6268c05] 最初にワークシートを作成します。 - New Worksheetをクリックすると新しいワークシートが表示されます *** メモの挿入 [#u905f240] 右上の「Edit」タグをクリックすると、以下のような画面になります。 &ref(edit.jpg); {{{と}}}で囲まれた部分がsageの入力と出力部分です。 {{{id=0| /// }}} このsageの入力部分以外には、htmlタグを使ってHTMLの文章を挿入することができます。 #pre{{ <html> <h3>ノートブックのメモ</h3> ノートブックには、HTMLのhtmlタグで括ってメモを入力することができます。 右上の「Edit」タグをクリックしてsageの入出力部分({{{と}}}に囲まれている部分)以外 の部分にメモを入力します。 </html> }} *** 文中の式 [#y347746c] HTMLのメモでは、文章中に$で囲んでlatexの式を挿入することができます。latexについては、 [[ここ>http://mail2.nara-edu.ac.jp/~asait/latex/tex_introduction.htm]]を参考にしました。 例えば、xの自乗の和を表すときには、 #pre{{ $\sum_{i = 1}^{n} x_{i}^{2}$ }} と入力すると、 &ref(eq1.jpg); のように出力されます。 *** 数式の表示 [#v09e239a] 数式を表示する場合には、$の代わりに$$を使います。デフォルトでは数式が中央そろえになって出力されるので、spanタグのmathクラスを使って左そろえにします。 例えば、 #pre{{ <span class="math"> $$ \begin{eqnarray} f(z) &=& (z-x_1)(z-x_2) \cdots (z-x_n) \\ &=& z^n - \sigma_1 z^{n-1} + \sigma_2 z^{n-2} - \cdots + (-1)^n \sigma_n \end{eqnarray} $$ <span> }} とすると、 &ref(eq2.jpg); となります。 ** コメントの挿入 [#gf8fdf15] ノートブックの入力部で#から行末までがコメントなります(pythonの文法)。 コメントには、日本語も使えます。 例) #pre{{ # これは、コメントです。 }} ** 実際にsageを使ってみましょう [#j288beea] されでは、実際にnotebookからsageを動かしてみましょう。 *** 四則演算 [#kb3bbebf] sageでの四則演算は、数値ではなく式として扱われます。 1 + 2を入力し、評価する(evaluateリンクをクリックするかシフトキーを押したままリターンを押す)と、単に3と出力されますが、 #pre{{ 1+2 }} と入力すると、 &color(blue){3}; と表示されます。 1/2 + 1/3は、5/6と分数で返します。 #pre{{ 1/2 + 1/3 }} &color(blue){5/6}; 5/6の分数を数値として出力するには、Nまたはn関数を使います。 #pre{{ N(5/6) }} &color(blue){0.833333333333333}; *** python変数 [#d75b55dc] sageでは、入力の処理に、pythonインタプリタを使っています。 notebookでは、mathmaticaのような前の結果を再利用する特殊な表現ありませんが、pythonの変数に結果を代入することによってどこでもその変数を参照することができます。 #pre{{ a = 1/2 + 1/3 n(a, digits=5) }} &color(blue){0.83333}; #pre{{ 1/2 + 1/3 }} &color(blue){0.83333}; 前の入力は、_で表すことができます。 #pre{{ N(_) }} &color(blue){0.833333333333333}; *** 文字列 [#adc04a5a] 文字列は、シングルクォートまたはダブルクォートで括って表します。文字列はpython内部でunicodeで保持されるため、'こんにちは'とだけ入力すると、文字化けしたような出力がでます。 日本語の文字列を正しく表示するには、print文を使います。 #pre{{ 'hello' }} &color(blue){'hello'}; #pre{{ 'こんにちは' }} &color(blue){'\xe3\x81\x93\xe3\x82\x93\xe3\x81\xab\xe3\x81\xa1\xe3\x81\xaf'}; #pre{{ s = 'こんにちは' print s }} &color(blue){こんにちは}; *** ヘルプ [#lffd04e2] sageの関数は、関数名の後に?を付けてヘルプを表示することができます。?を2個付けるとさらに詳しいヘルプが表示されます。 #pre{{ abs? }} &ref(help.jpg); *** 補完機能 [#q27ec8bc] 関数名やpythonの変数の属性は、タブキーで補完することができます。 #pre{{ pl[タブキー] }} とすると補完の候補が以下のように表示されます。マウスまたはカーソルで選択します。 &ref(tab_cmpl.jpg); *** よく使う表現 [#e26444c3] 数式でよく使う表現として、 - 複素数 - 円周率 - 自然対数の底 があります。最初に複素数ですが、Iで虚数単位を表します。 例えば、1 + 5*Iは、実数部が1で虚数部が5の複素数を表します。 #pre{{ r1 = 1 + 5*I }} type関数で型を調べることができます。 #pre{{ type(r) }} &color(blue){ <class 'sage.interfaces.r.R'>}; r1の共役複素数r2を定義し、 #pre{{ r2 = 1 - 5*I }} r1とr2の積は、1−(5i)2=1+25 で26となります。 #pre{{ r1*r2 }} &color(blue){26}; 円周率πは、piで表すことができます。 #pre{{ pi }} &color(blue){pi}; 自然体数の底eは、exp(n)で表します。 #pre{{ exp(1) }} &color(blue){e}; ** 数式処理の初歩 [#f632ed23] 数式処理の初歩として、 - 展開: expand - 因数分解: factor - 簡潔化: simplify を試してみます。 最初に展開です。f1に&ref(eq3.jpg);を代入し、展開します。 #pre{{ f1 = (x - 1)*(x^2 - 1); f1 }} &color(blue){(x - 1)*(x^2 - 1)}; #pre{{ f2 = expand(f1); f2 }} &color(blue){x^3 - x^2 - x + 1}; 次に展開されたf2を因数分解します。&ref(eq4.jpg); ですから、答えは、&ref(eq5.jpg); になります。 #pre{{ factor(f2) }} &color(blue){(x - 1)^2*(x + 1)}; 分数の式も簡単に、因数分解できます。 #pre{{ f3 = 1/(x+2)+1/(x-2); factor(f3) }} &color(blue){2*x/( (x - 2)*(x + 2) )}; 最後に簡素化で不要な項を取り除きます。 #pre{{ f4 = I + x - x; simplify(f4) }} &color(blue){I}; *** 式の整形 [#e21b6633] 式をきれいに表示するには、view関数を使用します。 #pre{{ view(f1) }} &ref(view1.jpg); #pre{{ view(f2) }} &ref(view2.jpg); #pre{{ view(f3) }} &ref(view3.jpg); *** 簡単プロット [#y85a9e07] 最後に、数式を2次元のグラフにプロットしてみます。 2次元グラフには、plot関数を使用します。 plot関数のもっとも単純な呼び出し方法は、 #pre{{ plot(関数, 最小値, 最大値) }} です。 例として、y=cos(x)のグラフを−2π から2πまで描画してみます。 #pre{{ plot(cos, -2*pi, 2*pi) }} #ref(cos.jpg); ** sageを試してみて [#dab8bc2a] [[sage/インストール]]のSageオンラインを使って簡単にsageをお手持ちのFirfox(ブラウザ)から試すことができます。 是非、実際にsageを使い勝手を試してみてください。 ** コメント [#v2ce38aa] #vote(おもしろかった[6],そうでもない[0],わかりずらい[0]) #vote(おもしろかった[7],そうでもない[0],わかりずらい[0]) 皆様のご意見、ご希望をお待ちしております。 #comment_kcaptcha