我必须找到并绘制以下方程的数值解(我必须编写一个求解器):
符合以下条件, 在哪里是波的速度
我尝试使用以下方法:
在哪里
在哪里
tt = 0.1;
tnn = 10000;
xnn = 20;
tau = tt/tnn;
h = 1/xnn;
u0[x_] := x;
Do[v[m, 0] = u0[h*m], {m, 0, xnn}]
Do[v[0, n] = 0; v[xnn, n] = 0;
Do[v[m, n + 1] =
v[m, n] + tau/h*( ((v[m + 1, n] - v[m, n])/h) (((v[m + 1, n])^2 + (v [m, n])^2)/ 2) - ((v[m, n] - v[m - 1, n])/h) (((v[m, n])^2 + (v[ m - 1, n])^2)/2) ), {m, 1, xnn - 1}], {n, 0, tnn - 1}]
u = ListInterpolation[
Table[v[i, j], {i, 0, xnn}, {j, 0, tnn}], {{0, 1}, {0, tt}}];
Plot3D[u[x, t], {x, 0, 1}, {t, 0, tt}, PlotRange -> All]
我已经更改了代码并得到了正确的解决方案,但是对于 u(0,t)=u(1,t) = 0,u(x,0) = f(x)。我实际上不明白我应该如何编写像 u(1,t) = f(t) 这样的条件。