代码如下:
feq1 = {D[u[t, x], t, t] + D[u[t, x], x, x, x, x] == 0};
feq2 = {D[v[t, x], t, t] + D[v[t, x], x, x, x, x] == 0};
bc1 = {v[t, 0] == 0, Derivative[0, 1][v][t, 0] == 0,
Derivative[0, 2][v][t, 1] == 0,
Derivative[0, 3][v][t, 1] == u[t, 1]};
bc2 = {u[t, 0] == 0, Derivative[0, 1][u][t, 0] == 0,
Derivative[0, 2][u][t, 1] == 0,
Derivative[0, 3][u][t, 1] == If[t < 1, t, 1]};
st1 = {u[0, x] == 0, Derivative[1, 0][v][0, x] == 0};
st2 = {v[0, x] == 0, Derivative[1, 0][u][0, x] == 0};
sol = NDSolve[{feq1, feq2, st1, st2, bc1, bc2}, {v, u}, {t, 0,
10}, {x, 0, 1}];
Plot[{Evaluate[v[t, 1] /. First[sol]],
Evaluate[u[t, 1] /. First[sol]]}, {t, 0, 10}, PlotRange -> {-1, 1}]
此时运行代码,速出的图像如下:

这是不正确的解。
现在如果调换边界条件bc1和bc2如下:
bc1 = {v[t, 0] == 0, Derivative[0, 1][v][t, 0] == 0,
Derivative[0, 2][v][t, 1] == 0,
Derivative[0, 3][v][t, 1] == If[t < 1, t, 1]};
bc2 = {u[t, 0] == 0, Derivative[0, 1][u][t, 0] == 0,
Derivative[0, 2][u][t, 1] == 0,
Derivative[0, 3][u][t, 1] == v[t, 1]};
则输出图像如下:

这是正确的解。
同样对称的方程为何仅仅调换边界条件的顺序就会得到如此不同的解?
feq1 = {D[u[t, x], t, t] + D[u[t, x], x, x, x, x] == 0};
feq2 = {D[v[t, x], t, t] + D[v[t, x], x, x, x, x] == 0};
bc1 = {v[t, 0] == 0, Derivative[0, 1][v][t, 0] == 0,
Derivative[0, 2][v][t, 1] == 0,
Derivative[0, 3][v][t, 1] == u[t, 1]};
bc2 = {u[t, 0] == 0, Derivative[0, 1][u][t, 0] == 0,
Derivative[0, 2][u][t, 1] == 0,
Derivative[0, 3][u][t, 1] == If[t < 1, t, 1]};
st1 = {u[0, x] == 0, Derivative[1, 0][v][0, x] == 0};
st2 = {v[0, x] == 0, Derivative[1, 0][u][0, x] == 0};
sol = NDSolve[{feq1, feq2, st1, st2, bc1, bc2}, {v, u}, {t, 0,
10}, {x, 0, 1}];
Plot[{Evaluate[v[t, 1] /. First[sol]],
Evaluate[u[t, 1] /. First[sol]]}, {t, 0, 10}, PlotRange -> {-1, 1}]
此时运行代码,速出的图像如下:

这是不正确的解。
现在如果调换边界条件bc1和bc2如下:
bc1 = {v[t, 0] == 0, Derivative[0, 1][v][t, 0] == 0,
Derivative[0, 2][v][t, 1] == 0,
Derivative[0, 3][v][t, 1] == If[t < 1, t, 1]};
bc2 = {u[t, 0] == 0, Derivative[0, 1][u][t, 0] == 0,
Derivative[0, 2][u][t, 1] == 0,
Derivative[0, 3][u][t, 1] == v[t, 1]};
则输出图像如下:

这是正确的解。
同样对称的方程为何仅仅调换边界条件的顺序就会得到如此不同的解?