我想求解扩散方程,即 ,边界条件为f(0) = f(1) = 0,初始条件为f是集中在一些小的 boxcar 函数大小为d \ll 1的区域。单位被缩放,以使扩散常数等于一。然后我想使用得到的解决方案来计算形式 \int dt \int dx F(f(x), f'(x)) 的积分, 其中F是某个函数(它实际上是f中的二次函数,带有一些x -相关系数,如果这有任何区别)。
我尝试了两种不同的方法来做到这一点。首先是在傅里叶空间中解析求解扩散方程,然后将我的积分也写在傅里叶空间中并进行数值计算。第二个是数值求解扩散方程(我尝试了显式和隐式方法以及著名的 Crank-Nicolson 方法)。
在所有方法中,我最终都会遇到同样的问题:的初始条件非常集中,这意味着我需要一个非常小的空间和时间离散化(对应于在 F 空间解决方案中考虑非常大的傅里叶模式)。另一方面,由于我还需要长时间求解方程(计算积分),所以我还需要考虑长时间的解。傅立叶空间方法并不快,因为我实际上需要以数字方式计算三个积分(两个傅立叶和,内核是从积分计算的)。这使我的计算非常缓慢。
有没有更好的方法来做我刚才描述的事情?由于扩散方程非常简单,我觉得不能更快地做到这一点很愚蠢。我一直在考虑实现某种自适应网格,将其集中到小时间并接近初始条件,但这似乎是一件复杂的事情,要解决这样一个简单的问题。