B12 [宿題]

B12_1 (スクリプト)

ねらい: 関数をグラフ表示する方法を学ぶ.

表示時間 t 秒,振幅 a,周波数 f を指定して,振幅が a で周波数が f であるようなサイン波とコサイン波を時間 t 秒の範囲で表示せよ.ただし,1秒間に表示される点の数(サンプル数) fs は100とし,時間 t, 振幅 a,周波数 f は1〜3までの間で自分の好きな値をそれぞれ1つずつ設定せよ. また,グラフのタイトルは「Trigonometric Function」,y軸のラベルは「f(t)」,x軸のラベルは「time(s)」,凡例(legend)はそれぞれ Sin(t), Cos(t) として Sin(t) の色は青,Cos(t) の色は赤とせよ.linestyle,marker は自由とする.

グラフウインドウのスクリーンショット b12_1.png とスクリプトファイル b12_1.py を提出せよ.

※ヒント: 周波数1 Hzの場合,サイン波は1秒間で1周期であるから,時刻 t=1 のときの Sin(t) の値は Sin(2π) である.


B12_2 (スクリプト)

ねらい: テキストファイルから情報を読み込んで辞書型のオブジェクトを生成し,これからグラフを作成する方法を学ぶ.

CSVファイル JapanPopulation.csv(形式はテキストファイル)には「年」と「その年の日本の総人口」が「1960,93216000」のようにカンマで区切って1960年から2020年まで記録されている. このファイルを読み込んで,年をx軸,総人口をy軸にとってグラフを表示せよ. ただし,1行ごとに読み込んで生成されたリストから辞書を生成し,辞書の key の値をx軸,value の値をy軸としてグラフを生成せよ.辞書の key の値を要素とするリストは 辞書.keys(),辞書の value の値を要素とするリストは 辞書.values() というメソッドで取得できる. なお,グラフのタイトルは「population trends」,y軸のラベルは「value:Population」,x軸のラベルは「key:Year」とせよ.linestyle,marker,color は自由とする.

グラフウインドウのスクリーンショット b12_2.png とスクリプトファイル b12_2.py を提出せよ.


B12_3 (オプション,スクリプト)

ねらい: NumPy を用いた行列の演算に慣れる.

入力(x1,x2),重み(w1,w2),バイアスbとして関数 を定義する.入力,重みをそれぞれ np.array を用いて入力ベクトル 重みベクトル として表すと, と書けるが,これは入力2,出力1の形式ニューロン(ニューラルネットワークの部品)である.

ニューロン

入力(x1, x2)がそれぞれ1か0の値のみをとるとき, が入力された時のみ f(x) の値が閾値 th を超えて True を表示,それ以外((0, 1)など)が入力された時は False と表示するANDゲートを表現するスクリプトを作成せよ. x1, x2の入力は input() を用いてキーボードからカンマで区切って入力するようにせよ.このとき,入力を促すメッセージとして「x1,x2の2変数の値として0または1をカンマで区切って入力して下さい.」を表示するようにせよ.上記の動作をするように f(x) の閾値 th,重み W とバイアス b をうまく調整すること.

実行結果のスクリーンショット b12_3.png とスクリプトファイル b12_3.py を提出せよ.

実行結果の例を以下の図に示す.

実行結果


B12_4 (オプション,スクリプト)

ねらい: リアルタイムに動く波形を表示する方法を学ぶ.

動画のように,サイン波の周波数が刻々変化するときのサイン波をリアルタイムに描画せよ.

Matplotlib の描画内容をリアルタイムに更新する方法は,クラス4の講義資料の末尾を参照せよ.