非线性二维热导方程(数值解)

计算科学 非线性方程 数学 微分方程
2021-12-24 22:34:48

我必须为二维方程写一个求解器: 我尝试使用显式方法: 相同,点我也使用:之前的系数和相同对于我在 Mathematica 中编写了以下代码:

tu=u2(x2u+y2u)
tu=ui,jk+1ui,jkτ
x2u=ui1,jk2ui,jk+ui+1,jkh2
y2uj1,j,j+1
ui,jk=ui+1,jk+ui,jk2
x2yj+1,j

nn = 6;
mm = 200;
h = 1./nn;
tau = 1./mm;
v0[x_, y_] := 1.;


Table[{x[i] = i*h, y[j] = j*h}, {i, 0, nn}, {j, 0, nn}];
Table[t[i] = i*t, {i, 0, mm}];
Table[u[i, j, 0] = v0[x[i], y[j]], {i, 0, nn}, {j, 0, nn}];
Table[u[0, j, k] = 0, {j, 0, nn - 1}, {k, 0, mm}];
Table[u[nn, j, k] = 0, {j, 0, nn - 1}, {k, 0, mm}];
Table[u[i, 0, k] = 0, {i, 0, nn - 1}, {k, 0, mm}];
Table[u[i, nn, k] = 0, {i, 0, nn - 1}, {k, 0, mm}];

Do[ 
  u[i, j, k + 1] = 
   u[i, j, k] + 
    tau*(((u[i - 1, j, k] - 2*u[i, j, k] + u[i + 1, j, k])/
          h^2)*(( u[i, j, k] + u[i - 1, j, k])/
           2)^2 + ((u[i, j - 1, k] - 2*u[i, j, k] + u[i, j + 1, k])/
          h^2)*((u[i, j, k] + u[i, j - 1, k])/2)^2), {k, 0, mm}, {i, 
   1, nn - 1}, {j, 1, nn - 1}];



g[k_] := Table[u[i, j, k], {i, 0, nn}, {j, 0, nn}];
p = Table[
  ListPlot3D[g[k], PlotRange -> {{0, nn}, {0, nn}, {0, 6}}], {k, 0, 
   mm, 20}]

我使用最简单的条件: u(0,0,t)=u(10,10,t)=0u(x,y,0)=1

0个回答
没有发现任何回复~