| reidai5-1.c | 
| /*
 * reidai5-1.c -- 微分方程式の初期値問題を Euler 法で解く
 * http://nalab.mind.meiji.ac.jp/~mk/program/ode_prog/reidai5-1.c
 */
#include <stdio.h>
#include <math.h>
int main(void)
{
  /* 開始時刻と終了時刻 */
  double a = 0.0, b = 1.0;
  /* 変数と関数の宣言 */
  int N, j;
  double t,x,h,x0,f(double, double);
  /* 初期値 */
  x0 = 1.0;
  /* 区間の分割数 N を入力してもらう */
  printf("N="); scanf("%d", &N);
  /* 小区間の幅 */
  h = (b-a) / N;
  /* 開始時刻と初期値のセット */
  t=a;
  x=x0;
  printf("t=%f, x=%f\n", t, x);
  /* Euler 法による計算 */
  for (j = 0; j < N; j++) {
    x += h * f(t,x);
    t += h;
    printf("t=%f, x=%f\n", t, x);
  }
  return 0;
}
/* 微分方程式 x'=f(t,x) の右辺の関数 f の定義 */
double f(double t, double x)
{
  return x;
}
 | 
このプログラムをコンパイルして12 
実行すると、分割数  を尋ねてきますので、色々な値を入力して試してみ
て下さい。各時刻
 を尋ねてきますので、色々な値を入力して試してみ
て下さい。各時刻  における
 における  の値(
 の値(
 ) を画面に
出力します。
) を画面に
出力します。
確認用にいくつかの  の値に対する場合の、
 の値に対する場合の、 の値を書いてお
きます。
 の値を書いてお
きます。 の場合
 の場合 
 ,
,  の場合
 の場合 
 ,
,  の場合
 の場合 
 ,
,  の場合
 の場合 
 ,
,  .
.
分割数  が大きくなるほど、真の値
 が大きくなるほど、真の値 
 に近付いていくはずです。
 に近付いていくはずです。