c系数specifyCoefficients
c系数概述
本节介绍如何写系数c
在方程中
本主题适用于在模型中使用包含系数的推荐工作流specifyCoefficients
.
对于2-D系统,c
张量是4吗N2年代up>元素。对于3-D系统,c
张量是9吗N2年代up>元素。有关张量元素的定义,请参见<一个href="//www.tatmou.com/de/de/help/pde/ug/c-coefficient-for-systems-for-specifycoefficients.html" class="intrnllnk">c张量元的定义一个>.N是方程的数量,看到了吗<一个href="//www.tatmou.com/de/de/help/pde/ug/equations-you-can-solve.html" class="a">可以使用PDE工具箱解决的方程一个>.
写出系数c
用于包含在PDE模型中specifyCoefficients
,给c
作为下列任何一种:
如果
c
是常数,给出一个列向量表示张量中的元素。如果
c
不是常量,给出一个函数句柄。函数必须符合这个形式ccoeffunction(位置、状态)
solvepde
或solvepdeeig
通过位置
而且状态
结构ccoeffunction
.函数必须返回一个大小相同的矩阵N1 -Nr,地点:N1是向量的长度
c
系数。有几个可能的值N1、详细在<一个href="//www.tatmou.com/de/de/help/pde/ug/c-coefficient-for-systems-for-specifycoefficients.html" class="intrnllnk">一些c向量可以很短一个>.对于二维几何,<年代pan class="inlineequation">1≤N1≤4N2年代up>,对于三维几何,<年代pan class="inlineequation">1≤N1≤9N2年代up>.Nr是求解器经过的位置中的点数。Nr等于的长度
location.x
或其他位置
字段。函数应该求值c
在这些点上。
c张量元的定义
对于二维系统,表示法<年代pan class="inlineequation"> 代表一个N-by-1矩阵带有一个(我1)分
对于三维系统,符号<年代pan class="inlineequation"> 代表一个N-by-1矩阵带有一个(我1)分
所有代表c
系数开始于对矩阵张量的“扁平化”。对于2-D系统,N——- - - - - -N-乘2乘2张量趋于2N2N矩阵,其中矩阵在逻辑上是N——- - - - - -N2 × 2块的矩阵。
对于3-D系统,N——- - - - - -N-by-3 by-3张量趋于3N3N矩阵,其中矩阵在逻辑上是N——- - - - - -N3 × 3块的矩阵。
这些矩阵进一步被平化为列向量。年代trong>首先,N——- - - - - -N2 × 2和3 × 3块的矩阵转换为2 × 2和3 × 3块的“向量”。然后以通常的列方式将这些块转换成向量。
系数向量c
与张量有关<年代trong class="emphasis bold">c年代trong>如下。对于2-D系统,
系数c(我,j,k,l)在一排<年代pan class="inlineequation">(4N(j-1) + 4我+ 2l+k(6)年代pan>向量的c
.
对于3-D系统,
系数c(我,j,k,l)在一排<年代pan class="inlineequation">(9N(j-1) + 9我+ 3l+k- 12)年代pan>向量的c
.
一些c向量可以很短
通常,你的张量<年代trong class="emphasis bold">c年代trong>具有结构,如对称或块对角线。在许多情况下,您可以表示<年代trong class="emphasis bold">c年代trong>用一个比4更小的向量N2年代up>2-D或9的组件N2年代up>3d组件。下面几节给出了可能性。
二维系统
标量c,二维系统。年代trong>软件解释一个标量c作为一个对角矩阵,有c(我,我, 1, 1)和c(我,我(2,2)等于这个标量,其他元素都是0。
二元列向量c,二维系统。年代trong>该软件解释一个两元素列向量c作为一个对角矩阵,有c(我,我, 1, 1)和c(我,我,2,2)为两项,所有其他项为0。
三维列向量c,二维系统。年代trong>该软件解释一个三元素列向量c作为对称块对角矩阵,具有c(我,我, 1, 1) =c(1),c(我,我、2、2)=c(3)c(我,我, 1, 2) =c(我,我、2、1)=c(2)。
四元列向量c,二维系统。年代trong>该软件解释一个四元素列向量c作为一个块对角矩阵。
n元素列向量c,二维系统。年代trong>该软件解释一个N-元列向量c作为一个对角矩阵。
谨慎年代trong>
如果N= 2,3或4时,2-、3-或4元素列向量形式优先于N有效的形式。例如,如果N= 3,得到ac形式的矩阵
您不能使用N-元素形式c.相反,你必须使用2N有效的形式。如果你给予c作为向量(c1, c2, c3)
,软件进行解释c
作为三元素形式:
相反,使用2N元形式(c1、c1、c2、c2、c3; c3)
.
2n元列向量c,二维系统。年代trong>软件解释一个2N-元列向量c作为一个对角矩阵。
谨慎年代trong>
如果N= 2时,4元形式优先于2N有效的形式。例如,如果你c矩阵是
你不能给予c作为(c1, c2, c3, c4)
,因为软件将这个向量解释为4元形式
相反,使用3N元形式[c1; 0, c2, c3; 0; c4)
或者4N元形式(c1、0、0;c2, c3; 0; 0; c4)
.
3n元素列向量c,二维系统。年代trong>软件解释一个3N-元列向量c作为一个对称块对角矩阵。
系数c(我,j,k,l)在一排<年代pan class="inlineequation">(3我+k+l(4)年代pan>向量的c
.
4n元素列向量c,二维系统。年代trong>软件解释一个4N-元列向量c作为一个块对角矩阵。
系数c(我,j,k,l)在一排<年代pan class="inlineequation">(4我+ 2l+k(6)年代pan>向量的c
.
2N(2N+1)/2元列向量c,二维系统。年代trong>软件解释一个2N(2N+1)/2元列向量c作为一个对称矩阵。在下图中,•表示该条目是对称的。
系数c(我,j,k,l),我<j,在行中<年代pan class="inlineequation">(2j2年代up>- 3j+ 4我+ 2l+k(5)年代pan>向量的c
.为我=j,系数c(我,j,k,l)在一排<年代pan class="inlineequation">(2我2年代up>+我+l+k(4)年代pan>向量的c
.
4 n<年代up>2年代up>元素列向量c,二维系统。年代trong>软件解释一个4N2年代up>-元列向量c作为一个矩阵。
系数c(我,j,k,l)在一排<年代pan class="inlineequation">(4N(j-1) + 4我+ 2l+k(6)年代pan>向量的c
.
三维系统
标量c,三维系统。年代trong>软件解释一个标量c作为一个对角矩阵,有c(我,我, 1, 1),c(我,我2 2)c(我,我(3,3)等于这个标量,其他元素都是0。
三元素列向量c,三维系统。年代trong>该软件解释一个三元素列向量c作为一个对角矩阵,有c(我,我, 1, 1),c(我,我2 2)c(我,我,3,3)为三个元素,其他所有元素为0。
六元列向量c,三维系统。年代trong>该软件解释一个六元素列向量c作为对称块对角矩阵,具有
c(我,我, 1, 1) =c(1)
c(我,我、2、2)=c(3)
c(我,我, 1, 2) =c(我,我、2、1)=c(2)
c(我,我, 1, 3) =c(我,我3) = 1c(4)
c(我,我、2、3)=c(我,我、3、2)=c(5)
c(我,我、3、3)=c(6)。
在下图中,•表示该条目是对称的。
九元素列向量c,三维系统。年代trong>该软件解释一个九元素列向量c作为一个块对角矩阵。
n元素列向量c,三维系统。年代trong>该软件解释一个N-元列向量c作为一个对角矩阵。
谨慎年代trong>
如果N= 3、6或9时,3-、6-或9元素列向量形式优先于N有效的形式。例如,如果N= 3,得到ac形式的矩阵
您不能使用N-元素形式c.如果你给予c作为向量(c1, c2, c3)
,软件进行解释c
作为三元素形式:
相反,请使用以下形式之一:
6N-元素形式-
[c1; 0; c1 0, 0, c1, c2, 0; c2; 0; 0; c2, c3; 0; c3; 0; 0; c3)
9N-元素形式-
(c1, 0, 0, 0, c1, 0, 0, 0; c1, c2, 0, 0, 0; c2, 0, 0, 0; c2, c3, 0, 0, 0; c3, 0, 0, 0; c3)
3n元素列向量c,三维系统。年代trong>软件解释一个3N-元列向量c作为一个对角矩阵。
谨慎年代trong>
如果N= 3时,9元素形式优先于3N有效的形式。例如,如果你c矩阵是
你不能给予c作为[c1, c2, c3, c4、c5、c6, c7、c8;这些
,因为软件会将这个向量解释为9元形式
相反,请使用以下形式之一:
6N-元素形式-
[c1; 0; c2 0; 0; c3, c4; 0; c5; 0; 0; c6, c7; 0; c8; 0; 0;这些
9N-元素形式-
(c1, 0, 0, 0; c2 0, 0, 0; c3, c4, 0, 0, 0; c5, 0, 0, 0; c6, c7; 0, 0, 0; c8, 0, 0, 0;这些
6n元素列向量c,三维系统。年代trong>该软件解释一个6N-元列向量c作为一个对称块对角矩阵。在下图中,•表示该条目是对称的。
系数c(我,j,k,l)在一排<年代pan class="inlineequation">(6我+k+ 1/2l(l- 1) - 6)年代pan>向量的c
.
9n元素列向量c,三维系统。年代trong>该软件解释一个9N-元列向量c作为一个块对角矩阵。
系数c(我,j,k,l)在一排<年代pan class="inlineequation">(9我+ 3l+k- 12)年代pan>向量的c
.
3N(3N+1)/2元列向量c,三维系统。年代trong>软件解释一个3N(3N+1)/2元列向量c作为一个对称矩阵。在下图中,•表示该条目是对称的。
系数c(我,j,k,l),我<j,在行中<年代pan class="inlineequation">(9 (j1) (j-2)/2 + 6(j-1) + 9我+ 3l+k- 12)年代pan>向量的c
.为我=j,系数c(我,j,k,l)在一排<年代pan class="inlineequation">(9 (我1) (我-2)/2 + 15(我-1) + 1/2l(l1) +k)年代pan>向量的c
.
9 n<年代up>2年代up>-元素列向量c,三维系统。年代trong>该软件解释一个9N2年代up>-元列向量c作为一个矩阵。
系数c(我,j,k,l)在一排<年代pan class="inlineequation">(9N(j-1) + 9我+ 3l+k- 12)年代pan>向量的c
.
函数形式
如果你的c
系数不是常数,用函数的形式表示
Ccoeff = ccofunction(位置,状态)
将系数传递给specifyCoefficients
作为函数句柄,例如
specifyCoefficients(模型,<年代pan style="color:#A020F0">“c”年代pan>@ccoeffunction,<年代pan style="color:#0000FF">...年代pan>)年代pan>
solvepde
或solvepdeeig
中的数据进行计算和填充位置
而且状态
构造数组并将此数据传递给函数。您可以定义函数,使其输出依赖于此数据。你可以用任何名字来代替位置
而且状态
,但函数必须恰好有两个参数。要在函数中使用附加参数,请将(接受附加参数的)函数包装为仅接受位置
而且状态
参数。例如:
ccoeff =<年代pan style="color:#0000FF">...年代pan>@(位置、状态)myfunWithAdditionalArgs(位置、状态、__arg1最长<年代pan style="color:#0000FF">...年代pan>)年代pan>specifyCoefficients(模型,<年代pan style="color:#A020F0">“c”年代pan>ccoeff,<年代pan style="color:#0000FF">...年代pan>
位置
是一个包含以下字段的结构:location.x
location.y
location.z
location.subdomain
的字段
x
,y
,z
代表了x-,y- - - - - -,z-你的函数计算系数值的点的坐标。的子域名
field表示子域编号,目前仅适用于2-D模型。位置字段是行向量。状态
是一个包含以下字段的结构:state.u
state.ux
state.uy
state.uz
state.time
的
state.u
字段表示解决方案的当前值u.的state.ux
,state.uy
,state.uz
域是解的偏导数(∂u/∂x,∂u/∂y,和∂u/∂z),在位置结构的相应点。解和梯度估计是N——- - - - - -Nr矩阵。的state.time
对于依赖时间的模型,字段是表示时间的标量。
你的函数必须返回一个大小的矩阵N1 -Nr,地点:
N1是传递给求解器的系数数。有几个可能的值N1、详细在<一个href="//www.tatmou.com/de/de/help/pde/ug/c-coefficient-for-systems-for-specifycoefficients.html" class="intrnllnk">一些c向量可以很短一个>.对于二维几何,<年代pan class="inlineequation">1≤N1≤4N2年代up>,对于三维几何,<年代pan class="inlineequation">1≤N1≤9N2年代up>.
Nr是求解器经过的位置中的点数。Nr等于的长度
location.x
或其他位置
字段。函数应该求值c
在这些点上。
例如,假设<年代pan class="inlineequation">N= 3年代pan>,你就得到了二维几何。假设你的c
矩阵是这样的
其中未列出的元素为零。在这里<年代pan class="inlineequation">年代1年代ub>(x,y)年代pan>子域1为5,子域2为10。
这c
是一个对称的块对角矩阵,每个块具有不同的系数。这是很自然的表示c
作为一个<一个href="//www.tatmou.com/de/de/help/pde/ug/c-coefficient-for-systems-for-specifycoefficients.html" class="intrnllnk">3n元素列向量c,二维系统一个>:
对于这种形式,下面的函数是合适的。
函数年代pan>Cmatrix = ccofunction (location,state) n1 = 9;Nr = number (location.x);Cmatrix = 0 (n1,nr);Cmatrix (1,:) = ones(1,nr);Cmatrix (2,:) = 2*ones(1,nr);Cmatrix (3,:) = 8*ones(1,nr);Cmatrix (4,:) = 1+location.x。^2 + location.y.^2;Cmatrix (5,:) = state.u(2,:)。/(1 + state.u(1,:)。^2 + state.u(3,:).^2);Cmatrix (6,:) = Cmatrix (4,:); cmatrix(7,:) = 5*location.subdomain; cmatrix(8,:) = -ones(1,nr); cmatrix(9,:) = cmatrix(7,:);
将此函数包含为您的c
系数,传递函数句柄@ccoeffunction
:
specifyCoefficients(模型,<年代pan style="color:#A020F0">“c”年代pan>@ccoeffunction,<年代pan style="color:#0000FF">...年代pan>