∂u/∂t = 2u*∂u/∂x
初期条件:u(x,0)=0.1
境界条件:u(0,t)=u(N,t)=0.1 (x in [0,N])
とします。
この時、差分解を求めるのですが自分で作ったプログラムでは答えが初期値と同じまんまである上に
100*100のデータが欲しいのに100個のデータしか出て来ません。
どこを直せばいいのかご教授下さい。ちなみに前進差分を使っています。
#include <stdio.h>
#include <stdlib.h>
#define N 100
#define T 100
#define dt 0.0001
#define dx 0.001
int main(){
double u[N+1][T+1];
int i,j;
for(i=0;i<N+1;i++){
u[i][0]=0.1;
}
for(j=0;i<T+1;i++){
u[0][j]=u[N][j]=0.1;
}
for(i=0;i<N-1;i++){
for(j=0;i<T-1;i++){
u[i][j+1] = u[i][j] + (dt*2*u[i][j]*(u[i+1][j]-u[i][j]))/dx;
}
}
for(i=0;i<N+1;i++){
for(j=0;i<T+1;i++){
printf("%lf ",u[i][j]);
}
printf("\n");
}
return 0;
}