3
$\begingroup$

I have a symbolic, 2-parameter, 8x8 matrix to solve, but Mathematica takes something like 20 minutes to solve it and returns a very large output containing expressions of the form Root[#1^2 #4^3 + ... #2^6+...].

The matrix is :

F = 
  {{0, 1/9 (2 j + 3 q), 0, 1/9 (2 j + 7 q), 0, -(2/9) (2 j + 3 q), 0, 
     -(2/9)(2 j + 3 q)}, 
   {1/9 (-2 j - 3 q), 0, 1/9 (-2 j + q), 0, 2/9 (2 j + q), 0, 2/9 (2 j + q), 0}, 
   {0, (4 q)/9, 0, -((4 q)/9), 0, 0, 0, 0}, 
   {(4 q)/9, 0, -((4 q)/9), 0, 0, 0, 0, 0}, 
   {(8 (j - q))/27, -(2/27) (2 j + 13 q), (8 (j - q))/27, -(2/27) (2 j + 13 q), 
     (8 (j - q))/27, 8/81 (14 j - 5 q), (8 (j - q))/27, -(8/81) (j - 10 q)}, 
   {2/9 (2 j + q), 0, 2/9 (2 j + q), 0, -(8/81) (7 j + 2 q), 0, 
     -(8/81) (4 j + 5 q), 0}, 
   {-(16/27) (j - q), -(16/27) (j - q), -(16/27) (j - q), -(16/27) (j - q), 
     -(16/27) (j - q), -(56/27) (j - q), -(16/27) (j - q), (8 (j - q))/9}, 
   {0, 0, 0, 0, (8 (j - q))/27, 0, -(8/27) (j - q), 0}}

I want to compute Eigensystem[F].

Even when I specify some numerical values of these parameters, the program still returns an output with Rootand takes 1 or 2 minutes. I believe this isn't normal. I'm wondering if I have to use compiled functions (which I don't know how to use) or parallel computation for doing this.

Is there a way to obtain some numerical values of the roots (possibly in terms of $j$ and $q$), by specifying the values of the two parameters?

I saw these answers : How to solve an eigensystem faster? and How do I work with Root objects? but I'm having trouble applying them to my problem.

$\endgroup$
  • 2
    $\begingroup$ If you just want to see numerical values, just do Eigensystem[N[F]], assuming you've already set values to the parameters. Otherwise, you'd have a hard time avoiding Root[] since the roots of an eighth-degree polynomial do not admit radical representations in general. $\endgroup$ – J. M. will be back soon Jun 18 '15 at 8:46
  • 1
    $\begingroup$ I said that you should only do it if you've already set numerical values to the parameters; if you're still seeing Root[], then you didn't follow what I said. $\endgroup$ – J. M. will be back soon Jun 18 '15 at 8:55
  • 1
    $\begingroup$ Then you can't avoid Root[] except in very special cases. I already said something about Root[] being needed to represent polynomial roots in general… $\endgroup$ – J. M. will be back soon Jun 18 '15 at 9:07
  • 1
    $\begingroup$ I have to wonder what sort of result you are expecting. $\endgroup$ – Daniel Lichtblau Jun 18 '15 at 11:12
  • 1
    $\begingroup$ @LSnoopyD Why do you believe that is possible at all? Check here: en.wikipedia.org/wiki/Abel%E2%80%93Ruffini_theorem $\endgroup$ – Szabolcs Jun 18 '15 at 12:18
2
$\begingroup$

The following function will calculate the eigensystem numerically when provided with numerical values of $j$ and $q$. This is, I believe, what @Szabolcs was referring to in his comment. I wonder if this is what you mean when you ask for a "numerical solution".

Clear[eigen]
eigen[jj_?NumericQ, qq_?NumericQ] := Chop@Eigensystem[N[f /. {j -> jj, q -> qq}]]

You can then use this procedure to calculate the numerical values of the eigenvectors and eigenvalues for any value of the two parameters. For instance:

{evals, evecs} = eigen[0.1, 4];

evals

{0.495659 + 4.25935 I, 0.495659 - 4.25935 I, 0.109879 + 3.07184 I, 0.109879 - 3.07184 I, 2.92633, -2.89685, -0.0425017 + 0.329099 I, -0.0425017 - 0.329099 I}

evecs

{{-0.0482985 - 0.0348853 I, 0.0321458 - 0.113914 I, -0.0453241 - 0.0211174 I, -0.00581224 + 0.000565127 I, -0.32658 + 0.0450911 I, -0.0600757 + 0.332626 I, 0.813862, 0.0234541 - 0.306671 I}, {-0.0482985 + 0.0348853 I, 0.0321458 + 0.113914 I, -0.0453241 + 0.0211174 I, -0.00581224 - 0.000565127 I, -0.32658 - 0.0450911 I, -0.0600757 - 0.332626 I, 0.813862, 0.0234541 + 0.306671 I}, {-0.353103 + 0.0685274 I, -0.0725844 - 0.181175 I, -0.168451 + 0.0424839 I, 0.0112354 + 0.107266 I, 0.604769, 0.150466 + 0.0354625 I, -0.453657 - 0.179914 I, -0.0818168 + 0.395229 I}, {-0.353103 - 0.0685274 I, -0.0725844 + 0.181175 I, -0.168451 - 0.0424839 I, 0.0112354 - 0.107266 I, 0.604769, 0.150466 - 0.0354625 I, -0.453657 + 0.179914 I, -0.0818168 - 0.395229 I}, {0.414179, -0.340333, -0.56998, 0.597888, -0.158251, 0.0308016, -0.0494196, 0.0429756}, {0.403107, 0.310752, -0.549465, -0.584588, -0.245644, 0.0543998, 0.115176, -0.143931}, {-0.338839 - 0.35103 I, -0.111621 + 0.0863311 I, -0.31761 - 0.314881 I, -0.177504 + 0.137599 I, -0.195885 - 0.135764 I, 0.179694 + 0.237822 I, -0.177915 - 0.274909 I, -0.488576}, {-0.338839 + 0.35103 I, -0.111621 - 0.0863311 I, -0.31761 + 0.314881 I, -0.177504 - 0.137599 I, -0.195885 + 0.135764 I, 0.179694 - 0.237822 I, -0.177915 + 0.274909 I, -0.488576}}

$\endgroup$
  • $\begingroup$ Thanks for your answer. I was a bit fuzzy on what I wanted : I will follow this strategy and then interpolate the results for the $j$ and $q$ dependence of the eigenvalues. $\endgroup$ – Tool Jun 19 '15 at 12:27
  • $\begingroup$ @LSnoopyD I'm glad it helps; thank you for the accept as well! $\endgroup$ – MarcoB Jun 19 '15 at 12:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.