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

28
ex<<X[i]<<"\t";
}
ex<<endl;
for(t=0; t<nt; t++){
ex<<T[t];
for(i=0; i<nx; i++){
ex<<"\t"<<U_an[t][i];
}
ex<<endl;
}
ex<<endl;
ex<<"Среднеквадратическая погрешность:"<<endl;
ex<<error<<endl;
ex<<endl;
ex<<"Условие на сходимость:"<<endl;
ex<<UslShod<<endl;
ex<<endl;
ex.close();
}
void tdma_h(double* A,
double* B,
double* C,
double* F,
double* x, int nxbase){
double *alfa= new double[(int)nxbase];
double *betta= new double[(int)nxbase];
alfa[0]=-C[0]/B[0];
betta[0]=F[0]/B[0];
int i;
for(i=1; i<nxbase-1; i++){
alfa[i]=-A[i]/(B[i]+C[i]*alfa[i-1]);
betta[i]=(F[i]-C[i]*betta[i-1])/
(B[i]+C[i]*alfa[i-1]);
}
betta[nxbase-1]=(F[nxbase-1]-A[nxbase-1]*
betta[nxbase-2])/(B[nxbase-1]+A[nxbase-1]*
alfa[nxbase-2]);
x[nxbase-1]=betta[nxbase-1];
for(i=nxbase-2; i>=0; i--){
x[i]=alfa[i]*x[i+1]+betta[i];
}
}
1...,20,21,22,23,24,25,26,27,28,29 31,32,33,34,35,36,37,38,39,40,...52
Powered by FlippingBook