Evaluating gradient of eigenvectors.

Suppose I use Matlab's pde toolbox to solve an eigenvalue problem using FEM. Specifically I am using:
result=solvepdeeig(model,[0,10]);
eigenvectors = result.Eigenvectors;
eigenvalues = result.Eigenvalues;
Is there a way of evaluating the gradient of the computed eigenvectors, say using something similar to the
evaluateGradient
function?

 Accepted Answer

Ravi Kumar
Ravi Kumar on 14 Feb 2018
Hi Matt,
The values in eigenvectors are scaled values, with no option to re-scale them or normalize as per choice. Hence, they do not have a physical meaning. So evaluating gradients using them is not suggested.
Can you explain why do you need to take gradients of eigenvectors? I could suggest a workaround depending on your use case.
Regards, Ravi

4 Comments

Hi Ravi
Thanks for the answer. Yes I am aware of this problem. However, suppose I normalise in some way, I would then like to compute the Neumann data on the boundary (for comparison to another numerical method). Any idea how this could be done easily?
Thanks, Matt
Create a new PDEModel with the same systems size as you used for eigenvalue analysis:
newModel = createpde(model.PDESystemSize)
Assign geometry and mesh from your analysis model to this new model:
newModel.Geometry = model.Geometry
newModel.Mesh = model.Mesh
Now create at a new StationaryResults object using the first mode, or any mode that you want, as:
newResult = createPDEResults(newModel,result.Eigenvectors(:,1))
newResult would have gradients in it, also has the method evaluateGradients. In case you are dealing with a system of PDEs, be sure to stack all the components of the specific eigenvector into a single column to pass it createPDEResults.
Hope this helps.
Thanks, I'll try it out. Looks ideal!
Works a treat, thank you very much!

Sign in to comment.

More Answers (0)

Asked:

on 13 Feb 2018

Commented:

on 15 Feb 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!