चतुर्थांश समीकरण का हल


10

क्या चतुर्थक समीकरणों के समाधान के लिए एक खुला सी-कार्यान्वयन है:

ax+bx³+cx²+dx+e=0

मैं फेरारी के समाधान के कार्यान्वयन के बारे में सोच रहा हूं। विकिपीडिया पर मैंने पढ़ा कि समाधान केवल गुणांक के कुछ संभावित संकेत संयोजनों के लिए कम्प्यूटेशनल स्थिर है। लेकिन शायद मैं भाग्यशाली हूं ... मुझे कंप्यूटर बीजगणित प्रणाली का उपयोग करके विश्लेषणात्मक रूप से हल करके और सी को निर्यात करके एक व्यावहारिक समाधान मिला है लेकिन अगर कोई परीक्षण किया गया कार्यान्वयन है तो मैं इसका उपयोग करना पसंद करूंगा। मैं एक तेज़ विधि खोजता हूं और सामान्य रूट फाइंडर का उपयोग नहीं करना पसंद करता हूं।

मुझे केवल वास्तविक समाधान चाहिए।


क्या आपको एक साथ सभी (वास्तविक) समाधानों की आवश्यकता है? जैसा कि GertVdE नीचे कहता है, यदि आपके पास बंद फॉर्म समाधान के साथ स्थिरता के मुद्दे हैं, तो कुछ रूट-फाइंडिंग एल्गोरिदम का उपयोग नहीं करने का वास्तव में एक अच्छा कारण नहीं है।
गॉड्रिक सीयर

3
मुझे यह मज़ेदार लगता है कि यह नॉनलाइनियर-बीजगणित को टैग किया गया था, क्योंकि आप केवल साथी मैट्रिक्स के आइगेनवेल्यूज़ की गणना कर सकते हैं, जो पहले से ही हेसेनबर्ग फॉर्म में है और क्यूआर स्वीप्स को लागू करना बहुत सरल होगा।
विक्टर लियू

2
ACM TOMS (एल्गोरिथम 954) में प्रकाशित घन / चतुर्थक सॉल्वर पर एक नज़र डालें । कोड जो इसे उस पत्रिका में बनाता है वह आमतौर पर बहुत उच्च गुणवत्ता का होता है। पेपर स्वयं एक पेवॉल के पीछे है लेकिन कोड को इस लिंक से डाउनलोड किया जा सकता है ।
गोहोकिस

... (बाद में संपादित करें) ACM कोड FORTRAN 90 में लिखा गया है, लेकिन मेरी पहली धारणा यह है कि कोई इसे बहुत प्रयास के बिना C से कॉल कर सकता है
गोहोकीस

1
@GoHokies मुझे लगता है कि आपको अपनी टिप्पणी को एक उत्तर में बदलना चाहिए क्योंकि मुझे लगता है कि यह इस सवाल का एक अच्छा जवाब है। विशेष रूप से चूंकि जुड़ा हुआ पेपर सामान्य संख्यात्मक अस्थिरताओं से बचने का प्रबंधन करता है, और यह बिल्कुल तुच्छ बात नहीं है।
किरिल

जवाबों:


20

मैं बंद फॉर्म समाधानों का उपयोग करने के खिलाफ दृढ़ता से सलाह दूंगा क्योंकि वे संख्यात्मक रूप से बहुत अस्थिर होते हैं। आपको विवेकशील और अन्य मापदंडों के अपने मूल्यांकन के तरीके और आदेश में अत्यधिक सावधानी बरतने की आवश्यकता है।

शास्त्रीय उदाहरण द्विघात समीकरण के लिए X 1 , 2 = - b ± के रूप में जड़ों की गणनाax2+bx+c=0 बहुआयामी पद के लिए मुसीबत में आप मिल जाएगा जहां»4एकतो आप अंश में रद्द पाने के बाद से। आप की गणना करने की जरूरत हैएक्स1=-(+रोंमैंजीएन()

x1,2=b±b24ac2a
b4ac
x1=(b+sign(b)b24ac)2a;x2=ca1x1

[a,b,c]=[1.732,1,1.2704]O(102)O(1015)O(1011)

आपके मामले में, मैं बेयरस्टो की विधि लागू करूंगा । यह द्विघात रूपों पर न्यूटन पुनरावृत्ति के पुनरावृत्त संयोजन का उपयोग करता है (और फिर द्विघात की जड़ें हल हो जाती हैं) और अपस्फीति। यह आसानी से लागू किया जाता है और वेब पर कुछ कार्यान्वयन भी उपलब्ध हैं।


1
क्या आप बता सकते हैं कि आपके द्वारा "बंद किए गए फ़ॉर्म समाधानों का उपयोग करने के खिलाफ मैं दृढ़ता से सलाह दूंगा, क्योंकि वे संख्यात्मक रूप से अस्थिर होते हैं।" क्या यह केवल 4 डिग्री के बहुपदों पर लागू होता है या यह एक सामान्य नियम है?
NoChance सेप

@EmmadKareem मैंने ऊपर अपना उत्तर अपडेट कर दिया है।
गर्टवेडे

3

इन्हें देखें:


2
x1=1.602644912244132e+00O(108)O(107)O(1015)। अप करने के लिए कि क्या यह काफी अच्छा है (कंप्यूटर ग्राफिक्स के लिए यह हो सकता है, कुछ अन्य अनुप्रयोगों के लिए, यह नहीं होगा)
GertVdE

1

सी में संख्यात्मक व्यंजनों द्विघात और घन की वास्तविक जड़ों के लिए बंद रूप अभिव्यक्ति प्रदान करता है जो संभवतः सभ्य परिशुद्धता है। चूंकि चतुर्थांश के बीजगणितीय समाधान में एक घन को हल करना और फिर दो चतुष्कोण को हल करना शामिल होता है, इसलिए संभव है कि एक बंद प्रपत्र चतुर्थक w अच्छी परिशुद्धता प्रश्न से बाहर न हो।


मुझे सिर्फ क्यूई उदाहरणों की जड़ 2e-16 (मेरी फ़्लोट्स की शुद्धता पर एक बालक) का हवाला दिया गया है, जिसमें सी (प्रेस एट अल) क्यूबिक फ़ार्मुलों में संख्यात्मक व्यंजनों का उपयोग किया गया है। इसलिए उम्मीद की वजह है।
नेमोकॉपरफील्ड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.