• Tidak ada hasil yang ditemukan

情報処理 II 第1回グラフの描き方 (1)修 正版

N/A
N/A
Protected

Academic year: 2025

Membagikan "情報処理 II 第1回グラフの描き方 (1)修 正版"

Copied!
6
0
0

Teks penuh

(1)

JOHOSYORI No.1

情報処理 II 第1回 グラフの描き方 (1) 修 正版

桂田 祐史 1992 年 4 月 22 日

1 はじめに

この講義ではグラフを描くための手段を二つ提供します。今回紹介す る方法は、あまり複雑な図形を描くのには向いていませんが、使うため の準備が簡単なので、覚えておくとなかなか便利です。

注意:二つの道具のいずれも、OpenWindowsの下で使うことを念頭にお いています。以下の例題プログラムを試したりする場合は、必ず Open-

Windowsを起動して行なって下さい1

2 コンピューターで描く曲線

コンピューターで、数学の教科書に出て来るような滑らか曲線のグラ フを描くにはどうしたらよいでしょう?実は原理はとても単純で

「十分細かい」折れ線を描けば人間の目には滑らかな曲線に見える

(だから折れ線を描けばいいんだ)というものです。折れ線を描いただけ で済ますのは、何かズルイような気がするかもしれませんが、ラスター・

ディスプレイの原理を思い出せば、あまり心配する必要はないことが分 かるでしょう。

1実はOpenWindows の兄貴分である X Window Systemでも利用可能です。ただ SunViewで使うことは出来ません。

(2)

しかし「十分細かい(=折れ線の頂点と頂点の間隔が十分小さい)」と いう点には注意しなくてはいけません。これが成立していないと、本来 滑らかなはずの曲線がギクシャクしたものになってしまったり、一見滑 らかなようでも実は本当の姿とはかけはなれたものになってしまったり する可能性もあります。ここらへんは真面目に考えると結構難しい問題 になります。

3 mgraph コマンド

折れ線を指定するのに、各頂点の座標データを並べるというのは、自 然な考え方です。ここで紹介する mgraph は、一言で説明すると、座標 で指定された点を順に結んで折れ線を描くためのコマンドです2

入力データは、x 座標と y 座標が並んでいるような行からなるテキス トです。例えば

0.0 0.0 2.0 1.0 1.0 3.0 0.0 0.0

のような内容のテキストは、3 点 (0,0), (2,0),(1,3)を頂点とする三角形 を描くためのデータということになります。

実際に画面に図を描くには、上のデータを収めたファイルの名前を“sankaku.data”

とした時

waltz11% cat sankaku.data | mgraph | xplot

とします。(毎回“mgraph | xplot”と入力するのは面倒だろうというこ とで、mgraph と xplot を連結したプログラム Xgraph を作りました3。 これを利用すると上と同じことが

waltz11% cat sankaku.data | Xgraph

2mgraphは大抵のUNIXに用意されているgraphコマンドの機能拡張版です(graph コマンドについてはmanで説明が読めます)。今回の例のほとんどは、graphコマンド でも実行可能です。

3実はセンターにはxgraphという名前(大文字・小文字が違うだけ!)の別のコマ ンドが存在するので、あまり良い命名とは言えないのですが。

(3)

としても出来ます4。)

ここでは、UNIX のパイプ機能を利用しています。これは “|” という 記号で、コマンドを連結すると、“|” の左側にあるコマンドの標準出力 を、“|”の右側にあるコマンドの標準入力に接続するというものです。

補足:同じ図をプリンターに出力するには

waltz11% cat sankaku.data | mgraph | plot2ps | lpr とします。(紙がもったいないですから、どうしても必要な図だけ印刷す るようにして下さい。)

4 関数のグラフを描く

実一変数の実数値関数 y=f(x), (a ≤x≤b)のグラフを描くには、定 義区間[a, b] を適当に

a=x0 < x1 < x2 <· · ·< xN =b,

と分割して、各xj に対する f の値yj =f(xj) を計算して、

(x0, y0),(x1, y1),(x2, y2),· · ·,(xN, yN)

を順に結んだ折れ線を書けばいいでしょう。特に複雑な関数でない限り、

