数値計算法概論： No.3 do loop

1 プログラム

1.1 do 構文による繰り返し

級数の和、数値積分と言った時には変数の値を少しづつ変えながら、同じ操作を繰り返すことが必要になる。この場合に便利なのが do 構文による繰り返しである。

文法： do i = e1, e2, e3 実行文の集合 (do ブロック) end do

i : do 変数、 e1 : 始値 e2 : 終値 e3 : 増分 (全て整数型)。増分値は e3 = 1 の時、省略可。最初は i = e1 として do ブロックを実行し、 end do まで来た時、次の文を実行するの

ではなく、最初の do 文のところに戻る。次に変数 i の値を e3 だけ増やし (i = i + e3)、再び do ブロックの実行を行なう。以下この操作を i > e2 となるまで繰り返す。終了条件に達すると、 end do 文の次の実行文へ移る。

例：

    integer n,n2
    real r1
c
    do n=1,10
       n2=n*n
       r1=1.0/n
       write(*,*) n,n2,r1
    end do
c
    end

例 2 ：指数関数のテイラー展開

exp(x) = ∑_{n=0}^{∞} \frac{x^{n}}{n!}  (1)

を最初の m 項までの和をとり、近似する。

real x,x1,sum
integer n,max
c
read(*,*) x,max
sum=1.0
x1=1.0
do n=1,max
   x1=x1*x/n
   sum= sum + x1
end do
c
write(*,*) sum,exp(x),sum/exp(x)
c
end

例 3 ：双曲線関数の無限乗積

\frac{sinh(πx)}{πx} = ∏_{n=1}^{∞} (1 + \frac{x^{2}}{n^{2}} )  (2)

の有限項での近似

real x,pi,prod
integer n,max
c
pi = 4.0*atan(1.0)
read(*,*) x,max
prod=1.0
do n=1,max
   prod= prod*(1.0+x*x/(n*n))
end do
c
write(*,*) prod,sinh(pi*x)/(pi*x),prod/(sinh(pi*x)/(pi*x))
c
end

1.2 演算の優先順位

四則演算では、 *,/ が +,- より優先する。 () をつけた場合、括弧内の演算の方が優先する。

例： a/3.0*b は (a*b)/3.0 と解釈される。 a/ (3.0*b) と比較してみよ。

2 一般的注意

2.1 印刷 (利用の手引 8.4.4)

ファイルは、 lp testfile とすると印刷できる。講義室前のプリンター ap0 に出力される。

2.2 電子メールについて

電子メールを読み書きするソフトはいろいろあるが、とりあえず mew を上げておく。「利用の手引」の 4 章 3 節 3 参照。 Mew の立ち上げは、 mule の起動後、 [Esc]-x mew とすると、受け取った電子メール一覧がでる。ここで、 w とすると新しく電子メールを作成するモードに入る。 [Ctrl]-x i とすると、ファイルの挿入可能。

3 レポート提出に付いて

課題 1 ：２次方程式は係数により、解が２つある場合、１つしかない場合 (重根)、実数解を持た

ない場合など考えられる。２次方程式の係数を与えたとき、それぞれのケースが処理できるプログラムを作れ。余裕があれば、実数解を持たない場合には虚数解を表示するとか、 1 次方程式に帰着する場合も含めるようにしてみよ。

課題 2 ： sin(x), cos(x), log(1 − x), tan(x), arctan(x), (1 − x)^{−1} など本日の例以外の適当な関数に

ついて (無限) 級数展開の有限項を取り、組み込み関数と比較し、収束性を議論せよ。余裕があれば、無限乗積、漸近展開なども試してみよ。

参考文献：「数学公式集 II」、岩波全書

以上 2 つの課題に関し、\underline{プログラムと実行結果、誤差の評価などの考察}、その他を付けてレポート No.1 として提出せよ。\underline{講義名 (数値計算法概論)、名前、学籍番号、提出日時} を必ず明記すること。また Fortran 以外の言語 (C,C++) を使った場合は、そのことを記載しておくこと。

メールでの提出も認める。この場合は、自分のところにかならず Cc: しておくこと。また Subject: には Report No.1 と入れること。

コピーレポートはオリジナルも含めて認めない。提出先：野村 (理学部 2 号館 6 階 2641 号室、 e-mail:knomura@stat.phys.kyushu-u.ac.jp) 提出期限: 5 月 14 日まで。 \underline{レポート作成} a.out > out.dat とすると、画面に表示されていた出力を out.dat といったファイルに出力できる。 cp xxx.f report01 として、プログラムファイルを report01 にコピーし、 cat out.dat >> report01 で出力を report01 に添付し、 lp report01 とするとプリンターに出力できる。

3.1 参考図書

1. レポート作成には、プログラムと実行結果のみではなく、明解かつ論理的な説明をするように努めること。説明順序、文章の構成、適当な数式、図表などに工夫することで、レポートの質が向上する。「理科系の作文技術」木下是雄著、中公新書を参考にすること。

2. 数値計算一般について、「数値計算の常識」伊理正夫、藤野和健著、共立出版は一通り数値計算を勉強してから読み直すとためになる。