IT pass HikiWiki - [itbase2020]Fortran 課題 問題 Diff

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

このページは編集中です.


{{toc}}

= 問題

下の連立一次方程式を解くプログラムを作り, gnuplot を使って連立一次方程式の解のグラフを描きなさい. 作成したプログラムとグラフを提出すること.

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

この連立一次方程式は, 51 本の一次方程式からなり, 未知数Φが 51 個ある (Φの添え字は 0 から 50 であることに注意すること).
得られた解を使ってグラフを描く際には, 下の図のようにΦの添え字を横軸 (x 軸) とし, Φを縦軸 (y 軸) とした線グラフにすること (ただし, 下の図のグラフは模範解答ではないことに注意すること).

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

= 補足 1

なお, この連立一次方程式は, 下の微分方程式の数値解である (「数値解」とは計算機を使って求めた解のこと).
自分で求めた連立一次方程式の解を確かめるためには, 微分方程式を解いて答え合わせすると良い.

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

ちなみに, この微分方程式は, 1 次元のポアッソン方程式であり, 電磁気学における静電ポテンシャルに対して成り立つ式などとして現れる.

= 補足 2

微分方程式と連立一次方程式の関係の詳細については((<こちら|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2018/kadai/poisson_eq_explanation.pdf>))を参照すること.


= 問題


下にあるデータを用いて下に説明する計算を行うプログラムを作り, gnuplot を使ってグラフを描きなさい.
作成したプログラムとグラフを提出すること. 計算して得られた相関係数はメール本文に記載しなさい.

い.
    ただし, 一つのグラフに, 東日本

(1) 南方振動指数 (Southern Oscillation Index, SOI) を計算する
    プログラムを作りなさい. そして gnuplot を使って, 得られた南
    方振動指数の時間変化を表すグラフを描きなさい.
    ただし, グラフには熱帯太平洋のエルニーニョ監視海域二か所
    (NINO3 および NINO3.4) の海面水温の時間変化を重ね描きし, 対
    象領域の海面水温と南方振動指数との関係が分かるようにすること.
    なお, 図の横軸, 縦軸の範囲は自分が見やすいように設定してよい.
(2) 1 で計算して得られた南方振動指数と, NINO3 および NINO3.4 の
    海面水温それぞれとの相関係数を計算するプログラムを作り, それ
    らの相関係数を答えなさい.
    ただし, 相関係数は 1982 年 1 月から 2018 年 12 月までの南方
    振動指数と海面水温を用いて計算すること.

「南方振動指数」「エルニーニョ監視海域 (NINO3, NINO3.4)」については下の補足を参照すること.


== 南方振動指数の計算

南方振動指数 (Southern Oscillation Index, SOI) は, タヒチと
ダーウィンにおける気圧の差を表すものです.
ただし, 実際には単なる二地点の気圧の差ではなく, 二地点の平均
気圧の差およびそれに伴う変動の大きさの差を, 標準偏差を用いて
無次元化します.
実際には下のように計算されます.

((<URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2019/kadai1/eq_soi.bmp>))


##== 相関係数の計算
##
##相関係数については, 惑星学実験実習の基礎II の前半において既に
##説明されているので, ここでは改めて説明しない.


== データ

* ((<ダーウィンの海面気圧|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2019/kadai1/darwin.txt>))
  * データは 1, 2, 3 カラム目がそれぞれ年, 月, 海面気圧 (hPa) です.
* ((<タヒチの海面気圧|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2019/kadai1/tahiti.txt>))
  * データは 1, 2, 3 カラム目がそれぞれ年, 月, 海面気圧 (hPa) です.
* ((<エルニーニョ監視海域 (NINO3, NINO3.4) における海面水温|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2019/kadai1/sst.txt>))
  * データは 1, 2, 3, 4 カラム目がそれぞれ年, 月, NINO3 海面水温(℃), NINO3.4 海面水温 (℃) です.
  * 海面水温のデータの範囲 (年, 月) が, 海面気圧のデータの範囲とは異なることに注意すること.


== 結果の例

* ((<グラフの例 1|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2019/kadai1/soi-sst_fake.pdf>))
* ((<グラフの例 2|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2019/kadai1/soi-sst_fake2.pdf>))

