我又来问问题了。还是上次那个问题
mathematica吧
全部回复
仅看楼主
level 8
坑爹同学把题发错了。原题是这样的
2016年01月27日 07点01分 1
level 8
另外说一下。除了P1=2,其他的参数全部取1。比如:密度取1
2016年01月27日 07点01分 3
level 8
由于y和z相互牵制。导致求解很困难。现在我的求解思路是离散化边界条件。以0.1为
步长生成一组在[0,1]之间的y和z值。将这组边界条件全部带入。用NDSolve来解。
代码如下:
eqs = {D[uz[y, z], z] + D[uy[y, z], z] == 0,
D[p[y, z], z] == D[uz[y, z], {y, 2}] + D[uz[y, z], {z, 2}],
D[p[y, z], y] == D[uy[y, z], {z, 2}] + D[uy[y, z], {y, 2}]};
fy = Table[i^2, {i, 0, 1, 0.1}];
fz = Sin[2 Pi fy];
bc1 = Table[uy[fy[[i]], fz[[i]]+1] == 0, {i, 10}];
bc2 = Table[uz[fy[[i]], fz[[i]]+1] == 0, {i, 10}]; bc3 =
Table[uy[fy[[i]], fz[[i]]] == 0, {i, 10}];
bc4 = Table[uz[fy[[i]], fz[[i]]] == 0, {i, 10}];
BC = Join[bc1, bc2, bc3,
bc4, {p[0, 0] == 2, p[0, 1] == 2, p[1, 0] == 1, p[1, 1] == 1}];
sol = NDSolve[{eqs, BC}, {p, uy, uz}, {y, 0, 1},
{z, -1, 1}];
Plot3D[Evaluate[p[y, z] /. sol[[1, 1]]], {y, 0, 1}, {z, -1, 1},
PlotRange -> All, PlotLabel -> p[y, z], AxesLabel -> Automatic]
Plot3D[Evaluate[uy[y, z] /. sol[[1, 2]]], {y, 0, 1}, {z, -1, 1},
PlotRange -> All, PlotLabel -> uy[y, z], AxesLabel -> Automatic]
Plot3D[Evaluate[uz[y, z] /. sol[[1, 3]]], {y, 0, 1}, {z, -1, 1},
PlotRange -> All, PlotLabel -> uz[y, z], AxesLabel -> Automatic]
现在遇到的问题是。求解时老是会说边界条件有多余。但是我不敢随便删除边界条件啊。
刚学习mma。所有的命令自己查文档得来的。真心累惨了。请各位指导一下
2016年01月27日 07点01分 4
level 9
这哪是边界条件,y连续变化全场的解都有了
2016年01月27日 09点01分 5
[哈哈]有道理。
2016年01月27日 11点01分
@stereohomology 具体的不清楚。同学学计算流体力学遇到这个问题了。
2016年01月27日 12点01分
1