Fwd: Help with minimization of Eigenvalues
- To: mathgroup at smc.vnet.net
- Subject: [mg87801] Fwd: Help with minimization of Eigenvalues
- From: "Jean-Marc Gulliet" <jeanmarc.gulliet at gmail.com>
- Date: Thu, 17 Apr 2008 06:57:59 -0400 (EDT)
- References: <fu4ll6$sfq$1@smc.vnet.net> <480602EA.8010102@gmail.com>
On Wed, Apr 16, 2008 at 5:43 PM, Dario Bressanini <dario.bressanini at gmail.com> wrote: > > > Thank you very much for your help > > > > > Eig[p_, q_] := Eigenvalues[N@{m, s} /. a -> p /. b -> q] // First > Eig[1, 2] > > Yes, I have tried that before writing to the newsgroup. This seems to work, > however when I call > > > I still get the same error > > > Eigenvalues::gfargs: > Generalized Eigenvalues > arguments accept only matrices with machine real > and complex elements. Moreâ?¦ > > > > > Moreover, though I am not sure to have fully understood what you tried to > achieved, you might be interested in using the function > CharacteristicPolynomial[] to compute the eigenvalues in a symbolic form and > use these results to solve or minimize them. > > I am trying to optimize the parameters of a matrix in order to minimize the > second (or n-th ) eigenvalue. > The matrices in general are of much higher order, say 6x6 or 10x10, and > the eigenvalues cannot in g eneral be computed in symbolic form > unfortunately. Hi Dario, The following definitions make certain that the parameters a and b are passed systematically to both matrices m and s. Indeed, the matrices m and s are defined as functions of a and b, and we force Mathematica to express them in machine-size arithmetic. Also, the function Eig[] is defined to ensure that it will be called only if both arguments are numeric. This is required, actually, to guarantee a correct behavior with FindNimimum[]. Clear[Eig, m, s] m[a_, b_] := N[{{a, b}, {b, -a + 1}}] s[a_, b_] := N[{{1, 0}, {0, 3*a}}] Eig[(a_)?NumericQ, (b_)?NumericQ] := First[Eigenvalues[{m[a, b], s[a, b]}]] Eig[1, 2] FindMinimum[Eig[a, b], {a, 1, 2}, {b, 1, 2}] 1.75831 {0.434259, {a -> 0.434259, b -> 2.14762*10^-10}} Hope this helps, -- Jean-Marc -- Jean-Marc