Hayali kısmı basitleştirmek
Aşağıdaki öz sistemi çözüyorum ve karmaşık değerli görünen bir sonuç alıyorum. Sonucun 0 sanal kısmı olmasını bekliyorum, bunu basitleştirmenin bir yolunu gören var mı?
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]
Yanıtlar
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];
Tüm değerler gerçek
valR = val // RootReduce
Element[valR, Reals]
(* True *)
valR // N
(* {8.33542, {0.0311157, -0.179391, 0.00719285, 1.}} *)
Ancak, radikaller kullanılarak temsil ediliyorsa, karmaşık sayılar kullanmaları gerekir (bkz. Casus irreducibilis)
valR // ToRadicals
Chop[N[First /@ Eigensystem[{B, A}, 1]]]
İadeler
{8.33542,{0.0311157,-0.179391,0.00719285,1.}}
Bu uzun zaman alır, ancak yalnızca hayali kısmın olduğunu kanıtlamak istiyorsanız işe yarar. $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}}*)
Cevabı almak için bilgisayarın bir gecede çalışmasına izin verdim. Simplifyoraya gitmedi.
Mathematica's N [] ile sayısal değerlendirmeyi deneyin
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]
Sonuç olmalı
{8.33542, {0.0306117, -0.176485, 0.00707634, 0.983802}}
Bill'in cevabını geri almak için, sadece CountRoots[]özdeğerlerin tümünün gerçek olduğunu göstermek isteniyorsa, verilen matris kalemin karakteristik polinomu üzerinde kullanılabilir :
CountRoots[CharacteristicPolynomial[{B, A}, x], x]
4
Daha sonra RootIntervals[]kökler için parantez bulmak için kullanılabilir:
RootIntervals[CharacteristicPolynomial[{B, A}, x], Reals]
{{{0, 0}, {0, 1}, {3, 4}, {4, 10}}, {{1}, {1}, {1}, {1}}}
Unutmayın ki kök $x=0$tamamen izole edildi. Kalemin en büyük öz değeri, ayırma aralığı ile son girdiye karşılık gelir.$(4,10)$, daha sonra verebileceğiniz 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 daha önce casus irreducibilis'ten bahsetti ; Özetlemek gerekirse, radikal bir temsilde ısrar ediyorsanız, tüm kökler gerçek olsa bile karmaşık bir temsilin kullanılması (genellikle) kaçınılmazdır.