xj は区間 [a, b] の N 等分点に取るのが自然でしょう。

例題1-1 y= sinx+ sin 3x+ sin 5x のグラフを描きなさい。

問題の関数は周期 2π ですから、0 x 2π で描けば良いでしょう。

“reidai1-1.f” というプログラムは、前節で解説したような形式のデータ

を計算するためのデータです。最初に区間を何等分するか尋ねてくるよ うになっています。コンパイルして実行してみましょう。

waltz11% f77o reidai1-1.f waltz11% reidai1-1

100 分割数 N として 100 を入力

この後グラフ上の点の座標データがたくさん(101 行分) 表示されます。

このデータを元にグラフを描くには

4入出力のリダイレクションを使えば、もっと短くXgraph < sankaku.dataとも出 来ます。

(4)

waltz11% reidai1-1 | mgraph | xplot

100 分割数として 100 を入力 とすれば OK です。

問.分割数 N を色々変えて(特に N を小さくして)、出来上がる図を比 べて見なさい。

問題1-1“reidai1-1.f” を読んで理解し(20行程度で簡単なものです)、書 き換えることによって、色々な関数のグラフを描きなさい。面白いもの が出来たら印刷してみなさい。

問題1-2 f(x) = sinx+ sin 1000x のような関数のグラフを描くことにつ いて考察しなさい。(グラフの描きにくい関数である。なぜか?)

例題1-2 楕円 x2 4 +y2

9 = 1 を描け。

方程式を局所的に y(あるいは x)について解くことによって、例題 1-1 と同様に扱うことも可能ですが、ここではパラメーター表示

x= 2 cosθ, y= 3 sinθ (θ [0,2π])

を利用してみましょう。パラメーター θ の区間[0,2π] を 0 =θ0 < θ1 < θ2 <· · ·< θN = 2π,

と分割して、楕円上の点(xj, yj) を

xj = 2 cosθj, yj = 3 sinθj

で定めて、(x0, y0), (x1, y1),· · ·,(xN, yN)を順に結んだ折れ線を描けばいい でしょう。そのために、座標を計算するプログラムreidai1-2.f を用意し ました。

waltz11% f77o reidai1-2.f

waltz11% reidai1-2 | mgraph -R -x -3.2 3.2 -y -3.2 3.2 | xplot 100 100 等分を指定

ここで、“-x -3.2 3.2 -y -3.2 3.2”としているのは、描画する領域を

3.2≤x≤3.2,3.2≤y 3.2 に指定しています。

問.“-x -3.2 3.2 -y -3.2 3.2” を指定しないとどうなるか?

問題1-3 “reidai1-2.f” を読んで理解し、書き換えることによって、色々

な曲線を描きなさい。面白いものが出来たら印刷してみなさい。

(5)

問題1-4 極座標で

r =θ と表される図形(螺旋の一種)を描け。

-20 -15 -10 -5 0 5 10 15 20

-20 -10 0 10 20

例題1-3“mapdata” というファイルには世界地図のデータが入っていま

す。普通のテキスト・ファイルですから、ちょっとのぞいて見て下さい5。 実はこのデータは陸地の輪郭線の頂点の座標(経度・緯度)を順に並べ たものですが、線を切りたいところで、二重引用符で囲った空白を置い てあります:

133 35 134 35 135 35

" "

134 33 133 33 132 33

こうして作ったデータを表示するには

waltz11% cat mapdata | mgraph -b | xplot

とします。“-b” を指定することにより線を途中で切ることが出来ます。

問.“-b”を指定しないとどうなるか試しなさい。

5cat mapdataとします。less を知っていたら、less mapdataとして見ることを 勧めます。

(6)

問題1-5 地図には目的に応じてさまざまな「図法」があることは社会科 あるいは地理の時間に習ったことがあるでしょう。どれか一つの図法を

(具体的にどう描くのか)調べて、その図法による世界地図を描きなさい。

(Fortranでこの問題を解くのは面倒かもしれません。)

問題1-6 何か面白いデータを入手してmgraph コマンドを用いて図を描 きなさい。

5 補足

-g オプション (m)graph コマンドでは、枠や軸、目盛を描きますが、そ れをコントロールするには、-g 数 とします。例えば -g 0 とする と枠も軸も描きません。

