数値解析法及び演習 第一回

プログラミングの基本
  1. この授業の目標と今日の目標
  2. エディタを使う
  3. UNIX入門とターミナル
  4. プログラムの作成, コンパイル
  5. メールを出す
  6. 今日の宿題とログアウト

[0] 成績評価方法

この実習では以下の要領で成績を評価します.

  1. 宿題(2点×13=26点),中間試験(34点),期末試験(40点)の合計で成績評価します.
  2. 特に理由無く3回以上の欠席は不合格.期日までに3回以上宿題を提出しない場合も不合格.

[1] この授業の目標と今日の目標

[1.1] 授業の目標

この授業では,プログラミング言語の習得を目標とします.習得すると何ができるようになるのでしょうか? 大きくわけると二つのことができるようになります.

  1. 数値シミュレーション(主として城野)
  2. データ解析(主として諸田)

私が最近行った数値シミュレーションの例と研究の背景を下に示します.

研究の背景:「原始惑星系円盤」とよばれる、原始太陽の周囲を取り囲む円盤の中で惑星は形成されます。円盤に含まれる「ダスト微粒子」が何らかのメカニズムで集合する必要があるのですが、そのメカニズムはまだわかっていません。古くから、「重力不安定説」「直接合体説」と二つの有力な仮説があるものの、未だ混迷をきわめています。

太陽系のある程度外側では主成分は氷です.そこで、ある程度に大きくなった氷ダスト微粒子集合体の力学応答を数値シミュレーションしました.

両方の図ともに微粒子の集合体が衝突した結果です.左は通常の集合体,右は「焼結」と呼ばれるプロセスが進行した集合体です.「焼結」とは,粘土を加熱すると焼物になる原理で,微粒子の間の結合を強くするプロセスです.原始惑星系円盤の中では広い範囲で焼結が進行することが考えられており,焼結が進行すると衝突合体がしにくくなることが考えられます.このことから,「焼結が進行しない限られた領域で形成された」もしくは「焼結した成長できない小さい集合体が何らかのメカニズムで集められた」という二つの惑星形成の可能性が考えられます.

[1.2] 今日の目標

  1. この授業の意義を知ること
  2. エディタの使い方を覚える
  3. プログラムの実行のしかたを覚える
  4. メールの出し方を覚える

[2] エディタを使う

[2.1] テキストエディタ

プログラムは「エディタ」とよばれるアプリケーションで作成します。エディタとは、文字列のみ作成できるもので、ワード等のワープロとは根本的に異なります。この授業では、Mac OS Xに標準で搭載されている「emacs(イーマックス)」を用います。

画面下のアイコンが並んでいる中に,バックがうすむらさき色の上にペンの絵があるアイコンがあります.一度クリックすると起動します.

[2.1.1] Emacsの基本操作

以下で C-x とは CTRLキーを押しながら「x」キーを押すことを意味します. 次の3つは最低限覚えましょう!

[2.1.2] 練習

ここで練習をしてみましょう. test.txtというファイルを開いてください. 今の場合, test.txtはまだ存在しません. その場合は新たにファイルが作成されます. 開くことができたら, ローマ字を入力してみましょう. 日本語も入力できます. 日本語を入力するためには, スペースキー右の「かな」ボタンを押す(英数字に戻すには「英数」)か,アップルキーとスペースを同時に押すと入力できるようになります. 一通り書いたらセーブしてみましょう.


[3] UNIX入門とXターミナル

昔は大型コンピュータ(メインフレーム)で作業をしていました.本来はそこにある専用端末で操作をするのですが,それは面倒ですから手元にあるコンピュータで作業をしたいと考えます.そこで専用端末を模擬したソフトウェアを手元のコンピュータで動作させ,まるでメインフレームの専用端末を使っているのと同じ環境を実現するのが端末エミュレータ(ターミナル)です.

黒い画面の左上に>が見えるアイコンがあります.一度クリックしてください.

コマンドを入力することによってファイルの移動,コピーなどをします.したがっていくつかのコマンドを覚える必要があります.また,ファイルがどのように格納されているか構造を知っておく必要があります.

[3.1] ディレクトリ構造


図1: ディレクトリツリー

[3.2] ファイル操作復習

とりあえず覚えてもらいたいコマンドは以下の通り:

pwd いま自分がいるディレクトリ名の表示
cd ディレクトリ名 ディレクトリ間の移動
cd Mail Mailディレクトリに移動
cd ../ 一つ上のディレクトリに移動
mkdir ディレクトリ名 ディレクトリの作成
mkdir hoge hogeディレクトリを作成
rm ファイル名 ファイルの削除
rm hogehoge ファイルhogehogeを削除
ls ファイルのリスト表示

