Simplifier la partie imaginaire
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
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
Chop[N[First /@ Eigensystem[{B, A}, 1]]]
Retour
{8.33542,{0.0311157,-0.179391,0.00719285,1.}}
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é.
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}}
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.