我使用matlab求解器pdepe解决了一个PDE问题。初始条件是ODE的解决方案,我在不同的m.file中解决了这个问题。现在,我有一个大小为NxM的矩阵形式的ODE解决方案。我如何使用它作为我的IC在pdepe?这甚至可能吗?当我使用for loop
时,pdepe只将最后一次迭代作为初始条件。任何帮助表示赞赏。
答案 0 :(得分:1)
根据pdepe
documentation,解算器的初始条件函数具有以下语法:
u = icFun(x);
其中在列向量x
中返回指定值u
的PDE的初始值。
因此,初始条件是N x M
矩阵的唯一时间是当PDE是具有N
空间网格点的M
未知数的系统时。
因此,可以使用N x M
矩阵来填充初始条件,但是需要有一些映射将给定列与特定值x
相关联。例如,在调用pdepe
的main函数中,可能有
% icData is the NxM matrix of data
% xMesh is an 1xM row vector that has the spatial value for each column of icData
icFun = @(x) icData(:,x==xMesh);
这种方法的唯一缺点是初始条件的网格,因此pdepe
解决方案的网格受初始数据的约束。这可以通过使用插值方案来克服:
% icData is the NxM matrix of data
% xMesh is an 1xM row vector that has the spatial value for each column of icData
icFun = @(x) interp1(xMesh,icData',x,'pchip')';
其中存在转置符以符合interp1
对数据的解释。
答案 1 :(得分:1)
你更容易使用' line&line;样式在每个网格上定义不同的条件而不是使用pdepe
MOL在3D问题等不同情况下使用也更灵活 只是说:))