[4] プログラムの作成, コンパイル

[4.1]ディレクトリを作る

毎週必ず行なう手順を示します.

こうしておくと後で見返すことが容易にできます.

[4.2]プログラムの作成, コンパイル

次のプログラムを書いてみましょう.example.fという名前でさきほど作成したディレクトリの中に保存してください.

c     program 13/10/03
      implicit none
      real*8 a,b,c 
     
      a=1.D0
      b=2.D0
      c=a+b

      write(6,*) a,b,c
      
      end

まず覚えてほしいフォートランのきまり:

さて作成したプログラムはこのままでは計算機は理解できません. 実行形式(バイナリ)に変換する必要があります. この操作をコンパイルと呼びます. コンパイルはエディタ上ではできません. ターミナル上で入力します.

gfortran example.f
で行われます.するとa.outと言うファイルが作成されます.以下のコマンドで実行してみましょう.
./a.out

[4.3]定数, 変数の型

FORTRANでは定数(1.D0などの具体的な数)および変数(a, bなど定数を格納できる文字 )には型が定められています. 常に型を意識して変数および定数を使用してください. 当 面登場する型は次の三つです. そのうち使用するのは始めの二つとなります. 注意:宣言文はプログラムの先頭に置いてください! 次のプログラムを実行してください.
c     program 2  12/10/04
      implicit none
      real*8 a,b
      real c
      integer n

      a=2.1D0
      b=2.1
      c=2.1
      n=2.1

      write(6,'(D24.16,1x,D24.16,1x,D24.16)') a,b,c
      write(6,'(I3)') n
      end
モニタ上の表示はどうなったでしょうか? 何桁目まで正しく表示されていますか? nの表示はどうなっていますか? 再度注意点をまとめると: 以上二点をいつも守るように心がけて下さい.

[4.4]書式の指定

write(6,*)の*の部分には本来「書式指定子」と呼ばれるものが入る. 書式を指定すると, 計算結果の出力を自分の都合に合わせてカスタマイズできる. 使用頻度が高い形式の例 を二つ挙げておく. 以上の記号を, '( )'で囲んで記述してください. 複数ある場合は ,(コンマ)で続けて 下さい.

[4.5]read文とwrite文

[4.5.1]モニタに出力, キーボードで入力

前節では画面に結果を出力 させました.キーボードから入力もしたいと思います.入力は read文を使って 行われます.先ほどのプログラムを

c     program 2  13/10/03
      implicit none
      real*8 a,b,c,d 
     
      a=1.D0
      b=2.D0
      c=a+b

      read(5,*) d
      write(6,*) d


      write(6,*) a,b,c
      
      end
と変更して実行してみよう.

[4.5.2]ファイルに入出力

計算させた結果は別のファイルに書き出すことがよくあります.そのためにはプログラムの 宣言文(real*8等)の次に
open(1,FILE='test.dat')
を追加してください. こうするとその後write(1,*)とすることによりtest.datに結果が 出力されます.番号に6(モニタ),5(キーボード)は使ってはいけない.これは標準入出力の番号である.

[5] メールを出す

[5.1] WEBメールを使う

この実習ではメールのやり取りに情報メディア教育システムのWEBメールを使います.情報メディア教育システムのページ上にある「WEBメール」からログインしてください.メールアドレス,ドメイン名,パスワードが必要です.

ログインができたら,城野,諸田,加藤あてにメールを出してください. アドレスは:sirono@eps.nagoya-u.ac.jp,morota@eps.nagoya-u.ac.jp,katou.shinsuke@h.mbox.nagoya-u.ac.jp です.


[6] 今日の宿題とログアウト

[6.1] 今日の宿題

メールを送る.メールに含まれる内容は:
  • 自己紹介文
  • 数値計算を将来何に使うつもりか?
  • 宿題の提出先: 城野(sirono@eps.nagoya-u.ac.jp) 諸田(hohokabe@eps.nagoya-u.ac.jp) 加藤(katou.shinsuke@h.mbox.nagoya-u.ac.jp)

    宿題のしめきり: 10月8日(火曜日)

    [6.2] ログアウト

    作業が終わったら必ずログアウトすること.次の人が使えません.

    左上のアップルマークをクリックするとメニューが表示されます.その中から ログアウトを選択してください.

    [6.3] 提出先

    レポートは毎回とも城野,諸田、加藤にメール で送ること.二人以上に同時にメールを送るときは sirono@eps.nagoya-u.ac.jp,morota@eps.nagoya-u.ac.jp,katou.shinsuke@h.mbox.nagoya-u.ac.jpとコンマをつけて並べれば良い.

    日程表へ戻る <<