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

#1楼 票数:1 已采纳

根据pdepe文档 ,求解器的初始条件函数具有以下语法:

u = icFun(x);

在列向量u返回指定x的PDE初始值。 因此,只有当PDE是具有M空间网格点的N未知数的系统时,初始条件才会是N x 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对数据的interp1

#2楼 票数:1

u使用“线法”样式在每个网格上定义不同条件比使用pdepe更容易

MOL还可以更灵活地用于诸如3D问题之类的不同情况下:))

  ask by Fehaid translate from so

未解决问题?本站智能推荐:

1回复

如何通过ode45的解决方案成为pdepe中的初始条件

我正在使用pdepe解决二阶PDE。 我问题的最初条件是使用ode45解决的二阶ODE的解决ode45 。 我如何通过ode45解决方案作为我在pdepe初始条件?
1回复

如何将函数传递给pdepe初始条件函数

我已经使用曲线拟合工具箱根据点集创建了函数。 我使用了生成代码函数和称为createFit(a,b)生成函数,其中a和b是用于插值的点集。 结果, createFit返回我的内插函数。 现在,我想将此函数用作PDE方程的u0 (初始条件)(我正在使用pdepe求解PDE)。 为此,在需
1回复

MATLABLSIM初始条件

令x(0)= 0且u(t)= 2,则t> =0。使用lsim命令获得0 <= t <= 20时y(t)的图。 我的sys函数已准备就绪,但无法在上述问题中设置初始值。 我怎样才能做到这一点? 这是我的代码:
1回复

可以通过Simulink中的信号设置状态空间矩阵的初始条件

我想通过使用信号“从-开始到信号块”在simulink中提供状态空间矩阵块中的初始条件。 我正在尝试使用信号块,但最后会弹出一些错误,并说用作初始条件的信号变量都是未定义的变量。 换句话说,存在“未定义的函数或变量”。 任何帮助表示赞赏,谢谢
1回复

将Matlab功能块的初始条件定义为功能块中的初始条件

我已经在matlab s-function空间中定义了'my sys' ,如下所示: 然后将系统状态的初始条件(dx0)放在s函数参数空间中。 S功能参数块 现在,我已经在matlab function block定义my sys ,但是没有像s功能块这样的东西可以将我的初始(dx0)
1回复

使用parfor扫描一组ODE的初始条件

我目前正在尝试使用parfor来扫描由ode45解决的一组微分方程的一系列初始条件。 使用两个嵌套的for循环,代码可以正常工作,但是我希望parfor可以使过程更高效。 不幸的是,我遇到了一个问题,即求解器能够求解代表一系列变量的初始条件的矩阵中的一种组合,但是其他组合似乎将其初始值全部设
1回复

MATLAB:如何在dsolve的初始条件中使用循环变量?

在MATLAB中,我试图构建一个循环,该循环在每次迭代中使用不同的初始条件调用dsolve。 为此,我构建了以下循环: 它可以在第一次迭代中工作,但在第二次迭代中会失败,并出现以下错误: 对于我尝试过的所有初始条件,该命令都在循环外运行。 在循环内部,第一个迭代有效,而下一个总是失败
2回复

在Matlab功能块(simulink)中设置初始条件

我目前正在尝试学习更大项目的基础,该项目将大量使用simulink。 现在,我想编写自己的simulink块并提供反馈。 这意味着输入之一也是输出(它们之间有一个“内存”块,以确保一切正常!)。 我的代码看起来像 正如我所说,“输入”链接到“输出”。 不幸的是,需要设置一个初始值,