मुझे एक दिए गए अंतराल में स्केलर फ़ंक्शन की सभी जड़ों को खोजने की आवश्यकता है । फ़ंक्शन में असंगति हो सकती है। एल्गोरिथ्म में algorithm की सटीकता हो सकती है (जैसे कि यदि एल्गोरिथ्म में दो अलग-अलग जड़ें नहीं हैं तो यह ठीक है)।
क्या ऐसा एल्गोरिथ्म मौजूद है? क्या आप मुझे उस बारे में कागजात बता सकते हैं?
वास्तव में, मेरे पास ब्रेंट के एल्गोरिथ्म का उपयोग करके दिए गए अंतराल में एक शून्य खोजने के लिए एक फ़ंक्शन है, और दिए गए अंतराल में एक न्यूनतम खोजने के लिए एक फ़ंक्शन है। उन दो कार्यों का उपयोग करते हुए, मैंने अपना खुद का एल्गोरिदम बनाया, लेकिन मैं सोच रहा था कि क्या बेहतर एल्गोरिथ्म मौजूद है। मेरा एल्गोरिथम ऐसा है:
मैं एक अंतराल [a,b]
और एक समारोह के साथ शुरू करता हूं f
। तो sign(f(a+ε)) ≠ sign(f(b-ε))
, मुझे पता नहीं है कम से कम एक शून्य के बीच a
और b
, और मुझे लगता है z = zero(]a,b[)
। मैं परीक्षण करता हूं कि क्या z
वास्तव में एक शून्य है (यह एक असंतोष हो सकता है), z-ε
और के मूल्य को देखकर z+ε
। यदि यह है, तो मैं इसे पाया शून्य की सूची में जोड़ देता हूं। यदि f(a+ε)
और f(b-ε)
दोनों सकारात्मक हैं, तो मैं खोज करता हूं m = min(]a, b[)
। यदि f(m)
अभी भी सकारात्मक है, तो मैं खोज करता हूं m = max(]a,b[)
क्योंकि बीच में एक असंतोष हो सकता है a
और b
। मैं विपरीत करता हूं अगर f(a+ε)
और f(b-ε)
नकारात्मक थे।
अब, मैंने जो बिंदु पाया, ( z
या m
) मैं एक स्टैक का निर्माण करता हूं जिसमें मेरे फ़ंक्शन के शून्य, असंतोष और विभक्ति बिंदु शामिल हैं। पहले पुनरावृत्ति के बाद, स्टैक अब जैसा दिखता है [a, z, b]
। मैं फिर से अंतराल से एल्गोरिथ्म शुरू करता हूं ]a,z[
और ]z,b[
। जब, दो बिंदुओं के बीच a
और b
, दोनों अंतरालों की तुलना में एक्स्ट्रेमा का एक ही चिन्ह होता है, और दोनों एक्सट्रैमा में कोई असंतोष नहीं होता है, तो मैं अंतराल को स्टैक से हटा देता हूं। अधिक अंतराल न होने पर एल्गोरिथ्म समाप्त हो जाता है।