三维偏微分方程u(x,y,t)
mathematica吧
全部回复
仅看楼主
level 3
解不出来,大家看看我代码哪里有问题?
问题为:
我的代码为:
rst = NDSolve[
{
D[u[x,y,t],t] == D[u[x,y,t],x,x] + D[u[x,y,t],y,y]+u[x,y,t]*(1-u[x,y,t]),
(*边界条件*)
Derivative[1,0,0][u][0,y,t] == 0,
Derivative[1,0,0][u][1,y,t] == 0,
Derivative[0,1,0][u][x,0,t] == 0,
Derivative[0,1,0][u][x,1,t] == 0,
u[x,y,0] == 0.001 (*初始条件为二维脉冲函数,但是不知道怎么写*)
},
u,{x,0,100},{y,0,1},{t,0,1}
]
Plot3D[Evaluate[u[x,y,t]] /. rst /. x->1,y->1,{t,0,10}] (*作某个点的u关于t的变化图*)
错误提示:
NDSolve::bcedge: Boundary condition (u^(1,0,0))[1,y,t]==0 is not specified on a single edge of the boundary of the computational domain.
没看懂这个错误提示 有没有知道哪里错了~
另外,这个问题的纽曼边界条件用MM这么写对吗?初始条件为二维脉冲函数,只有(0,0,0)这个点为1,其余为0,不太好表达~~
谢谢~^--^
2018年02月22日 11点02分 1
level 1
你代码里x和t两个参数的取值范围都搞反个屁了。
那个初始条件在mathematica里正好可以用DiscreteDelta[x,y]来表达(但是仍有问题,见下面评论)。
做一元函数的图应该是Plot;做图部分的Evaluate[]要把整个函数部分框起来。
2018年02月25日 12点02分 7
这次我发现把原帖分开发就不会被白度自动删了。
2018年02月25日 12点02分
level 1
修改后:
rst=NDSolve[{D[u[x,y,t],t]==D[u[x,y,t],x,x]+D[u[x,y,t],y,y]+u[x,y,t]*(1-u[x,y,t]),Derivative[1,0,0][u][0,y,t]==0,Derivative[1,0,0][u][1,y,t]==0,Derivative[0,1,0][u][x,0,t]==0,Derivative[0,1,0][u][x,1,t]==0,u[x,y,0]==DiscreteDelta[x,y]},u,{x,0,1},{y,0,1},{t,0,100}]
Plot[Evaluate[(u[x,y,t]/.rst)/.{x->1,y->1}],{t,0,10}]
但修改后仍有问题,仍然是初始条件和边界条件有冲突。这还需要人为构造初始或边界条件替换原有的。我就答这么多了。
2018年02月25日 12点02分 8
我试过一两个函数不行,还不知什么函数合适,等别人来看看吧。
2018年02月25日 12点02分
也许不用构造函数而有别的办法,不清楚。
2018年02月25日 12点02分
@Wonderlands09 谢谢老哥了~我再想想[哈哈]再次感谢!!
2018年02月26日 03点02分
level 2
不一致的边界条件
有一点很重要,您指定的边界条件要和初始条件及偏微分方程都一致. 若不是这种情况,NDSolve 会发出关于不一致性的警告信息. 这种情况下解可能不满足边界条件,甚至更糟的是可能会出现不稳定性.
2018年02月27日 13点02分 9
都不一致~我从实际背景下考虑了一下,重新试了一下
2018年02月28日 04点02分
level 3
把x,y的范围改为对称的,出现了新的提示。
x,y的范围均为[-1,1],边界条件不变。
若:初始条件改为u(x,y,0)=x+y,则出现正常的图像。
若:初始条件仍然为Delta函数,不会出现bc和ic不一致的提示,但出现这样的提示,且一直显示程序正在运行:
NDSolve::mxsst: Using maximum number of grid points 100 allowed by the MaxPoints or MinStepSize options for independent variable x.
这句话的意思是:使用网格点数超过100?还是啥意思呢~?
(我知道NDSolve解PDE是采用将区域离散的方法的)
2018年02月28日 04点02分 10
我前面说的修改初始条件,是指用一个连续的(也许还是光滑的)函数来近似原有的不连续的初始条件。
2018年02月28日 16点02分
但有可能修改后还和边界条件冲突。
2018年02月28日 16点02分
@Wonderlands09 另外,边界条件和初始条件一致与否是什么意思呀~?
2018年03月01日 06点03分
mathematca在计算微分方程时有时会出这种问题,你方程出错时可以错误点的帮助文档。我现在也说不清。
2018年03月01日 15点03分
level 3
改动后的代码:
——————————————————————————
rst=NDSolve[{
D[u[x,y,t],t]==D[u[x,y,t],x,x]+D[u[x,y,t],y,y]+u[x,y,t]*(1-u[x,y,t]),
(*边界条件和初始条件*)
Derivative[1,0,0][u][-1,y,t]==0,
Derivative[1,0,0][u][1,y,t]==0,
Derivative[0,1,0][u][x,-1,t]==0,
Derivative[0,1,0][u][x,1,t]==0,
u[x,y,0]==DiscreteDelta[x,y]},
u,{x,-1,1},{y,-1,1},{t,0,100}]
Plot[Evaluate[(u[x,y,t]/.rst)/.{x->0.25,y->0.25}],{t,0,10}]
2018年02月28日 05点02分 11
level 2
2018年02月28日 13点02分 13
您这张图是什么情况下的图啊?
2018年03月01日 06点03分
level 1
也许这里有解决办法,也许啦:
https://tieba.baidu.com/p/4126799131
楼主有空可以研究一下。我就不继续跟了。
2018年03月01日 15点03分 15
OK 谢谢您!
2018年03月01日 16点03分
总算是有人看到了嗯……
2018年03月03日 03点03分
level 2
2018年03月01日 16点03分 16
level 2
2018年03月01日 16点03分 17
好的,谢谢您!
2018年03月02日 06点03分
我在看一看~
2018年03月02日 06点03分
1