265
double
y;
y=1.;
return
y;
}
//условие на правой границе
double
nyu(
double
x
)
{
double
y;
y=2.117;
return
y;
}
int
main()
{
ofstream
outfile;
outfile.open(
"rezz.xls"
,
ios
::out);
int
N,K,i,j;
double
a,L,T,h,delta,gam;
double
x[52],u[52][202],t[202];
N=50;
K=200;
L=5;
T=3;
a=0.4;
//вычисляем шаг по х
h=L/N;
//вычисляем шаг по t
delta=T/K;
//формируем массив х и первый столбец матрицы решений U из начального условия
for
(i=1;i<=N+1;i++)
{
x[i]=(i-1)*h;
u[i][1]=fi(x[i]);
}
//Формируем массив t, первую и последнюю строку матрицы решений U из граничных
условий
for
(j=1;j<=K+1;j++)
{
t[j]=(j-1)*delta;
u[1][j]=myu(t[j]);
u[N+1][j]=nyu(t[j]);
}
gam=a*a*delta/h*h;
//Формируем матрицу решений
for
(j=1;j<=K;j++)
for
(i=2;i<=N;i++)
u[i][j+1]=gam*u[i-1][j]+(1-
2*gam)*u[i][j]+gam*u[i+1][j]+delta*f(x[i],t[j]);
for
(i=1;i<=N;i++)
{
for
(j=1;j<=K;j++)
{
cout<<
"\t"
<<u[i][j];
outfile<<
"\t"
<<u[i][j];
}
cout<<endl;
outfile<<endl;
}
outfile.close();
return
0;
}