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

38
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);
}
//аналитическое решение:
double** U_an = new double*[(int)nt];
for ( i = 0; i < nt; i++) {
U_an[i] = new double[(int)nx];
}
for(t=0; t<nt; t++){
for(i=0; i<nx; i++){
U_an[t][i]=exp(2*X[i])*cos(T[t]);
}
}
//среднеквадратическая погрешность:
double error,er1=0,er2=0;
for(t=0; t<nt; t++){
for(i=0; i<nx; i++){
er1=er1+pow(U[t][i]-U_an[t][i],2.0);
er2=er2+pow(U[t][i],2.0);
}
}
error=pow(er1/er2,0.5);
//вывод в файл MatLAB:
fstream m;
m.open("shema1 10 10.m", ios::out);
m<<"% задача 1 схема 1 размер 10 10"<<endl;
m<<"T = [ ";
for(t=0; t<nt; t++){
m<<T[t]<<" ";
}
m<<"];"<<endl;
m<<"X = [ ";
for(i=0; i<nx; i++){
m<<X[i]<<" ";
}
m<<"];"<<endl;
m.close();
//вывод в файл Excel:
fstream ex;
ex.open("shema1 10 10.xls", ios::out);
ex.precision(6);
ex<<"Схема 1, размер 10 10"<<endl;
ex<<"Исходные данные:"<<endl;
ex<<"T=\t"<<nt-1<<"\tK=\t"<<nx-1<<endl;
ex<<"h=\t"<<dx<<"\tt=\t"<<dt<<endl<<endl;
ex<<"t/x\t";
1...,30,31,32,33,34,35,36,37,38,39 41,42,43,44,45,46,47,48,49,50,...52
Powered by FlippingBook