環境システム科学演習 2回目  FORTRAN 文法について...

28
1 環環環環環環環環環環 環環 環環環環環環 FORTRAN 環環環環 環環 環環 環環環環 環環環環環 IF 環 IF 環 環環環環環環 環環環環環環環 () 環環環・・・・ 環環 環環 環環環環環環環環環環環環環環環環環環環環環 2008.12.2

Upload: tan

Post on 06-Jan-2016

44 views

Category:

Documents


2 download

DESCRIPTION

2008.12.2. 環境システム科学演習 2回目  FORTRAN 文法について ①コメント ②定数 ③配列 ④入出力文  ⑤文字の結合 ⑥ IF 文 ⑦ IF 文  ⑧副プログラム(サブルーチン) その他・・・・ 演習:相関 北極振動指数と日本各地の気温の関係を調べる. 北極海は国内旅行程度 の範囲にある. 日本の気候は バランスで決まる. 陸. 海. 偏西風. 陸. 海. 偏西風. 高温⇒低圧. 季節風. 低温⇒高圧. 季節風. 陸. 海. 低温⇒高圧. 高温⇒低圧. 偏西風. 温暖. 寒冷. 温暖. 寒冷. - PowerPoint PPT Presentation

TRANSCRIPT

1

環境システム科学演習2回目

 FORTRAN 文法について①コメント ②定数 ③配列 ④入出力文 ⑤文字の結合 ⑥ IF文 ⑦ IF文 ⑧副プログラム(サブルーチン)

その他・・・・

演習:相関北極振動指数と日本各地の気温の関係を調べる

2008.12.2

北極海は国内旅行程度の範囲にある

日本の気候はバランスで決まる

偏西風

海陸 偏西風高温⇒低圧 低温⇒高圧

季節風

偏西風

高温⇒低圧低温⇒高圧 季節風陸

出典:探検しようみんなの地球http://www.mofa.go.jp/mofaj/gaiko/oda/sanka/kyouiku/kaihatsu/chikyu/statistics/nature/graph_02.html

温暖 寒冷寒冷温暖

北極振動のパターン

白白

黒黒

黒黒

灰灰 灰灰

北極振動とは?

「北極海で気圧が下がれば、北大西洋、北太平洋で気圧が上がり」、「北極海で気圧が上がれば、北大西洋、北太平洋で気圧が下がる」というパターン。

北極海で低気圧偏差のとき >北極振動指数は正ーー

北極海で高気圧偏差のとき >北極振動指数は負ーー

Cから始まる行は、何もしない

コメント行

!以降は、何もしないコメント

①コメント

PARAMETERは定数を与える

②定数

CHARACTERは文字であることを宣言

REAL なら実数であることを宣言INTEGERなら整数であることを宣言

暗黙の了解について:何も宣言しないならば、    A-H,O-Zは実数    I-Nは整数になる

DIMENSION配列であることを宣言

③配列

I=1 2 3 … N-2 N-1 N

J =1 AO(1,1) AO(2,1) AO(3,1) … AO(N-2,1) AO(N-1,1) AO(N,1)

2 AO(1,2) AO(2,2) AO(3,2) … AO(N-2,2) AO(N-1,2) AO(N,2)

3 AO(1,3) AO(2,3) AO(3,3) … AO(N-2,3) AO(N-1,3) AO(N,3)

… … … … … … … …

M-2 AO(1,M-2) AO(2,M-2) AO(3,M-2) … AO(N-2,M-2) AO(N-1,M-2) AO(N,M-2)

M-1 AO(1,M-1) AO(2,M-1) AO(3,M-1) … AO(N-2,M-1) AO(N-1,M-1) AO(N,M-1)

M AO(1,M) AO(2,M) AO(3,M) … AO(N-2,M) AO(N-1,M) AO(N,M)

装置(この場合はファイル)を OPENする

ファイルを読み込んだり、ファイルに書き込んだりする

④入出力

暗黙の了解について:5番はキーボード6番は CRT(画面)

