बस क्यूबिक हल करें।
यदि आप बेज़ीयर विमान घटता के बारे में बात कर रहे हैं, जहां एक्स (टी) और वाई (टी) घन बहुपद हैं, तो वाई (एक्स) अपरिभाषित हो सकता है या कई मान हो सकते हैं। एक चरम अपघटन मामला लाइन x = 1.0 होगा, जिसे एक क्यूबिक बेजियर के रूप में व्यक्त किया जा सकता है (नियंत्रण बिंदु 2 अंत बिंदु 1 के समान होता है; नियंत्रण बिंदु 3 अंत बिंदु 4 के समान होता है)। उस स्थिति में, वाई (एक्स) में x! = 1.0 के लिए कोई समाधान नहीं है, और x == 1.0 के लिए अनंत समाधान हैं।
रिकर्सिव उपखंड का एक तरीका काम करेगा, लेकिन मुझे उम्मीद है कि यह क्यूबिक को हल करने से बहुत धीमी होगी। (जब तक आप असामान्य रूप से खराब फ्लोटिंग-पॉइंट क्षमता वाले किसी प्रकार के एम्बेडेड प्रोसेसर के साथ काम नहीं कर रहे हैं।)
आपको कोड खोजने में कोई परेशानी नहीं होनी चाहिए जो एक घन हल करता है जिसे पहले से ही पूरी तरह से परीक्षण और डीबग किया गया है। यदि आप पुनरावर्ती उपखंड का उपयोग करके अपना स्वयं का समाधान लागू करते हैं, तो आपके पास वह लाभ नहीं होगा।
आखिरकार, हाँ, संख्यात्मक स्थिरता समस्याएं हो सकती हैं, जैसे कि जब आप चाहते हैं कि बिंदु टेंगेंट के पास है, लेकिन एक उपविभाजन विधि उन लोगों को दूर नहीं कर देगी। यह सिर्फ उन्हें कम स्पष्ट कर देगा।
संपादित करें: आपकी टिप्पणी का जवाब दें, लेकिन मुझे 300 से अधिक वर्णों की आवश्यकता है।
मैं केवल बेजियर वक्र से निपट रहा हूं जहां y (x) में केवल एक (वास्तविक) रूट है। संख्यात्मक स्थिरता के बारे में, http://en.wikipedia.org/wiki/Cubic_equation#Summary से सूत्र का उपयोग करके, ऐसा लगता है कि यदि आप बहुत छोटे हैं तो समस्याएं हो सकती हैं। - jtxx000
wackypedia आलेख कोई कोड नहीं है। मुझे संदेह है कि आप कुछ कुकबुक कोड पा सकते हैं जो कहीं और उपयोग के लिए तैयार हैं। शायद संख्यात्मक प्राप्तकर्ता या एसीएम एकत्रित एल्गोरिदम link text।
अपने विशिष्ट प्रश्न के लिए, और लेख के समान नोटेशन का उपयोग करके, आप केवल शून्य या शून्य के करीब है जब पी शून्य या शून्य के करीब होता है। वे समीकरण द्वारा संबंधित होंगे:
u^^6 + q u^^3 == p^^3 /27
शून्य के पास, आप सन्निकटन का उपयोग कर सकते हैं:
q u^^3 == p^^3 /27
या p/3u ==
क्ष का घनमूल
तो यू से एक्स की गणना की तरह कुछ शामिल करना चाहिए:
(fabs(u) >= somesmallvalue) ? (p/u/3.0) : cuberoot (q)
शून्य के करीब "पास" कैसे है? इस पर निर्भर करता है कि आपको कितनी सटीकता की आवश्यकता है। आप मेपल या मैटलैब के साथ कुछ गुणवत्ता का समय व्यतीत कर सकते हैं कि आप किस परिमाण के लिए कितनी त्रुटि पेश की गई है। बेशक, केवल आप जानते हैं कि आपको कितनी सटीकता की आवश्यकता है।
लेख क्यूबिक की 3 जड़ों के लिए आपके लिए 3 सूत्र देता है। तीन मूल्यों को देखते हुए, आप 3 संबंधित एक्स मान प्राप्त कर सकते हैं। यू और एक्स के लिए 3 मान एक काल्पनिक घटक के साथ सभी जटिल संख्याएं हैं। यदि आप सुनिश्चित हैं कि केवल एक वास्तविक समाधान होना है, तो आप उम्मीद करते हैं कि जड़ों में से एक शून्य काल्पनिक घटक हो, और अन्य दो जटिल संयोग हो। ऐसा लगता है कि आपको तीनों की गणना करना है और फिर असली चुनना है। (ध्यान दें कि एक जटिल आप वास्तविक एक्स के अनुरूप हो सकते हैं!) हालांकि, वहां एक और संख्यात्मक स्थिरता समस्या है: फ़्लोटिंग-पॉइंट अंकगणित यह है कि, वास्तविक समाधान का काल्पनिक घटक बिल्कुल शून्य नहीं होगा, और काल्पनिक घटक गैर वास्तविक जड़ें मनमाने ढंग से शून्य के करीब हो सकती हैं। तो संख्यात्मक दौर-बंद परिणामस्वरूप आप गलत रूट चुन सकते हैं। यदि आपके आवेदन से कुछ सैनिटी चेक है तो यह उपयोगी होगा कि आप वहां आवेदन कर सकते हैं।
यदि आप सही रूट चुनते हैं, तो न्यूटन-रैफसन के एक या अधिक पुनरावृत्तियों में इसकी सटीकता में सुधार हो सकता है।
यह एक सुंदर लेख है। क्या तुमने इसे पढ़ा? :) – ShreevatsaR
बेशक मैंने किया था! इसके साथ मुख्य मुद्दा यह है कि मैं ऑडियो प्रोसेसिंग के लिए बेजियर का उपयोग कर रहा हूं, जबकि लेख बेजियर वक्र ड्राइंग के साथ चिंतित है, इसलिए इसे ऑडियो के लिए काम करने के लिए कुछ अनुकूलन करने की आवश्यकता होगी। – jtxx000