注意: ただし, このグラフは正しい結果ではありません.

グラフの書式 (線の色, 棒グラフにするかどうか, 右側の縦軸を使うかどうかなど) は上の図に倣う必要はありません.
各自が見やすいと思うグラフを作成してください.

なお, 「南方振動指数」のキーワードを使って検索すると,
「グラフの例 2」のように正負で色の異なる棒グラフをたくさん見つける
ことができるでしょう. このようなグラフは,
((<三項演算子を用いた条件分岐|URL:http://www.ss.scphys.kyoto-u.ac.jp/person/yonezawa/contents/program/gnuplot/ternary-operator.html>))
の方法を用いることで描くことができます.


= 補足

== 南方振動指数

南方振動指数は, 南方振動の強さを表すために考案された指数です.

== 南方振動

南方振動とは, 熱帯太平洋の振動現象であり, エルニーニョ・ラニーニャと関係しています.

エルニーニョとラニーニャは, それぞれ熱帯中央・東太平洋における海水が
高温および低温となる現象として知られています.
このエルニーニョとラニーニャを含む熱帯海水温の変化は, ウォーカー循環などの
熱帯大気の循環構造の変化, そして気圧分布の変化を伴い,
大気は「シーソー」のように振動しています. この振動を南方振動と呼びます.
これに基づき, 南方振動指数は,
タヒチ (Tahiti, 149.6°E, 17.5°S) とダーウィン (Darwin, 130.9°E, 12.4°S)
における海面(更生)気圧を用いて計算されます.

* ((<ENSO 補足スライド|URL:http://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2019/kadai1/slide_ENSO.pdf>))


== 海面(更生)気圧

地上観測点で測定される気圧は観測点の標高に依存します.
高気圧・低気圧のような大気の変動に伴う気圧変化を異なる地点で比較するためには,
各観測点の気圧を同じ標高の値に補正する必要があります.
気圧を海面高度の値に補正したものを海面(更生)気圧 (Sea Level Pressure, SLP)
と呼びます.


== エルニーニョ監視海域 (NINO3, NINO3.4)

熱帯太平洋の大気海洋変動を表すために, 海面水温 (Sea Surface
Temperature, SST) を用いた指数がいくつか考案されています.
それらの指数の中で, 特にエルニーニョを監視, 予測することを目的として
使用されているのが NINO3 海域 (5S-5N, 150W-90W の範囲)
および NINO3.4 海域 (5S-5N, 170W-120W) の海水温に基づく指数です
(正しくは, NINO の N にはチルダが付きます).

((<URL:https://climatedataguide.ucar.edu/sites/default/files/users/dschneid/key_figures_428.png>))


## (模範) 解答
##
##   正しいと思っている図は
## https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2019/kadai1/soi-sst_fake.png
##   にあります.
##
##   南方振動指数と NINO3   海面水温との相関係数は ~-0.54
##   南方振動指数と NINO3.4 海面水温との相関係数は ~-0.73


= 問題

下に, 国内の電子基準点の 1997 年から 2019 年までの位置 (経度, 緯度) の
データファイルがある.
電子基準点を一地点(以上)選び, その位置の時間変化のグラフを gnuplot を用いて描きなさい. またその地点の移動速度を求めなさい.
  * グラフは選んだ電子基準点の経度と緯度の時間変化を示すグラフ一つずつの合計二つとする.
    * 複数地点のグラフを提出する場合にはそれぞれの地点ごとのグラフとしても良いし, 複数地点のデータを経度, 緯度ごとに重ね描きしても良い.
  * また, グラフには観測データに加えて 1997 年から 2010 年の期間の経度と緯度の時間変化に最もよく合う一次関数を重ね描きすること. その一次関数は最小二乗法を用いて求めること.
  * 描くグラフには必ず軸の名称を付けること.
作成したグラフと位置の時間変化に合う一次関数を求めるプログラムを提出すること. 計算して得られた移動速度はメール本文に記載しなさい. 移動速度は 3 桁まで求めればよく, その単位は m/year とする.


== データ

=== データファイル

((<[筑紫野]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/data_Chikushino.txt>)),
((<[美東]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/data_Mitou.txt>)),
((<[広島1]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/data_Hiroshima1.txt>)),
((<[倉敷1]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/data_Kurashiki1.txt>)),
((<[神戸中央]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/data_KobeChuo.txt>)),
((<[京都伏見]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/data_KyotoFushimi.txt>)),
((<[名古屋]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/data_Nagoya.txt>)),
((<[静岡3]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/data_Shizuoka3.txt>)),
((<[千葉市川]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/data_ChibaIchikawa.txt>)),
((<[水戸]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/data_Mito.txt>)),
((<[福島]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/data_Fukushima.txt>)),
((<[利府]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/data_Rifu.txt>)),
((<[雫石]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/data_Shizukuishi.txt>)),
((<[十和田]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/data_Towada.txt>))


上記の名前は電子基準点の名称である.

=== 補足
* ファイルには下の数値が含まれている.
  * 1 カラム目: 1997 年 1 月 1 日からの日数 (1997 年 1 月 1 日が 1 とする)
  * 2 カラム目: 年
  * 3 カラム目: 月
  * 4 カラム目: 日
  * 5 カラム目: 電子基準点の経度 (単位は ° (degrees))
  * 6 カラム目: 電子基準点の緯度 (単位は ° (degrees))
* 電子基準点のデータには欠損がある. データのない日の経度と緯度は -99999 としてある. これらのデータは計算に用いないこと.
* データは((<国土地理院電子基準点データ提供サービス|URL:https://terras.gsi.go.jp/>))より取得した.


= 結果の例

* 経度の時間変化 :
  ((<[その 1]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/gps_longitude_fake.pdf>)),
  ((<[その 2]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/gps_longitude_fake-2.pdf>)) (縦軸の範囲を変えた図)
* 緯度の時間変化 :
  ((<[その 1]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/gps_latitude_fake.pdf>)),
  ((<[その 2]|URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/gps_latitude_fake-2.pdf>)) (縦軸の範囲を変えた図)

注意: ただし, このグラフは正しい結果ではないことに注意すること.
例えば, このグラフに重ね描きしてある一次関数はまったくデータに合っていない.

グラフの書式 (点と線, 線の色など) は上の図に倣う必要はない.
各自が見やすいと思うグラフを作成してよい.


= 補足

* 電子基準点とは, 全球測位衛星システム (Global Navigation Satellite System; GNSS) の観測点である. GPS はその一部. 詳細は((<国土地理院の解説ページ|URL:https://www.gsi.go.jp/denshi/denshi_about_GEONET-CORS.html>))を参照すること.
* 電子基準点の移動速度は本来 3 次元ベクトルであるが, ここでは水平 (東西と南北) の移動の速度のみ考えればよいことにする.
* 電子基準点の平均移動速度は, 電子基準点の経度と緯度のデータに対して最小二乗法を適用し, 最もよく合う一次関数の傾きを求めればよい.
  * 今回用意したデータには, データの誤差情報 (標準偏差) は含めていないため, 最小二乗法においては各データの標準偏差はすべて 1 として扱えばよい.
  * 経度と緯度の時間変化 (一次関数の傾き) と移動速度との関係は下のようになる.
    ((<URL:https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/eq_gps.png>))
  * 地球の半径は調べて適当な値を用いること.
  * 計算する値の単位に注意すること.
    * 移動速度は概ね cm/year のオーダーの値となるだろう.
#  * 経度, 緯度 (単位は° (degrees)) の時間変化 (日毎の変化) に合う一次関数の傾きの単位は, °/日 (degrees/day) となるだろう.
#    この値の単位を m/year に変換するためには, まず °をラジアンに変換した上で,
#    経度と緯度の変化にそれぞれ a cosφ, a をかければよい.
#    ただし, a とφはそれぞれ地球半径と緯度である.
#    そして最後に時間の単位を日から年に変換すればよい.
* 電子基準点の位置は地震などの影響により不連続に変化することもある. 観測エラーもあるだろう.
  そのため, 適切な前処理なく最小二乗法を適用するだけでは, 意味のある平均移動速度を求めることはできない.
  しかしここではそれらの前処理は行わなくても良いものとする.

## (模範) 解答
##
##   正しいと思っている図は
## https://itpass.scitec.kobe-u.ac.jp/~itbase/exp/fy2020/kadai1/gnuplot.pdf
##   にあります.