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