Principal stress values and directions using .eigs

20 views (last 30 days)
Hi all, I am using eigs to find principal stress values and their directions from the stress matrix which looks as follow: S=[element_stress(1) element_stress(3) 0; element_stress(3) element_stress(2) 0; 0 0 0]; Depending upon the sign of the matrix components the eigen vector should point in different directions. but when S(1,1) is positive or negative and the rest of the matrix is zero, I get the same eigen vector.When I plot the eigen values of the above matrix along the components of eigen vectors using quiver command, they point to the same direction whether S(1,1) is positive or negative.

Answers (2)

Andrew Newell
Andrew Newell on 17 Jul 2011
You speak of the eigenvector as if there is only one for your system. Aren't you getting three? Since all your nonzero stresses are in the XY plane, one of your eigenvectors is always [0; 0; 1]. The other two should vary. Here is an example:
M2 = eye(3); M2(1:2,1:2) = [1 2; 3 4];
[V, D] = eigs(M2)
V =
-0.4160 0 -0.8246
-0.9094 0 0.5658
0 1.0000 0
D =
5.3723 0 0
0 1.0000 0
0 0 -0.3723
  1 Comment
Muhammad Abdullah
Muhammad Abdullah on 17 Jul 2011
You are right that my stresses are in xy-plane. Therefore the M2(3,3) should be zero and unfortunately you have made it equal to 1. I am mainly interested in plotting the first eigen vector.Please try following two cases and you will see that for both cases you get the same first eigen vector:
case1=[0.3645 -0.6874 0;-0.6874 -2.1503 0;0 0 0]
case2=[-0.3645 0.6874 0;0.6874 2.1503 0;0 0 0]

Sign in to comment.


Walter Roberson
Walter Roberson on 17 Jul 2011
Is there a particular reason you are using eigs() on a small full vector? That is the opposite of the condition that eigs() is recommended for.
With a test matrix,
k = zeros(3,3);
k(1,1)=5;
[v,d] = eigs(k)
k(1,1)=-5;
[v,d] = eigs(k)
I do get the same eigenvector for the two cases. If I use eig() instead of eigs() then both cases return the same first column but the second and third columns are exchanged. The second and third columns correspond to the twin eigenvalues of 0, and since there is no inherent sorting order between equal values, neither order can be said to be more correct. eig() does not return a different first column (corresponding to the first eigenvalue) for the two cases, which suggests to me that your assertion about the sign of the vectors is incorrect.
  2 Comments
Muhammad Abdullah
Muhammad Abdullah on 17 Jul 2011
Well I haven't said anything about eig().I am using eigs and if my stress changes its the direction by 180 degrees, that is if it becomes compressive from tensile or vice versa, I should get a rotation of 180 degrees in the first eigen vector as well. Unfortunately I am not getting that so far.If you have a suggestion for it do provide it to me.
Walter Roberson
Walter Roberson on 17 Jul 2011
True you did not say anything about eig(), but if eig() and eigs() both give the same eigenvectors (up to ordering0, then either _you_ are wrong about what the eigenvectors must be, or else MATLAB's fundamental eigenvalue and eigenvector tool, eig(), would have to be wrong in a way that surely would have been noticed before.
Your requirement that the stress changes direction is equivalent to a requirement that the eigenvalues are non-negative. There is no such mathematical requirement. See the description at http://en.wikipedia.org/wiki/Eigenvalues_and_eigenvectors .
I would suggest that instead of fighting with eigs() to get it to do something that it was never mathematically designed to do, that you test the sign of the eigenvalues and for the values less than 0, you negate the eigenvalue and each component of the corresponding eigenvector.

Sign in to comment.

Categories

Find more on Linear Algebra in Help Center and File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!