READ(*,*) の最初の *はキーボードWRITE(*,*) の最初の *は画面つまり、READ(*,*)は READ(5,*) と同じWRITE(*,*) はWRITE(6,*)と同じ

5番、 6番以外はファイルを指定する

CHARACTERで宣言しないときは、’ ’

で囲めば文字変数になる

⑤文字の結合

FNは 3文字の文字であると宣言した。’A0’と’ .TXT’は数値ではなく文字「 A0」と「 TXT」である。

’A0’ //FN// ’.TXT’は、 FNとして、    ATSを指定すると「 A0ATS.TXT」という文字を意味する。

I=1 2 3 … N-2 N-1 N

J =1 AO(1,1) AO(2,1) AO(3,1) … AO(N-2,1) AO(N-1,1) AO(N,1)

2 AO(1,2) AO(2,2) AO(3,2) … AO(N-2,2) AO(N-1,2) AO(N,2)

3 AO(1,3) AO(2,3) AO(3,3) … AO(N-2,3) AO(N-1,3) AO(N,3)

… … … … … … … …

M-2 AO(1,M-2) AO(2,M-2) AO(3,M-2) … AO(N-2,M-2) AO(N-1,M-2) AO(N,M-2)

M-1 AO(1,M-1) AO(2,M-1) AO(3,M-1) … AO(N-2,M-1) AO(N-1,M-1) AO(N,M-1)

M AO(1,M) AO(2,M) AO(3,M) … AO(N-2,M) AO(N-1,M) AO(N,M)

内側:Jが 1~ Nまでを繰返し行うという意味です。上の表の矢印の順に作業を行います。ここでは、 11番のファイル「 AO.TXT」から順番に 1からM(= 12)まで読み込むことを意味します。

Jについて 2つおき行いたい場合には、    J=1,M,2とします。外側:

外側も同じです。上の表の点線にのように作業します。

⑥DOループ

IFのブロック

判定を行う、 IF文です。ここでは、もし、 Jが 11以上ならば、IF(J.GE.11) THENとEND IFに挟まれた部分の計算を行います。実際には、 Jが 11よりも大きな値を取るのは、 J=11か J=12しかありません。つまり、 11月と 12月だけ考えますよというものです。

ここでは、 X(I)を計算しているものを説明します。I=1( 1950年)から始まります。J= 11のとき初めて、 IFブロックに入ります。そして、AOTMPに AO(1,11)の値を入れますよとしています。そして、配列 X(1)に AOTMPと X(1)を足したものを与えます。この演算を行う前には、 X(1)は、まだ何も数値を与えていないので、 X(1)は 0です。

演算後、次に、 J=12になります。これも、 11以上ですから、演算を行います。このとき、 X(1)には既に 11月の値が入っていることに注意してださい。そして、 AOTMPには、 AO(1,12)の値を入れます。X(1)=AOTMP+X(1)とは、 AO(1,11)と AO(1,12)を足したものを意味しているのです。

Y(I)も基本は同じです。

11月と 12月の和を計算したので、その 0.5倍しています。これは 11-12月の平均を求めているのです。

装置番号 6番(画面)と装置番号 13番「ファイル」に値を出力します。IY(I):年X( I): 11-12月の平均北極振動指数Y(I): 11-12月の平均気温です

⑦IF文

相関係数を計算する副プログラムを呼び出します。

主プログラムの変数と副プログラムの変数をPEARSON( X,Y,N,R)の括弧内で引き渡しします。

メインプログラムの X(N)、 Y(N)、 Nが   副プログラムに引き渡され、副プログラムで計算された Rがメインプログラムに引き渡されます。

Rが求めるべき相関係数です

相関係数を画面に出力します

開いた装置は、閉じてあげます

プログラムを STOPさせ終了させます( ENDさせます)。

⑧副プログラム

(サブルーチン)

相関係数とは? プログラムでファイルに出力したデータをエクセルで描いてみよう。

(1)開くをクリック

(2)ファイルを指定

