这个例子说明了如何解决l形区域上拉普拉斯算子的特征值问题。
考虑固定在边界处的膜。 一个地区 在飞机上。它的位移 由特征值问题描述 ,在那里 是拉普拉斯算子和 为标量参数。边界条件为 对所有 .
拉普拉斯算子是自伴负定的,即只有实负特征值 存在有一个最大(负)离散特征值,对应的特征函数 被称为基态.在本例中, 是一个l型区域,与此区域相关联的基态是MATLAB®标志的l型膜。
解决特征值问题的最简单的方法是近似拉普拉斯算子
通过有限差分近似(a钢网)在具有距离的点的正方形网格上hx
在里面
方向和距离hy
在里面
方向。在本例中,近似
用一笔S_h
由围绕中点的九个规则网格点组成
.未知数就是重量
.
信谊u (x, y)EPSA11A10a1_1A01A00a0_1a_11a_10a_1_1信谊hxhy积极的s_h = a_11 * u(x - eps * hx,y + eps * hy)+......(1) x (x,y + y......(a) x + e *h,y + e *h,y + e *h......(x - Eps*hx,y) +......* u(x,y) +......A10 * U(X + EPS * HX,Y)+......a_1_1* u(x - Eps*hx,y - Eps*hy) +......1 . u(x,y - y) + (x,y......(x + y *h,y - y);
使用符号参数EPS
通过权力对此表达的扩展进行分类hx
和hy
. 知道权重后,可以通过设置EPS = 1
.
T =泰勒(S_H,EPS,'命令'7);
使用非零系数
函数以提取具有相同项幂的项的系数EPS
.每个系数都是一个表达式,包含hx
,hy
,以及U
关于
和
. 自从S_h
代表
,的所有其他导数的系数U
必须是零。通过替换所有的导数来提取系数U
除了
和
,以0。代替
和
到1点。这将泰勒展开减少到您想要计算的系数,并导致以下六个线性方程。
C =公式(coeffs(t, Eps,“全部”));方程= subs(C(7),u(x,y)) == 0;eq11 =潜艇(C (6), (diff (u, x) diff (u, y)], [1,0]) = = 0;eq12 =潜艇(C (6), (diff (u, x) diff (u, y)], [0,1]) = = 0;eq21 =潜艇(C (5), (diff (u, x, x) diff (u, x, y), diff (u, y, y)], [1, 0, 0)) = = 1;eq22 =潜艇(C (5), (diff (u, x, x) diff (u, x, y), diff (u, y, y)], [0, 1,0]) = = 0;eq23 =潜艇(C (5), (diff (u, x, x) diff (u, x, y), diff (u, y, y)], [0, 0, 1]) = = 1;
由于有九个未知权重S_h
,通过要求U
是0。
eq31 = summ(c(4),[diff(u,x,x,x),diff(u,x,x,y),diff(u,x,y,y),diff(u,y,y,Y),[1,0,0,0])== 0;eq32 = summ(c(4),[diff(u,x,x,x),diff(u,x,x,y),diff(u,x,y,y),diff(u,y,y,y)],[0,1,0,0])== 0;eq33 = summ(c(4),[diff(u,x,x,x),diff(u,x,x,y),diff(u,x,y,y),diff(u,y,y,y)],[0,0,1,0])== 0;eq34 = summ(c(4),[diff(u,x,x,x),diff(u,x,x,y),diff(u,x,y,y),diff(u,y,y,y),[0,0,0,1])== 0;
解决九个未知权重的由此产生的十个方程。用returnconditions.
找到包括任意参数在内的所金宝搏官方网站有解。
[A11,A10,A1_1,A01,A00,A0_1,A_11,A_10,A_1_1,参数,条件] =......解决([EQ0,EQ11,EQ12,EQ21,EQ22,EQ23,EQ31,EQ32,EQ33,EQ34,EQ34],......[A11,A10,A1_1,A01,A00,A0_1,A_11,A_10,A_1_1],......“ReturnConditions”,真的);展开([A_11,A01,A11;......a_10、a00 a01;......a1_1、a0_1 a_1_1])
ans=
参数
参数=
使用subs
函数以将权重替换为其计算值。
C =简化(潜艇(C));
的表情C(7)
,C(6)
, 和C(4)
包含第0个、第1个和第3个U
消失
[C(7),C(6),C(4)]
ans=
表达方式C(5)
是拉普拉斯式的U
.
C(5)
ans=
因此,通过上面计算的权重值,模具S_h
将拉普拉斯近似到最高阶hx^2
,hy^2
对于任意参数的任何值Z
,条件是Z
被选为有秩序的O (1 / hx ^ 2, 1 / hy ^ 2)
.
尽管解包含一个自由参数Z
,表示C(3)
包含四阶衍生物U
不能由一个合适的选择变成零Z
.另一种选择是将其转换为Laplace操作员的正方形。
信谊D拉普拉斯=@(u)拉普拉斯(u,[x,y]);展开(d*拉普拉斯(拉普拉斯(u)))
ans (x, y) =
挑选不同的衍生品U
在里面C(3)
,并将其系数与相应的项相等。
subs(C(3),[diff(u,x,x,x,x),diff(u,x,x,y,y),diff(u,y,y,y)],[1,0,0])==d
ans=
子(C(3),[差异(u,x,x,x,x),diff(u,x,x,y,y),diff(u,y,y,y,y)],[0,1,0])== 2 * d
ans=
潜艇(C (3), [diff (u, x, x, x, x), diff (u, x, x, y, y), diff (u, y, y, y, y)], [0, 0, 1]) = = d
ans=
因此,你可以选择D = hx^2/12 = hy^2/12
和z=2*d/(hx^2*hy^2)
,暗示hx=hy
和Z = 1 /(6 * HX * HY)
.因此,模版S_h
在方形网格上近似改进的拉普拉斯hx = hy = h
.
信谊Hhx=h;hy=h;d=h^2/12;
取代hx
和hy
通过H
.
C =潜艇(C);
取代Z
通过其价值,h ^ 1 / (6 * 2)
.因为Z
MATLAB®工作区中不存在,您只能以存储在参数
大堆
C =潜艇(C、参数1 / (6 * h ^ 2));
验证公式(1)。
简化(C (3) - d *拉普拉斯(拉普拉斯(u)))
ans (x, y) =
现在,考虑三阶项hx
,hy
.
简化(C(2))
ans=
由于在模板的扩展中没有存在这些条款,因此术语 在(1)中,事实上是有序的 . 考虑模版的四阶项。
系数(简化(C(1)))
ans=
检查这些术语是否可以用LaPlace运算符的另一个电源识别。但是,比较
拉普拉斯(拉普拉斯(拉普拉斯(u)))
ans (x, y) =
说明了表达式的顺序 不能被识别为拉普拉斯算子的三次方的倍数,因为系数不能匹配。
对于有距离的正方形网格H
在相邻栅格点和上述权重选择之间,可以得到:
用这个展开式求解特征值问题的数值方法 . 加上几倍 到特征值方程。
该等式的左侧由模板很好地逼近 . 因此,使用(2),数值特征值 模板的质量令人满意 必须是特征值的近似值 拉普拉斯运营商的
理所当然 ,解决 得到拉普拉斯特征值的一个更好的近似。注意,在二次方程的解中 方形的正确迹象是由要求提供的 对于 .
考虑L形区域 由三个单位正方形组成。
定义区域角点的坐标值。
xmin = 1;xmax = 1;ymin = 1;Ymax = 1;
考虑由奇数组成的正方形网格nx = 2 * nx-1
网格点x
方向和奇数ny = 2 * ny-1
网格点Y
方向。
nx=6;Nx=2*Nx-1;hx=(xmax xmin)/(Nx-1);ny=6;Ny=2*Ny-1;hy=(ymax-ymin)/(Ny-1);
创建一个纽约
——- - - - - -NX.
象征性的矩阵
. 它的条目u (i, j)
代表的值U (xmin + (j - 1)*hx,ymin + (i - 1)*hy)
解决方案的u (x, y)
特征值问题
.
u =符号(“你”,[Ny,Nx]);
边界 对应以下索引:
左边界对应于(i=1:Ny,j=1)
.
下界对应于(i = 1,j = 1:nx)
.
正确的边界对应于(i=1:ny,j=Nx)
和(i=ny:ny,j=nx)
.
上边界对应于(i = ny,j = 1:nx)
和(i=ny,j=nx:nx)
.
U(:,1)= 0;%左边界u(1,:)=0;%下边界U(1:NY,NX)= 0;%右边界,上部u(ny:ny,nx)=0;%右边界,下半部分u (Ny, 1: nx) = 0;%上边界,左边部分nx u(纽约:nx) = 0;%上边界,右部分
有
和
不属于
. 设置相应的矩阵项(i = ny + 1: ny, j = nx + 1: nx)
为零。它们不再扮演任何角色,也将被忽视。
u(ny+1:ny,nx+1:nx)=0;
问题的未知是以下矩阵条目:
U
u =
区域的内部点
与指数相对应
包含未知值的
问题。在向量中收集这些未知数vars.
.
(I, J) =找到(u ~ = 0);var = u (u ~ = 0);
将符号表达式与每个索引(即每个未知)相关联(由本示例的第一部分中导出的模板给出)。
n=长度(vars);Lu=符号(零(n,1));对于k=1:n i = i (k)j = (k);陆(k) = 1/6 * u (i + 1, j - 1) + 2/3 * u (i + 1, j) + 1/6 * u (i + 1, j + 1)......+2/3*u(i,j-1)-10/3*u(i,j)+2/3*u(i,j+1)......+ 1/6 * U(I-1,J-1)+ 2/3 * U(I-1,J)+ 1/6 * U(I-1,J + 1);终止Lu=Lu/hx^2;
因为这个表达式在未知元素中是线性的U
(存储在vars.
),你可以把它看作作用于向量的矩阵vars.
.
S_h =雅可比矩阵(Lu, var);
你可以治疗S_h
作为拉普拉斯算子的矩阵近似。计算其特征向量和特征值。
[V,D]=eig(vpa(S_h));
这三个最大特征值由D的第一个对角元素给出。
[D(1,1),D(2,2),D(3,3)]
ans=
因为对于这个近似,你使用了一个有少量点的网格,只有特征值的前导数字是正确的。
L形区域上拉普拉斯算子的第三高特征值 这是众所周知的。拉普拉斯算子的精确本征函数是 与(确切的)特征值相关联的 . 实际上,使用上面的方程(3),你可以得到拉普拉斯特征值的更好的近似值 从模板特征值 :
μ= D (3)
μ=
lambda = 2 * mu /(Sqrt(1 + mu * hx ^ 2/3)+ 1)
λ=
绘制与第三最高特征值相关的特征。
v = v (:, 3);对于k=1:n u(I(k),J(k)) = v(k);终止u = double(u);冲浪(Xmin:HX:Xmax,Ymin:Hy:Ymax,U');查看(125,30);
当您使用符号矩阵时,不建议毫无推荐地增加网格点数,因为符号计算比使用MATLAB双精度矩阵的数值计算显着慢。该示例的这一部分演示了如何使用稀疏双算法,允许改进数值网格。L形区域
与以前相同的方式设置。通过符号未知数,而不是表示内部点,而是初始化网格值U
并定义
通过将边界点和外部点的值设置为零。而不是定义每个内部点的符号表达,而是将模板计算为jacobian,直接将模板矩阵直接设置为稀疏矩阵。
xmin = 1;xmax = 1;ymin = 1;Ymax = 1;nx = 30;nx = 2 * nx-1;hx =(xmax-xmin)/(nx-1);纽约= 30;ny = 2 * ny-1;hy =(ymax-ymin)/(ny-1); u = ones(Ny,Nx); u(:,1) = 0;%左边界U(1:NY,NX)= 0;%右边界,上部u(ny:ny,nx)=0;%右边界,下半部分u(1,:)=0;%下边界u (Ny, 1: nx) = 0;%上边界,左边部分nx u(纽约:nx) = 0;%上边界,右部分u(ny+1:ny,nx+1:nx)=0;[I,J] =查找(U〜= 0);n =长度(i);s_h =稀疏(n,n);对于k=1:n i = i (k)j = (k);s_h(k,i == i + 1&j == j + 1)= 1/6;S_H(k,i == i + 1&j == j)= 2/3;s_h(k,i == i + 1&j == j-1)= 1/6;s_h(k,i == i&j == j + 1)= 2/3;S_H(k,i == i&j == j)= - 10/3;s_h(k,i == i&j == j-1)= 2/3;s_h(k,i == i-1&j == j + 1)= 1/6;S_H(k,i == i-1&j == j)= 2/3; S_h(k,I==i-1 & J==j-1)= 1/6;终止S_h = S_h. / hx ^ 2;
这里,S_h
是(稀疏)模具矩阵。使用EIG
它处理稀疏矩阵来计算三个最大的特征值。
[V,D]=EIG(S_h,3,“拉”);
这三个最大特征值是D的第一个对角元素。
[D(1,1),D(2,2),D(3,3)]
ans=1×3.-9.6493 -15.1742 -19.7006
D(3,3)
近似准确的特征值
.使用上述方程式(3),推导拉普拉斯特征值的更精确近似值
从模板特征值
.
μ= D (3)
mu=-19.7006
lambda = 2 * mu /(Sqrt(1 + mu * hx ^ 2/3)+ 1)
λ= -19.7393
绘制与第三最高特征值相关的特征。
v = v (:, 3);对于k=1:n u(I(k),J(k)) = v(k);终止surf(xmin:hx:xmax,ymin:hy:ymax,u');视图(125,30);
注意,MATLAB膜
函数通过不同的方法计算拉普拉斯算子的本征函数。
膜(3,NX - 1,8,8);