- #1
member 428835
Hi PF!
Given the quadratic eigenvalue problem ##Q(\lambda) \equiv (\lambda^2 M + \lambda D + K)\vec x = \vec 0## where ##K,D,M## are ##n\times n## matrices, ##\vec x## a ##1\times n## vector, the eigenvalues ##\lambda## must solve ##\det Q(\lambda)=0##.
When computing this, I employ a linearization technique, a simple matrix pencil, outlined page 6 here: http://www.ma.man.ac.uk/~ftisseur/talks/talk_X13.pdf
At the very end of the technique, I have ##n## vectors of length ##1\times 2n##, call these ##\vec \xi_i##. Evidently ##\vec \xi_i = [\vec x_i,\lambda \vec x_i]##, implying ##\vec x_i## is a ##1 \times n ## vector (see hyperlink, it's fairly simple). When I'm solving in Mathematica, once I have each ##\vec \xi_i## I cut it in half, and use an algebra solver, solving for ##\lambda_i## via the equations ##\vec x_i = \lambda_i \vec x_i##. I loop through this for ##i = 1,n##. Most of the time I recover good solutions that output eigenvalues equivalent to ##\det Q(\lambda)=0##. However, occasionally it misses a few, likely because the solver's precision order is too high (remember, its solving ##n## algebraic equations ##\vec x_i = \lambda_i \vec x_i##, which should all be linearly dependent).
To obtain a solution, should I turn down the precision of the solver, or is this ill-advised?
Given the quadratic eigenvalue problem ##Q(\lambda) \equiv (\lambda^2 M + \lambda D + K)\vec x = \vec 0## where ##K,D,M## are ##n\times n## matrices, ##\vec x## a ##1\times n## vector, the eigenvalues ##\lambda## must solve ##\det Q(\lambda)=0##.
When computing this, I employ a linearization technique, a simple matrix pencil, outlined page 6 here: http://www.ma.man.ac.uk/~ftisseur/talks/talk_X13.pdf
At the very end of the technique, I have ##n## vectors of length ##1\times 2n##, call these ##\vec \xi_i##. Evidently ##\vec \xi_i = [\vec x_i,\lambda \vec x_i]##, implying ##\vec x_i## is a ##1 \times n ## vector (see hyperlink, it's fairly simple). When I'm solving in Mathematica, once I have each ##\vec \xi_i## I cut it in half, and use an algebra solver, solving for ##\lambda_i## via the equations ##\vec x_i = \lambda_i \vec x_i##. I loop through this for ##i = 1,n##. Most of the time I recover good solutions that output eigenvalues equivalent to ##\det Q(\lambda)=0##. However, occasionally it misses a few, likely because the solver's precision order is too high (remember, its solving ##n## algebraic equations ##\vec x_i = \lambda_i \vec x_i##, which should all be linearly dependent).
To obtain a solution, should I turn down the precision of the solver, or is this ill-advised?
Last edited by a moderator: