如何在“pdepe”中使用NxM矩阵作为我的初始条件

时间:2015-01-14 18:42:00

标签: matlab

我使用matlab求解器pdepe解决了一个PDE问题。初始条件是ODE的解决方案,我在不同的m.file中解决了这个问题。现在,我有一个大小为NxM的矩阵形式的ODE解决方案。我如何使用它作为我的IC在pdepe?这甚至可能吗?当我使用for loop时,pdepe只将最后一次迭代作为初始条件。任何帮助表示赞赏。

2 个答案:

答案 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问题等不同情况下使用也更灵活 只是说:))