我必须为二维方程写一个求解器: 我尝试使用显式方法: 和和相同,点。我也使用:之前的系数和相同对于点。我在 Mathematica 中编写了以下代码:
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}]
我使用最简单的条件: 和