提问人:KHTN 提问时间:10/28/2023 更新时间:10/31/2023 访问量:34
L形域特征值问题的Matlab代码
Matlab code for an eigenvalue problem on a L-shape domain
问:
我有一个Matlab代码代码
model = createpde();
geometryFromEdges(model,@lshapeg);
applyBoundaryCondition(model,"dirichlet", ...
"Edge",1:model.Geometry.NumEdges, ...
"u",0);
specifyCoefficients(model,"m",0,"d",1,"c",1,"a",0,"f",0);
r = [0 100];
generateMesh(model,"Hmax",0.05);
results = solvepdeeig(model,r);
length(results.Eigenvalues)
u = results.Eigenvectors;
pdeplot(model,"XYData",u(:,1),"ZData",u(:,1));
当我多次运行此代码时,我得到了两个不同的图像 第一张图片 第二张图片 我希望得到相同的结果,我需要这段代码来执行特征值问题的任务。 我不知道原因,有人可以帮我吗? 非常感谢。
我尝试访问所有功能并检查任何输入以确保一切正常。 我期望得到相同的图像和特征值列表。 在我的任务中,我试图获得特征值问题的近似解及其近似的相应特征值。
答:
0赞
Cem Polat
10/31/2023
#1
如果对特征向量进行归一化并根据特征值对其进行排序,则应在绘制数据的方向和大小方面获得一致的结果。
试试这个代码:
model = createpde();
geometryFromEdges(model, @lshapeg);
applyBoundaryCondition(model, "dirichlet", ...
"Edge", 1:model.Geometry.NumEdges, ...
"u", 0);
specifyCoefficients(model, "m", 0, "d", 1, "c", 1, "a", 0, "f", 0);
r = [0 100];
generateMesh(model, "Hmax", 0.05);
results = solvepdeeig(model, r);
% Sort the eigenvalues and eigenvectors
[eigenvalues, idx] = sort(results.Eigenvalues);
eigenvectors = results.Eigenvectors(:, idx);
% Normalize the eigenvectors
normalized_eigenvectors = normalize(eigenvectors);
% Plot the first eigenvector
pdeplot(model, "XYData", normalized_eigenvectors(:, 1), "ZData", normalized_eigenvectors(:, 1));
评论
0赞
KHTN
11/1/2023
非常感谢,我尝试了代码。但它仍然会产生两个图像,一个是向上的,另一个是向下的。
评论