May 28, 2015 [p.1/6] 数式処理実習 [第 7 回] 関数のグラフの描画 数式を理解するためには,図を描くことが有効です.というわけで,今日はグラフィックスです. 今週も Linux を使います.まずはいつも通り,端末を起動して,作業用のディレクトリ ˜/su-shiki に移動しましょう. 端末 ← ˜/su-shiki に移動 ← su-shiki ディレクトリにいることを確認 kawakubo > cd⊔ ~/su-shiki kawakubo > pwd 次に Maxima を起動しましょう. 端末 kawakubo > maxima で,端末内に Maxima が立ち上がります.次のような画面が立ち上がったら,準備完了です. 端末・maxima % maxima Maxima 5.20.1 http://maxima.sourceforge.net using Lisp SBCL 1.0.38 Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. The function bug_report() provides bug reporting information. (%i1) 1 2 次元グラフィックス まずは,y = f (x) という形の関数から描いてみましょう.二次元のグラフィックスを書くコマンドは plot2d で,書式 は plot2d(関数式,[変数名, 開始値, 終了値], 必要なオプション各種); です. 例えば,y = x2 のグラフを x ∈ [−2, 2] (すなわち,−2 ≤ x ≤ 2) の範囲で描いてみます. maxima (%i1) plot2d(x^2,[x,-2,2]); 4 3.5 3 x^2 2.5 2 1.5 1 0.5 0 -2 -1.5 -1 -0.5 0 x 0.5 1 1.5 2 これだと原点が真ん中に来ていないので,少し気持ち悪いですね.そこで,y の描画範囲もこちら側で指定してみま しょう.x ∈ [−1, 1], y ∈ [−1, 1] の範囲でグラフを描画するには,次のようにします. 数式処理実習 [第 7 回] 関数のグラフの描画 May 28, 2015 [p.2/6] maxima (%i2) plot2d(x^2,[x,-1,1],[y,-1,1]); 1 x^2 0.5 0 -0.5 -1 -1 -0.5 0 x 0.5 1 さらに,この plot2d というコマンドは,複数のグラフを重ねて同時に描くことが可能です.これを行うには,1つの 関数の代わりに,複数個の関数を [ ] で括ったリストを入れます.(なお,関数が複数個ではなく,一つだけの時は [ ] を 付けてはいけません!) 例えば,y = cos x の x = 0 でのテイラー展開を考えましょう. x2 x4 x6 x8 + − + + ··· 2 24 720 40320 テイラー多項式 (近似式) の次数を 2,4,6,8 と少しずつ大きくしたものを,全て重ねて描いてみます. maxima cos x = 1 − ←なお,ここでは見易くするために改行しています. 別に改行しなくても構いません. (%i3) plot2d( [ cos(x), 1-x^2/2, 1-x^2/2+x^4/24, 1-x^2/2+x^4/24-x^6/720, 1-x^2/2+x^4/24-x^6/720+x^8/40320 ], [x,-2*%pi,2*%pi],[y,-4,4]); 4 cos(x) 1-x^2/2 x^4/24-x^2/2+1 -x^6/720+x^4/24-x^2/2+1 x^8/40320-x^6/720+x^4/24-x^2/2+1 3 2 y 1 0 -1 -2 -3 -4 -6 -4 -2 0 x 2 4 6 数式処理実習 [第 7 回] 関数のグラフの描画 May 28, 2015 [p.3/6] 青い点線が cos x です.テイラー多項式の次数が上がるに従って,cos x とフィットしていく様子がわかります. plot2d は,難しい連立方程式が解を持っているかどうかの判断にも使えます.例えば,次の連立方程式に解があるか どうかを判定したいとします. { y = ex y = 3 − x2 この 2 式のグラフを描いてみましょう. maxima (%i4) plot2d([exp(x),3-x^2],[x,-2,2],[y,-1,4]); 4 %e^x 3-x^2 3 y 2 1 0 -1 -2 -1.5 -1 -0.5 0 x 0.5 1 1.5 2 2 つの式のグラフが 2 点で交わっていることから,上の連立方程式は 2 つの実数解を持つことがわかります. 2 パラメータ表示 平面内において,曲線 C 上の点 P(x, y) の座標 x, y が1つの変数 t の関数 f (t), g(t) によって x = f (t), y = g(t) と表される状況を考えましょう.このような表し方を曲線 C のパラメータ表示 (媒介変数表示) といい,t のことをパラ メータ (媒介変数) といいましたね.パラメータ表示された曲線も,上と同じ plot2d を用いて描きますが,書式が少し 異なってきます.書式は, maxima plot2d([parametric,x 成分の関数,y 成分の関数],[媒介変数名, 開始値, 終了値], 必要なオプション各種); となります. 例えば,x = cos t, y = sin t を t ∈ [0, 2π] の範囲で描いてみます. maxima (%i5) plot2d([parametric,cos(t),sin(t)],[t,0,2*%pi]); 数式処理実習 [第 7 回] 関数のグラフの描画 May 28, 2015 [p.4/6] 1 0.8 0.6 0.4 sin(t) 0.2 0 -0.2 -0.4 -0.6 -0.8 -1 -1 3 -0.8 -0.6 -0.4 -0.2 0 cos(t) 0.2 0.4 0.6 0.8 1 3 次元グラフィックス Maxima は 3 次元空間内の曲面も描くことができます.2 変数関数 z = f (x, y) のグラフを描いてみましょう.xy 平面 上の点 (x, y) を一つ決めると,xyz 空間内に点 (x, y, f (x, y)) が決まります.(x, y) を動かすと点 (x, y, f (x, y)) は空間内 を動きますが,これによって曲面ができあがります.この曲面のことを,関数 z = f (x, y) のグラフといいましたね. 例えば,関数 z = x3 − 3xy 2 のグラフを x ∈ [−1, 1],y ∈ [−1, 1] の範囲で描いてみます. maxima (%i6) plot3d(x^3-3*x*y^2,[x,-1,1],[y,-1,1]); x^3-3*x*y^2 2 1.5 1 0.5 0 -0.5 -1 1 -1.5 0.5 -2-1 0 -0.5 y 0 x -0.5 0.5 1 -1 描かれたグラフは,マウスでグリグリ回して視点を変えることができます.やってみましょう. 数式処理実習 [第 7 回] 関数のグラフの描画 May 28, 2015 [p.5/6] plot3d を用いて2変数関数のグラフを描く原理は次の通りです.まず,x の範囲 [−1, 1],及び y の範囲 [−1, 1] をそれ ぞれ 30 の小区間に等分することにより,点 (x, y) の動く領域 [−1, 1] × [−1, 1] を合計 30 × 30 = 900 個の小領域に分割し ます.そして,それぞれの分点の座標を z = f (x, y) に代入して得られる点達を四辺形で埋めていくのです.ですから, 場合によっては表示が荒くなってしまうことがあります. 表示を滑らかにするには,grid というオプションを用いて分割数を増やします.例えば,50 × 50 = 2500 個に分割す るには,[grid,50,50] のように指定します. maxima (%i8) plot3d(x^3-3*x*y^2,[x,-1,1],[y,-1,1],[grid,50,50]); x^3-3*x*y^2 2 1.5 1 0.5 0 -0.5 -1 1 -1.5 0.5 -2-1 0 -0.5 y 0 x -0.5 0.5 1 -1 先程と比べると,曲面がより滑らかになりましたね. 4 ファイルの保存 描かれた図をファイルに保存するには,次のようにします. maxima (%i9) plot2d(x^2,[x,-1,1], ←ここではスペースの都合で改行していますが,実際にはこの改行は不要です. [gnuplot_term,"postscript eps color"],[gnuplot_out_file,"kadai_07.eps"] ); どんなファイル形式で保存するかを [gnuplot_term, "postscript eps color"] で指定しています.今回は,LATEX に貼りたいので,eps 形式を指定し,カラーにしました. もしも白黒の eps ファイルにしたい場合には,[gnuplot_term, "postscript eps mono"] とします. また,[gnuplot_out_file, "kadai_07.eps"] でファイル名を指定しています.ホームディレクトリ ˜/ に kadai_07.eps という名前で保存されます.出来上がったファイル kadai_07.eps をダブルクリックして,中身を確認しましょう. なお,このファイル kadai_07.eps は作業用ディレクトリ ˜/su-shiki に移動させておきましょう.その方が LATEX の 書類に貼り込む時に便利です. なお,kadai_07 の部分は各自好きな名前に変更しても構いません.なお,複数の図を作る時には,もちろん全部違う 名前にしないといけません. 数式処理実習 [第 7 回] 関数のグラフの描画 May 28, 2015 [p.6/6] レポート課題 5 • 講義のページ http://www.cis.fukuoka-u.ac.jp/˜kawakubo/ の今日の所の sm140000 07.pdf の設問に答えよ. • sm140000 07.tex (sm140000 07.pdf の原稿ファイル) をダウンロードし,˜/su-shiki ディレクトリに保存せよ. • ファイル名「sm140000 07.tex」の「sm140000」の部分は各自の学籍番号に変更すること.また,Emacs でファイ ルの中身を編集し,上段の氏名欄に自分の学籍番号と氏名を書くこと. • Maxima を用いて問題を解け.解答は,原稿ファイルを編集して LATEX で作成せよ. • PDF ファイルを作成し,印刷したものを提出すること.締切は 6 月 4 日. • 疑問点等があれば,書いて下さい. 復習:PDF ファイルを作成するために使うもの.Maxima 用の端末とは別に,もう一つ端末を起動します. LATEX タイプセットなど [kawakubo@pe5-(~)-112] cd⊔ ~/su-shiki [kawakubo@pe5-(~/su-shiki)-113] emacs⊔ & [kawakubo@pe5-(~/su-shiki)-114] platex⊔ sm140000_07.tex [kawakubo@pe5-(~/su-shiki)-115] dvipdfmx⊔ sm140000_07.dvi ← ˜/su-shiki に移動 ← emacs をバックグラウンドで起動 ← sm140000 07.tex を platex でタイプセット ← sm140000 07.dvi から sm140000 07.pdf を作成
© Copyright 2024 ExpyDoc