L 形域上特征值问题的 Matlab 代码

问题描述 投票:0回答:1

我有一个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));

当我多次运行此代码时,我得到了两个不同的图像 First image Second image 我期望得到相同的结果,我需要这个代码来完成特征值问题的任务。 我不知道原因,有人能帮我吗? 非常感谢。

我尝试访问所有功能并检查所有输入以确保一切正常。 我期望得到相同的图像和特征值列表。 在我的任务中,我试图获得特征值问题的近似解及其近似对应的特征值。

matlab numerical-methods eigenvalue pde
1个回答
0
投票

如果对特征向量进行归一化并根据特征值对它们进行排序,则应该在绘制数据的方向和大小方面获得一致的结果。

试试这个代码:

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));
© www.soinside.com 2019 - 2024. All rights reserved.