3.2.3 プログラミングの仕方

初期値 $ x_0$ が与えられたとき、漸化式 (10) によって、 数列 $ \{x_j\}_{j=1,\cdots,N}$ を計算するプログラムはどう作ったらよいで しょうか?ここでは二つの素朴なやり方を紹介しましょう。

配列を使う方法
数列を配列で表現するのは、C 言語では自然な発想です。例えば
#define MAXN (1000)

  double x[MAXN+1];
のように配列 “x” を用意しておいて
  x[0] = x0;
  t = a;
  for (j = 0; j < N; j++) {
    x[j+1] = x[j] + h * f(t,x[j]);
    t += h;
  }
とするわけです。Fortran だったら、
Fortran の場合
        integer MAXN
        parameter (MAXN = 1000)
        real x(0:MAXN)

        x(0) = x0
        t = a
        do j=0,N-1
          x(j+1) = x(j) + h * f(t,x(j))
          t = t + h
        end do
という具合いです。

補足的注意     C言語の場合は、配列の代わりに、ポインターと malloc() を使って
#include <stdlib.h> // malloc()
...
  double *x;
...
  x = malloc(sizeof(double) * (N+1));
  if (x == NULL) {
    // エラー処理
  }
のように動的にメモリーを取得することも出来ます。 この後は (x が配列の場合と) 同様に使えます。

配列を使わないですませる方法
漸化式 (10) を解くために、配列は絶対必要というわけで はありません11。例えば、変数 “x” に各段階の $ x_j$ の値を収めておくとして
   x = x0;
   t = a;
   for (j = 0; j < N; j++) {
     x += h * f(t,x);
     t += h;
   }
のようなプログラムで計算が出来ます。 Fortran だったら次のようになります。
Fortran の場合
        x = x0
        t = a
        do j = 0,N-1
          x = x + h * f(t,x)
          t = t + h
        end do



Subsections

桂田 祐史