Simplifier la partie imaginaire

Sep 10 2020

Je résous le système eigensystem suivant, et j'obtiens un résultat qui semble complexe. Je m'attends à ce que le résultat ait 0 partie imaginaire, quelqu'un peut-il voir un moyen de le simplifier?

B = {{17/3, 1/3, 1/3, 1/3}, {1/3, 1/3, 1/3, 1/3}, {1/3, 1/3, 1/3, 1/
    3}, {1/3, 1/3, 1/3, 82/3}};
A = {{5/3, 0, 1/3, 0}, {0, 5/3, 0, 1/3}, {1/3, 0, 10/3, 0}, {0, 1/3, 
    0, 10/3}};
First /@ Eigensystem[{B, A}, 1]

Réponses

5 BobHanlon Sep 11 2020 at 00:32
B = {{17/3, 1/3, 1/3, 1/3}, {1/3, 1/3, 1/3, 1/3}, {1/3, 1/3, 1/3, 1/3}, {1/3, 
    1/3, 1/3, 82/3}};
A = {{5/3, 0, 1/3, 0}, {0, 5/3, 0, 1/3}, {1/3, 0, 10/3, 0}, {0, 1/3, 0, 
    10/3}};

val = First /@ Eigensystem[{B, A}, 1];

Toutes les valeurs sont réelles

valR = val // RootReduce

Element[valR, Reals]

(* True *)

valR // N

(* {8.33542, {0.0311157, -0.179391, 0.00719285, 1.}} *)

Cependant, s'ils sont représentés à l'aide de radicaux, ils doivent utiliser des nombres complexes (voir Casus irreducibilis)

valR // ToRadicals

5 Bill Sep 10 2020 at 23:55
Chop[N[First /@ Eigensystem[{B, A}, 1]]]

Retour

{8.33542,{0.0311157,-0.179391,0.00719285,1.}}
4 BillWatts Sep 11 2020 at 17:24

Cela prend du temps, mais cela fonctionne si vous voulez juste prouver que la partie imaginaire est $0$.

B = {{17/3, 1/3, 1/3, 1/3}, {1/3, 1/3, 1/3, 1/3}, {1/3, 1/3, 1/3, 1/
    3}, {1/3, 1/3, 1/3, 82/3}};
A = {{5/3, 0, 1/3, 0}, {0, 5/3, 0, 1/3}, {1/3, 0, 10/3, 0}, {0, 1/3, 
    0, 10/3}};
result = First /@ Eigensystem[{B, A}, 1]

Im[result] // FullSimplify
(*{0,{0,0,0,0}}*)

J'ai laissé l'ordinateur fonctionner pendant la nuit pour obtenir la réponse. Simplifyn'y est pas arrivé.

3 Wai-GaDHo Sep 11 2020 at 00:32

Essayez l'évaluation numérique avec N [] de Mathematica

B = {{17/3, 1/3, 1/3, 1/3}, {1/3, 1/3, 1/3, 1/3}, {1/3, 1/3, 1/3, 
1/3}, {1/3, 1/3, 1/3, 82/3}};
A = {{5/3, 0, 1/3, 0}, {0, 5/3, 0, 1/3}, {1/3, 0, 10/3, 0}, {0, 1/3, 
0, 10/3}};
First /@ Eigensystem[{N@B, N@A}, 1]

Le résultat devrait être

{8.33542, {0.0306117, -0.176485, 0.00707634, 0.983802}}
2 J.M.'sennui Sep 12 2020 at 05:55

Pour reprendre la réponse de Bill, on peut simplement utiliser CountRoots[]sur le polynôme caractéristique du crayon matriciel donné, si l'on souhaite seulement montrer que les valeurs propres sont toutes réelles:

CountRoots[CharacteristicPolynomial[{B, A}, x], x]
   4

On peut ensuite utiliser RootIntervals[]pour trouver des parenthèses pour les racines:

RootIntervals[CharacteristicPolynomial[{B, A}, x], Reals]
   {{{0, 0}, {0, 1}, {3, 4}, {4, 10}}, {{1}, {1}, {1}, {1}}}

Notez que la racine à $x=0$était exactement isolé. La plus grande valeur propre du crayon correspondrait à la dernière entrée avec l'intervalle d'isolement$(4,10)$, que vous pouvez ensuite donner à Solve[]:

Solve[CharacteristicPolynomial[{B, A}, x] == 0 && 4 < x < 10, x, 
      Cubics -> False, Quartics -> False]
   {{x -> Root[-19440 + 76898 #1 - 28959 #1^2 + 2401 #1^3 &, 3]}}

Bob a déjà mentionné le casus irreducibilis ; Pour résumer, si vous insistez sur une représentation radicale, alors l'utilisation d'une représentation complexe est (souvent) inévitable, même si toutes les racines sont réelles.