我会尽力以更好的方式解释我的怀疑:
我试图用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有依赖关系的变量系数?
答案 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文本文件。