如何在PDE工具箱中使用变量系数来求解抛物型方程(Matlab)

时间:2016-06-16 16:46:07

标签: matlab pde

我会尽力以更好的方式解释我的怀疑:

我试图用PDE Toolbox(Matlab)解决反应扩散方程,获得解决方案(u)的语法是:

  

抛物线 - 解决抛物线PDE问题

     

该MATLAB函数为标量PDE问题的FEM公式提供了解决方案:   u1 =抛物线(u0,tlist,b,p,e,t,c,a,f,d)

c,a,f,d是抛物线方程的系数:

d(∂u/∂t)−∇⋅(c∇u)+au=f,

但我想要这个:

u=parabolic(u0,tlist,b,p,e,t,c,@coeffunction,f,d);

u0是初始解决方案,tlist是我记录解决方案的时间的向量数组,b对应于边界条件,(p,e,t)是网格的元素,@ coeffunction是一个函数句柄对应系数" a"。

我的问题是:任何人都知道是否可以指定" a"作为与tlist有依赖关系的变量系数?

1 个答案:

答案 0 :(得分:1)

虽然不是PDE工具箱,但FEATool Matlab FEM toolbox允许输入和求解具有非线性和时间相关系数的偏微分方程。方程和边界表达式可以定义为常量或字符串表达式(包括时间,因变量,导数,空间维度坐标,甚至外部用户定义的Matlab函数)。例如,系数可以定义为

fea.coef = { 'coef1' [] [] 42 ;
             'coef2' [] [] '2*u-ux^2+sin(2*pi*t)' ;
             'coef3' [] [] 'my_fun(t)' };

现在 coef1-coef3 可以在方程和边界条件中自由使用。这个answer显示了一个说明这种方法的传热示例。

在您使用反应扩散方程的情况下,您可以使用Matlab GUI作为对流 - 扩散反应PDE方程预先定义为输入

u*t

作为相应的 R 系数的反应源项。如果您更喜欢使用m-script文件,则可以将GUI模型导出为FEA模型.m文本文件。