Язык С++ как инструмент моделирования на основе решения дифференциальных уравнений в частных производных - page 27

25
//double U=0;
nt=nt+1;
double *T= new double[(int)nt];
for(i=0; i<nt; i++){
T[i]=i*dt;
cout<<i<<" "<<T[i]<<endl;
}
// задаем U начальные:
double** U = new double*[(int)nt];
for ( i = 0; i < nt; i++) {
U[i] = new double[(int)nx];
}
double** U1 = new double*[(int)nt];
for ( i = 0; i < nt; i++) {
U1[i] = new double[(int)nx];
}
// сначала все нули:
for(i=0; i<nt; i++){
for(j=0; j<nx; j++){
U[i][j]=0;
}
}
//при t начальном U=sin(X):
for(j=0; j<nx; j++){
U[0][j]=sin(X[j]);
U1[0][j]=sin(X[i]);
}
double Koeff;
Koeff=a*dt/pow(dx, 2.0);
int t;
double *x= new double[(int)nx]; // для ответа в функции
tdma_h()
for(t=1; t<nt; t++){
for(i=1; i<nxbase; i++){
A[i]=-Koeff/2;
B[i]=1+Koeff;
C[i]=-Koeff/2;
F[i]=U[t-1][i]+Koeff/2*(U[t-1][i-1]-
2*U[t-1][i]+U[t-1][i+1]);
}
// левые граничные условия
A[0]=0;
B[0]=-1;
C[0]=1;
1...,17,18,19,20,21,22,23,24,25,26 28,29,30,31,32,33,34,35,36,37,...52
Powered by FlippingBook