Hayali kısmı basitleştirmek

Sep 10 2020

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

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];

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

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

İadeler

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

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.

3 Wai-GaDHo Sep 11 2020 at 00:32

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}}
2 J.M.'sennui Sep 12 2020 at 05:55

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.