プログラミング入門II 演習課題 2025.07.09

Back to text page


  1. 松江市の気温
  2. 以前も使用した2024年の各月の松江市の最高気温と最低気温のデータを使用して,1月から12月までを乱数により選択し,その月の最低気温と最高気温を以下のようにグラフに描画することを行ってみましょう.

    CSVからの読み込み処理は6月18日の宿題の解答例にありますね.それと縦軸の温度範囲は自動で設定させていますが,横軸範囲は0からその月の日数+1としています.

    解答例

  3. 減衰振動のグラフ化
  4. RLC 回路の電流は直流電圧 E が加わった際に以下の過渡現象の式で表されることは回路理論で学習します.下の表のような素子の値のときに電圧を 5 V として電流がどのように変化するかのグラフを描いてみましょう.

    R100 Ω, 200 Ω, 300 Ω のどれかを乱数で
    L1.5 mH, 3.3 mH, 10 mH のどれかを乱数で
    C100 pF, 150 pF, 300 pF のどれかを乱数で
    値の選択はリストもしくはタプルを用意しておいて,random モジュールの choice 関数で選ぶと楽です.

    使用する関数 sqrt, exp, sin はすべて numply のものを使用しないといけません.また,この回路では変化の様子をしっかり見るために時定数 τ の3倍の時間まで分割数は 1000 としてグラフにしていますが,時定数は 2 * L / R としました.他にもグラフ内に相対位置で凡例を表示するための指定や,目盛の桁数が多くなってもラベルが切れないようにする処理も以下のように入っています.

    ax.text(0.7, 0.7, txt, transform=ax.transAxes)
    
    plt.tight_layout()
    plt.show()
    

    解答例

  5. コイン投げ
  6. 10枚のコインを投げて表の出る枚数を記録することをシミュレートするのは,6月11日の演習問題 v. で行いました.その時はアスタリスク * でグラフを作りましたが,今回は matplotlib でグラフを作ってみましょう.

    コインを投げる回数は100回,1,000回,10,000回そして100,000回の4通りとし,以下のようにグラフを作りましょう.

    途中の回数でのデータは,100000回の処理の途中で抜き出しています.ただし,100回時点の頻度リストをコピーしても通常のコピーでは最終的な頻度のものになってしまいます.教科書 p.190 にあるディープコピーを使用しましょう.

    また,棒グラフですが,基本的には以下のようにすると作れます.

    ax.bar(x, y)  #x, y はリスト
    

    今回工夫しているのは横軸の表示です.通常の数値のリスト [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11] のままでグラフを描かせると 0 2.5 5 7.5 10 のような目盛りになってしまいます.そこで,xticks という手法を使用します.

    heads = [i for i in range(11)]
    heads_str = [str(heads[i]) for i in range(11)]
    

    のような文字列のリスト(中身は '0' から '10' までの文字列)を用意しておいて,以下のような記述を追加します.

    ax1.set_xticks(heads)
    ax1.set_xticklabels(heads_str)
    

    解答例


Back to text page