Sayısal olarak çok kararsız olmaları nedeniyle kapalı form çözümlerinin kullanılmasına karşı şiddetle tavsiye ediyorum. Ayrımcı ve diğer parametreler hakkındaki değerlendirmelerinize ve düzeninize çok dikkat etmeniz gerekir.
Klasik örnek kuadratik denklem için olan örnektir x 1 , 2 = - b ± √bir x2+ b x + c = 0 . Kökleri hesaplamak, olan polinomlar için belaya girmenizi sağlayacaktır . payı. yı hesaplamanız gerekir . b≫4acx1=-(b+sign(b) √
x1 , 2= - b ± b2- 4 a c-------√2 a
b » 4 , bir Cx1= - ( b + s i gn ( b ) b2- 4 a c-------√)2 a; x2= cbir1x1
Higham başyapıtında "Sayısal Algoritmaların Doğruluğu ve Kararlılığı" (2. baskı, SIAM) klasik analitik kübik çözümün çok yanlış sonuçlar verdiği kübik bir polinomun katsayılarını bulmak için doğrudan bir arama yöntemi kullanır. örnek . Bu polinom için kökler iyi ayrılmıştır ve bu nedenle problem kötü durumda değildir. Bununla birlikte, eğer analitik yaklaşımı kullanarak kökleri hesaplar ve bu köklerdeki polinomu değerlendirirse, kararlı bir standart yöntem (tamamlayıcı matris yöntemi) kullanırken kalıntısı elde eder. , artıkO ( 10 - 2 ) O ( 10 - 15 )[ a , b , c ] = [ 1.732 , 1 , 1.2704 ]O ( 10- 2)O ( 10- 15). Algoritmada hafif bir değişiklik öneriyor, ancak o zaman bile , kesinlikle iyi olmayan tortularına yol açan bir dizi katsayı bulabilir . Bkz. Yukarıda adı geçen kitabın p480-481.O ( 10- 11)
Sizin durumunuzda, Bairstow'un yöntemini uygularım . Kuadratik formlar (ve sonra kuadratik kökleri çözülür) ve deflasyon üzerinde Newton iterasyonunun yinelemeli bir kombinasyonunu kullanır. Kolayca uygulanır ve web üzerinde bazı uygulamalar bile vardır.