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

41
Основной цикл алгоритма решения рассматриваемой задачи ((2.1)-
(2.5) на основе ее конечно-разностного представления начального
условия, явной схемы крест для дифференциального уравнения
гиперболического типа с первым начальным условием (2.4), с
аппроксимацией второго начального условия (2.5) вторым порядком
точности по времени и двухточечной аппроксимации граничных условий
с первым порядком точности по координате (2.9).
//при t начальном
for(j=0; j<nx; j++){
U[0][j]=exp(2.0*dx*j);
}
for(i=1;i<nx-1;i++){
U[1][i]=0.5*Koeff*U[0][i-1]
+(1-Koeff-2.5*pow(dt,2.0))*U[0][i]
+0.5*Koeff*U[0][i+1];
}
U[1][0]=U[1][1]/(1+2*dx);
U[1][(int)nx-1]=U[1][(int)nx-2]/(1-2*dx);
int t;
for(t=1; t<nt-1; t++){
for(i=1; i<nx-1; i++){
U[t+1][i]=Koeff*U[t][i-1]-U[t-1][i]+
(2-2*Koeff-5*pow(dt,2.0))*U[t][i]+
Koeff*U[t][i+1];
}
U[t+1][0]=U[t+1][1]/(1+2*dx);
U[t+1][(int)nx-1]=U[t+1][(int)nx-2]/(1-2*dx);
}
Основной цикл алгоритма решения рассматриваемой задачи (2.1)-
(2.5) на основе ее конечно-разностного представления начального
условия, явной схемы крест для дифференциального уравнения
гиперболического типа с первым начальным условием (2.4), с
аппроксимацией второго начального условия (2.5) вторым порядком
точности по времени и двухточечной аппроксимации граничных условий
с первым порядком точности по координате (2.10).
//при t начальном
for(j=0; j<nx; j++){
U[0][j]=exp(2.0*dx*j);
}
for(i=1;i<nx-1;i++){
U[1][i]=0.5*Koeff*U[0][i-1]
+(1-Koeff-2.5*pow(dt,2.0))*U[0][i]
+0.5*Koeff*U[0][i+1];
}
U[1][0]=U[1][1]/(1+2*dx);
U[1][(int)nx-1]=U[1][(int)nx-2]/(1-2*dx);
1...,33,34,35,36,37,38,39,40,41,42 44,45,46,47,48,49,50,51,52
Powered by FlippingBook