-a オプション x 座標に相当する部分を省略したデータを作ることはよ くあります。例えば、例題1-1のように x座標が一定の量だけ増え ていくような場合、一々記録するほどのこともないと考えて省略す ることが多いです。このようなデータを表示するため、自動的に等 間隔のx 座標を補って表示するオプション-a があります。

-M オプション 例題1-1,1-2では一筆書きをしています。しかし、それだ けでは複雑な図は書けません。例題 1-3 では、ダミーのラベル6を 使ってこの問題を解決しました(-b はラベルが現われたら線を切 る、ということを指定するオプションです)。もう一つ -M という オプションが有効な場合があります。

一枚の図に複数の関数のグラフを描く場合を考えましょう。一つの グラフを描くためのデータが終って、次のグラフ用のデータに移る ところで、x 座標が「戻る」ことに気付きます(それまで単調に増 加していたのが、急に小さくなる、とか)。こういう x 座標の非単 調性を察知して、折れ線を切るようにするオプションが -M です。

6graphコマンドに与えるデータで、二重引用符"で囲まれた文字列をラベルといい ます。

Referensi

Dokumen terkait

問4.グラフの読みとりや分析にさらに興味を持った多摩子さんは、昭和時代に起 こったアメリカとの戦争がかなり厳きびしいものであったことを、以下の 資料 か ら説明しようと思いました。この 資料 は、何冊かの本から調べて、多摩子さ んが円グラフにまとめてつくったものです。アメリカとの戦争は、この 資料 で示してある 1940 年の翌年に始まります。 資料

が負担するのかなど毎回議論になりました。役員で補てんをしようではないかという話も あり、やっとまとまってきたというお話です。 入澤 補足ですが、行政とのかかわりは、伊藤先生を中心としたワークショップの時に清水さ んと先生の方から市の方もそこに参加してくださいと呼びかけられた時が一番強かったと

正しい試験・レポート対策 先生はなぜ,試験やレポー トを課すのか? 先生:学生がその科目の内容 を理解し自分のものとしたか どうかを確認したい。 試験 自分が科目内容を理解して いることを示す答案を作る 合格 高評価 ここから考えよう なんとなく意味不明な答案を 作る 不合格 低評価 まれには受ける場 合もありますが…

中間試験 次回授業は中間試験15:25–17:00を行います。 遅刻は開始してから30分まで認める。 「どういう問題になるか」等は、個別に答えられないので、この授業中に 言って下さい。 「真剣に取り組もう。一方で、失敗しても凹みすぎないこと。成功しても 油断しないこと。成績に参入されるけれど、一方で期末への準備でもあり、

等で、学校にご協力をいただき、本当にありがとうございました。様々な活動が学校だけでは 成り立ちません。皆様、委員さんおひとりおひとりの力でこの学校が成り立っております。今 後ともこの学校が、生徒たちのよき場所としてあることができるよう、私どもも頑張ってまい りますし、保護者の皆様にもご協力いただいて、よりよい環境、よりよい学校を目指して進ん

Rickard著, 示野信一他訳, Maple V Release 5 ラーニングガイ ド, 1999, シュプリンガーフェアラーク東京 [4] 示野信一著, Maple Vで見る数学ワールド, 1999, シュプリンガーフェアラーク東京 Mapleの使い方の参考書です.どれも古い本なので今とは少し使い方が異なる部分もあります

研究とは何か 「研究」とは有益な物や情報を新たに生み出す活動で ある,そう考えている人が多いのではなかろうか.しか し,これは正しいとは言えない.なぜなら,自分に有益 で自分にとって新しいことを知ることは「勉強」に過ぎ ないからである.それは単に自己啓発または自己満足で あり,社会に何らの益ももたらさない. それが研究であるためには,それが「他の多くの人」

2.2 読者の想定 これは講演speechでも言われることだが、対象者がどういう人であるか、場合によって は複数想定する必要がある。読者がどういう知識を持っているか、どの程度の理解力がある か、どういうことに興味を持つか、良く考えないといけない。 大学で、半分トレーニングとしてレポートを書く場合、一つの目安は「少し前のそのテー