7. 練習問題の答え・1

れを差分形式で書いてみよう。

$$\frac{T_i^{n+1}-T_i^{n}}{\Delta t}=-u\frac{T_{i+1}^n-T_i^n}{\Delta x}$$

$$T_i^{n+1}=T_i^{n}-u\frac{\Delta t}{\Delta x}(T_{i+1}^n-T_i^n)$$

と考えるかもしれない。それで以下のようなコードでこれを検討してみよう。

#include <stdio.h>
#include <math.h>
#define u 1.0
#define dt 0.1
#define xmax 200
#define imax 200
#define tmax 10

int main(void){
  double dx=(double)xmax/imax;
  double x;
  double T[xmax+1],cfl;
  int t;
  cfl=u*dt/dx;
  int i;
  for (i=1; i<=imax; i++){
    if (i>=10&&i<50)
      T[i]=1.0;
    else
      T[i]=0.0;
  }
  for (i=1; i<imax; i++)
    printf("%2.2e,",T[i]);
  printf("\n");   
  for (t=1; t<=tmax; t++){
    for (i=1; i<imax; i++)
      T[i]=T[i]-cfl*(T[i+1]-T[i]);
    if (t%1==0){
      for (i=1; i<imax; i++)
        printf("%2.2e,",T[i]);
      printf("\n");
    }
  }  
}

もともと、

画像に alt 属性が指定されていません。ファイル名: 0.jpg

のような形を初期条件としている。これが一定速度で右に動いて行ってもらいたいと考えているわけだが、実際には

画像に alt 属性が指定されていません。ファイル名: 1.jpg

となってしまい、計算が安定してくれない。