(3)

(4)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

- 4

- 2

0

2

4

6

8

10

12

14

1940 1960 1980 2000 2020

1系列2系列

• 同じように B列、 C列データの散布図を作成

y = 0.524x + 10.414R2 = 0.1636

8

9

10

11

12

13

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2

1系列 ( 1)線形 系列

散布図と相関の感覚的理解

• 直線からのズレが小さい

相関係数 1とは?

-0.4

-0.3

-0.2

-0.1

0

0.1

0.2

0.3

0.4

-1.5 -1 -0.5 0 0.5 1 1.5

(xn, yn)

(xn+1, yn+1)

(xn+1, yn+1)=α(xn, yn)のとき、散布図は一直線になる。

つまり、y =αxの関係が成り立っていて、xの値とyの値が 1対 1に対応する場合に相当。

このケースが相関係数 1

相関係数の数学的な意味数学的には、ベクトルのなす角度に関係している。

直線に“のっかる”とは、ベクトルのなす角度が小さいこととして表現できる

A と Bのなす角度( θ)は

cosθ =   a ・ b

| a | ・ | b |

=               cosθa ・ b | a | ・ | b |

ベクトルの内積

(x1, y1)

(x2 y2)

x1×x2+ y1×y2 = √( x1 + y1 ) × √ ( x2+ y2 ) 2 2 2 2 ×cosθ

( 0,0)

a =( x1, y1) b =( x2, y2),

相関係数の計算では、この性質を使っている。

データの数が3個だったら?

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

1.2

-1.5 -1 -0.5 0 0.5 1 1.5

これでも、相関はあるといえるの?

たまたま、何じゃない? ってことも考えられる。

データの個数に応じて、相関がありと言える相関係数の閾値がある

次のページの表で、5%の有意水準というのは、

       95%の確率で確からしい1%の有意水準というのは、

       99%の確率で確からしいことを意味している。 (詳細は省略)

いくつかの地点の月平均気温を、札幌 (ATS.TXT)、東京 (ATT.TXT) 、大阪 (ATO.TXT) 、福岡 (ATF.TXT) 、

南大東島 (ATM.TXT)に入れてある。それぞれの地点での北極振動指数( AO)との相関係数を求め、

相関があるか無いかを判定しなさい。

標本数(データ数)と相関係数の限界値

(N)データ数 (N- 2)自由度 5%有意水準 1%有意水準 (N)データ数 (N- 2)自由度 5%有意水準 1%有意水準

1 3 0.997 1 25 27 0.381 0.4872 4 0.95 0.99 26 28 0.374 0.4793 5 0.878 0.959 27 29 0.367 0.4714 6 0.811 0.917 28 30 0.361 0.4635 7 0.755 0.875 29 31 0.355 0.4566 8 0.707 0.834 30 32 0.349 0.4497 9 0.666 0.798 31 33 0.344 0.4428 10 0.632 0.765 32 34 0.339 0.4369 11 0.602 0.735 33 35 0.334 0.4310 12 0.576 0.708 34 36 0.329 0.42411 13 0.553 0.684 35 37 0.325 0.41812 14 0.532 0.661 36 38 0.32 0.41313 15 0.514 0.641 37 39 0.316 0.40814 16 0.497 0.623 38 40 0.312 0.40315 17 0.482 0.606 40 42 0.304 0.39316 18 0.468 0.59 42 44 0.297 0.38417 19 0.456 0.575 44 46 0.291 0.37618 20 0.444 0.561 46 48 0.285 0.36819 21 0.433 0.549 48 50 0.279 0.36120 22 0.423 0.537 58 60 0.254 0.3321 23 0.413 0.526 68 70 0.235 0.30622 24 0.404 0.515 78 80 0.22 0.28623 25 0.396 0.505 88 90 0.207 0.2724 26 0.388 0.496 98 100 0.197 0.256

例えば、データ数が 58個の場合、  相関係数が 0.254以上の場合、 95%の信頼で相関があると言える