Bairstow's root finding method को अभिसरण करने के लिए वर्गबद्ध कारकों के लिए बहुत अच्छे आरंभिक अनुमानों की आवश्यकता है।बेयरस्टो की विधि प्रारंभिक वर्गिक अनुमान
मैंने पीछे के गुणांक (-a1/a2, -a0/a2; लिन द्वारा) के विभिन्न स्थिरांक, यादृच्छिक संख्या, अंशों का कोई फायदा नहीं हुआ।
कृपया, किसी को भी कारकों चुनने के लिए एक अच्छा तरीका के बारे में पता है?
उदाहरण के लिए:
1*x^8 + 118*x^7 + 1*x^6 + 2*x^5 - 2*x^4 - 3*x^3 + 3*x^2 + 2*x + 1
यह तुलना में यह 0.2, 2.0 के साथ करता है, प्रारंभिक अनुमानों 0.1 के साथ रूट को खोजने के लिए 0.2 3x के रूप में ज्यादा समय लगता है।
या:
1*x^8 - 36*x^7 + 546*x^6 - 4536*x^5 + 22449*x^4 - 67284*x^3 + 118124*x^2 - 109584*x + 40320
थोड़ा लंबा (~ 50%) 0.1 के साथ लेता है, 0.1 के साथ की तुलना में 1.2, 0,1
कॉची की प्रारंभिक द्विघात सन्निकटन के लिए बाध्य उपयोग करने के लिए कोशिश कर रहा है:
R=0
for i in range(1,n+1):
R=max(abs(a[i]/a[0]),R)
R=1+R
phi=2*pi*random()
x1=complex(R*cos(phi),R*sin(phi))
x2=complex(x1.real,-x1.imag)
r=-x1.real-x2.real
s=(x1*x2).real
दुर्भाग्यवश, यह वास्तव में अभिसरण को गति प्रदान नहीं करता है।
समस्या यह है कि मैं स्पष्ट रूप से देख सकता हूं कि अभिसरण गति में एक बड़ा अंतर है जब मैं थोड़ा अलग प्रारंभिक अनुमानों का उपयोग करता हूं। मेरा मतलब है, निश्चित रूप से कुछ दूसरों की तुलना में बेहतर होना चाहिए? और जब एक से अधिक गुणा के साथ जड़ों हैं, यह भी बदतर है। यहां तक कि यहां तक कि डिग्री के बहुआयामी पद के लिए ... –
पहले ऐसा नहीं होना चाहिए, कम से कम नहीं बहुत बार। कई जड़ों हमेशा एक समस्या होगी। हमेशा की तरह एल्गोरिदम में से सिर्फ जेनकींस-Traub कि के खिलाफ अपेक्षाकृत मजबूत है, यह केवल छोटे divisors में रद्द त्रुटियों से ग्रस्त है। क्या आप प्रश्न में दस्तावेज कर सकते हैं - यदि संभव हो तो पहली समस्या के लिए छोटा - उदाहरण? – LutzL
संपादन देखें। Btw।, जब मैं आपके द्वारा लिंक किए गए "वेनिला" कार्यान्वयन में उदाहरण प्लग करता हूं, तो यह जम जाता है। –