IT pass HikiWiki - [itbase2017]Fortran 問題 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

== 演算

* **円錐の半径と高さを読み込んで体積を計算する
* **x を読み込んで, x^5 + 6.0*x^4  + 2.0*x^3 + x^2 + 4.0 を計算する
* 二つの数字を読み込んで, 算術平均 (a+b)/2, 幾何平均 (a*b)^0.5, 調和平均を計算する ((a^{-1}+b^{-1})/2)^{-1}
* **与えた秒数が何年, 何日, 何時間, 何分, 何秒に対応するか計算
* **球面三角

== 条件分岐

* **閏年を判定する
  * 400 で割り切れる, あるいは, 4 で割り切れて 100 で割り切れない
* 実数xを入力し, 以下の関数 F(x)の値を求める

    F(x)= 0.0           x<28.0
        = 0.5x-14.0     28.0≦x<30.0
        =-0.5x+16.0     30.0≦x<32.0
        = 0.0           32.0≦x    

* 読み込んだ数字が 100 よりも小さいか, 100 か, 100 よりも大きいか判定する
* 読み込んだ数字が奇数かどうかを判定する
* 読み込んだ点数の秀, 優, 良, 可, 不可を判定
  * 90 点以上は秀, 80-89 点は優, 70-79点は良, 60-69点は可, 59点以下は不可

== 繰り返し

* 掛け算九九のリストを表示する
* 与えた整数の約数を求める
* 与えた二つの整数の公約数を求める
* 1-100 の素数を求める
* 1, 2, ..., N の和
* 2, 4, 6, ..., 2N の和
* **N!
* **与えられた整数の 2 乗から 5 乗までのベキ乗を順に求める
* ファイルの中の値の平均値を求める

== 諸々

* 線形補間
* 連立一次方程式
* ヒストグラム
* MM 月 DD 日は 1 月 1 日から何日目か?
* ファイルの中から最大値/最小値を探す
* **並び替え (ソート)
* **円周率の計算 (モンテカルロ)
* 円周率の計算 (1000 桁)
* **3 の倍数の数字の時にアホになる
* **3 の倍数と 3 がつく数字の時にアホになる

== 諸々

* 東西風比較
  * 補間
  * 作図
* 小惑星

== 課題案

下にある小惑星のデータを用いて下の処理を行うプログラムを作り, gnuplot を使って処理結果のグラフを描きなさい. 作成したプログラムとグラフを提出すること.

(1) 各小惑星の半径を推定するプログラムを作りなさい. そして, その結果を使い, gnuplot を使って, 横軸を小惑星番号, 縦軸を小惑星の半径としたグラフを描きなさい.

(2) 小惑星の半径の度数分布 (ヒストグラム) を求めるプログラムを作りなさい. そして, gnuplot を使ってその頻度分布のグラフを描きなさい. なお, 求める度数分布は, 半径 10 km 刻みとすること.

上の 1, 2 の両方を処理する一つのプログラムを作っても良いし, 1 と 2 のそれぞれを処理する一つずつのプログラムを作っても良い.
また, 1, 2 で描くグラフには必ず縦軸と横軸の意味と単位 (あれば) を書くこと.

なお, 小惑星の半径の推定には下の式を用いなさい.

((<URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2017/images/eq_asteroid_radius.png>))

ここで, r は半径, A は幾何アルベド, H は絶対等級である.
* 補足
  * この式は, 小惑星の明るさ (小惑星による (太陽光の) 反射強度) が小惑星の大きさとアルベドの積となることに基づいています. 詳細は, 興味があれば調べてみると良いでしょう (例えば, "asteroid", "size", "calculation" などのキーワードで検索するだけでも様々な情報が得られるでしょう).

=== 提出要領

作成したプログラムとグラフを添付して,
下の期限までに下の宛先にメールで提出すること.
グラフの画像ファイルの形式は png 形式とする.

期限  : 12 月 5 日 (火) 10:00

提出先: itbase-17ex2 _at_ itpass.scitec.kobe-u.ac.jp  (_at_ はアットマークに書き換えること)

なお, 件名 (Subject) :「11月16日 <名前> 実験実習基礎II課題」とすること.

提出期限までに完成しなかった場合は, どこまでできていて, どこができなかったのかの説明を書くこと.

=== 小惑星のデータ

* ((<小惑星のデータファイル|URL:http://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2017/kadai/Asteroid.txt>))

* 注意:
  * ファイル内のそれぞれのカラムの数値の意味については, ファイルの上部に書かれている説明を参照すること.
  * データには欠損がある. 半径の推定に必要なデータが揃っている小惑星についてのみ半径を求めればよい.
  * データファイルの行数は, 作成したプログラムで数えても良いし, 例えば wc コマンドなどを使って予め数えても良い.

=== 小惑星の半径の図

以下は, 小惑星の半径の図です.

((<URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2017/kadai/Asteroid_Size.png>))

=== 小惑星半径の度数分布の図の見本

以下は, 小惑星半径の度数分布のグラフの見本です.
ただし, このグラフは課題の正しい結果ではありません.

((<URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2017/kadai/Asteroid_Size_Hist.png>))

=== gnuplot の使い方に関する補足

例えば下のようなデータが file.txt に書かれている場合,

  1.0     31
  2.0     42
  3.0     35
  4.0     32
  5.0     25
  6.0     22
  7.0     18
  8.0     15
  9.0     10

gnuplot で下のようにすることで頻度分布 (ヒストグラム) を描くことができます.

  gnuplot> plot "file.txt" with boxes