Sageでのグラフの使い方について、説明します。 レファレンスマニュアル を参考にしながら見てください。
plotの呼び出しは、以下の形式で覚えると便利です。
plot(関数, [変数名, 最小, 最大], オプション)オプションは、省略可能です。plotのオプションは、plot.optionsで知ることができます。 それ以外にもGraphicsのオプションも使えます。よく使うオプションを以下にしめします。
3次元多項式の場合には、最初にプロットで使用する変数xをvar関数で定義します。 次に関数fを定義します。今回はplotの結果をf_pltに代入していますので、最後に show関数でf_pltを表示します。
f_plt変数に代入することによって、後で他のグラフと重ね合わせて表示することが できます。
|
plot.optionsを知るには、plot?でヘルプを表示したり、plot_optionsを表示するとよいでしょう。
{'adaptive_recursion': 5, 'adaptive_tolerance': 0.01, 'alpha': 1, 'aspect_ratio': 'automatic', 'detect_poles': False, 'exclude': None, 'fill': False, 'fillalpha': 0.5, 'fillcolor': 'automatic', 'legend_label': None, 'plot_points': 200, 'rgbcolor': (0, 0, 1), 'thickness': 1} {'adaptive_recursion': 5, 'adaptive_tolerance': 0.01, 'alpha': 1, 'aspect_ratio': 'automatic', 'detect_poles': False, 'exclude': None, 'fill': False, 'fillalpha': 0.5, 'fillcolor': 'automatic', 'legend_label': None, 'plot_points': 200, 'rgbcolor': (0, 0, 1), 'thickness': 1} |
点$(x_0, y_0)$での接線の傾きは、関数fの微分の$x_0$での値から得ることができますので、 接線の式は、以下のように求めることができます。 $$ (y - y_0) = f'(x_0) (x - x_0) $$ $y_0$の値は、$f(x_0)$ですから、接線の式は以下のようになります。 $$ y = f'(x_0) (x - x_0) + f(x_0) $$
この計算をSageを使って計算してみましょう。まずSageの変数x0を定義し、y0にf(x=x0)の値を代入します。 f1にfの微分をセットします。
|
材料がそろったので、接線の式を定義し表示します。確認のために$x_0 = 0$での式も表示します。
$x_0 = 0$での接線は、原点を通り傾き-2と求まりました。
|
この直線をプロットしてみましょう。 x0=0での接線の式なので、plotの引数にはyではなく、y(x0=0)が渡されていることに注意してください。
重ね合わせたときに区別できるように線の色を緑にします。線の色は、rgbcolorオプションで指定します。
|
接線を計算したポイントを示すために、point関数を使って点を表示します。
point関数の使い方は、以下の通りです。座標は、リストまたはタプル形式で与えます。
point(座標, オプション属性(pointsize, rgccolor, faceted等))
|
Sageのグラフ表示機能の最大の特徴は、重ね合わせです。 これまで計算した以下の結果を同時に表示してみましょう。
重ね合わせは至って簡単で上記の3つの変数を足し合わせて、showメソッドで表示するだけです。
|
Sageのノートブックでのもう一つの特徴にユーザが逐次値を指定することができる、 インタラクティブ機能があります。
接点の座標x0をユーザ任意に指定できるように、_MyGraph関数を定義して、 与えられたx1でのグラフの重ね合わせを返すようにします。
|
インタラクティブ機能を使う場合、
@interactの後に関数を定義します。ここでは、_(アンダーバー)という特殊な関数名を指定します。
関数の引数で与えられた変数をユーザが入力することができるようになります。 ここでは、slider関数を使って-2.5から2.5の範囲で1/10の刻みのスライダー バーを表示してx1を指定できるようにします。
関数の内容は、_MyGraph関数でx1で指定された座標の接線とポイントの重ね合わせ グラフを返し、showメソッドでグラフを表示します。グラフ表示範囲がx1の値でかわらない ようにymin, ymaxで範囲を指定します。
Click to the left again to hide and once more to show the dynamic interactive window |
グラフの変化を分かりやすく表示する方法として、アニメーション機能も提供しています。
アニメーションでは、グラフのリストを作成し、それをanimate関数に渡し、描画範囲を xmin, xmax, ymin, ymaxで指定するだけで簡単にアニメーションが作成できます。 作成されたアニメーションの表示もshowメソッドを使います。
|
Sageのプロット結果は、縦に表示されてしまうため、結果を比較したときには不便です。
このような場合には、htmlコマンドにプロットしたいグラフのリストを渡すと、 表形式に変換して表示してくれます。表示するグラフのオプションにfigsizeでグラフの 大きさを小さくしておくとよいでしょう。
以下にsin曲線とcos曲線の表示例を示します。
|
データを表示するのに便利なのが、list_plot関数です。
list_plot関数は、以下のように使用します。
list_plot(プロットするリスト, オプション)
リストの要素に[x, y]形式で座標を指定すると分布図が表示されます。 また、plot関数でエラーで表示できない場合の代替手段としてlist_plot関数を使うこともあります。
以下にデータ点のプロットの場合とデータを結ぶ場合の例を示します。
|
|
異なるデータを同時に表示する場合には、rgbcolorオプションで色をセットしたり、 legen_labelでデータの種類をセットすると便利です。
|
プロットしたい関数ではなく、条件などの関係式を表示したいときがあります。 このような場合には、implicit_plotを使うと便利です。
implicit_plotの例として、単位円を表示してみます。 単位円の条件は、以下のように与えられます。 $$ x^2 + y^2 = 1 $$
これをimplicit_plotで表示すると以下のようになります。
|
x, yが時間変数t(パラメータ)によって表される場合、parametric_plot関数 を使って表示すると簡単です。
パラメトリックプロットの例として、以下のサイクロイド曲線をparametric_plot関数 で表示してみます。 $$ \begin{eqnarray} x = 2 (t - sin(t)) \\ y = 2 (1 - cos(t)) \end{eqnarray} $$
|
3次元のグラフには、plot3d関数を使用します。重ね合わせは2次元のグラフと同じように使えます。
表示された3次元図形はマウスで自由に拡大、回転することができます。(驚きました)
|
3次元情報を表示する場合によく使用する方法に投稿線図があります。
投稿線図は、contour_plot関数を使って表示します。 前のグラフと同じものをcontour_plot関数で表示すると以下のようになります。
|
以下によく使う基本図形を以下に示します。
circle((座標), 半径)circleの例を以下に示します。座標は原点(0, 0)、半径は1です。
|
次に文字列textです。表示する文字列には、$で囲んでlatexの数式を表示することもできます。 残念ながら、日本語が含まれているとエラーまたは文字化けします。
textは以下の形式で使用します。文字列の中心が指定した座標になるようにプロットされます。
text(文字列, (座標))textの例を以下に示します。
|
線(line)は、指定された座標のリストを線で結びます。 lineの使い方は、簡単です。
line([(開始座標), (終了座標)])
以下に例を示します。日本語が使えないため、タイトルをhtml関数で先に表示し、その後に図形を表示します。 show関数で表示領域を指定し、すべての図形が表示されるようにします。
|
polygon関数を使うとリストで指定した座標の図形を塗りつぶします。
|
|