如何控制PDE工具箱解决抛物方程的时间?

3个观点(过去30天)
我正在解决一个一维地下水流动方程与时间相关的强迫使用PDE工具箱。我设法输入时间相关的强迫(这是一个矢量的数据值在特定的时间)到PDE工具箱使用以下函数:
函数F = fcoeff(t)
W = importdata(“Rainfall_daily.mat”);%强迫
元=长度(W);
tW = 0:nt-1;强迫数据可用的时间的%值
W_intrp = interp1(tW,W,t,“线性”);的插值值
工具箱使用
disp ([t, W_intrp])
f = W_intrp;
但是,PDE工具箱在向量“W”中遗漏了一些数据点,因为它有时需要太大的时间步长。这在我要求它绘制结果的时间值时不会产生正确的结果。这就是为什么我想强迫PDE工具箱在我指定的时间值解抛物线型PDE。这也将帮助我避免在上述函数中使用interp1。
谢谢,Abrar

接受的答案

比尔•格林
比尔•格林 2014年3月4日
恐怕我没能运行你的例子。我相信你的fcoeff函数有一个错误。
我确实看了一下Rainfall_daily。垫文件。如果我的假设是正确的第一列是某种时间度量,第二列是函数值,那么这个函数看起来是非常不连续的。
PDE工具箱抛物线函数使用的ODE求解器有一个选项MaxStep,该选项允许您指定求解过程中使用的最大步长。通过将此设置为数据delta_time的一小部分,可能会改善您得到的解决方案。
不幸的是,在不编辑PDE工具箱抛物线函数的情况下,没有简单的方法可以做到这一点。如果您编辑这个函数(我建议首先制作原始函数的副本),您将看到ode15s函数被调用的位置以及ode15s的其他选项被设置的位置。添加MaxStep选项应该很简单。我认为这个改变会导致抛物线函数执行得更慢,所以我建议你在完成这个特殊的例子时删除这个改变。
好运!
比尔

更多答案(1)

比尔•格林
比尔•格林 2014年2月12日
在我要求它绘制结果时,这不会产生正确的结果
那么,为什么不请求w向量中每一点的结果呢?
您还可以尝试为抛物线函数设置较小的rtol和atol可选输入参数值。
无论如何,您仍然需要interp1()函数来执行插值,因为函数ode15s(抛物线()使用的ODE求解器)将在初始时间和最终时间之间的任意时间调用您的函数。
比尔
3评论
Abrar哈比卜
Abrar哈比卜 2014年2月28日
编辑:Abrar哈比卜 2014年3月1日
谢谢你的回复Bill,很抱歉回复晚了。
我一直在处理atol和rtol值,这有助于减少时间步长值(显然),从而考虑到大多数降雨事件,然而,正如我前面提到的,由于fcoeff函数的插值,这给我的系统带来了不准确性,额外的降雨被考虑在内。因此,在尝试使用fcoeff函数来减少这种不准确性之后,我想我又回到了原点,我认为这个问题的解决方案是指定PDE工具执行计算的时间(如果可能的话)。
除了粘贴在第一篇文章中的fcoeff之外,我还附上了PDE模型和一个函数,模型使用这个函数和我使用的降雨数据文件。
谢谢你的努力,阿巴拉

登录发表评论。

社区寻宝

在MATLAB中央找到宝藏,并发现社区可以如何帮助你!

开始狩猎!