ऐसा लगता है कि अब तक उल्लेख नहीं किया गया है कि एक अस्थिर एल्गोरिथ्म की अवधारणाएं और एक बीमार स्थिति है । मैं पहले वाले को संबोधित करूंगा, क्योंकि यह नौसिखियों के अंकशास्त्रियों के लिए अधिक लगातार नुकसान होने वाला है।
(पारस्परिक) स्वर्ण अनुपात की शक्तियों की गणना पर विचार करें φ=0.61803…
; इसके बारे में जाने का एक संभावित तरीका पुनरावृत्ति फार्मूला का उपयोग करना है φ^n=φ^(n-2)-φ^(n-1)
, जिसके साथ φ^0=1
और शुरू होता है φ^1=φ
। यदि आप अपने पसंदीदा कंप्यूटिंग वातावरण में इस पुनर्संरचना को चलाते हैं और परिणामों की सही मूल्यांकन शक्तियों के साथ तुलना करते हैं, तो आपको महत्वपूर्ण आंकड़ों का धीमा क्षरण मिलेगा। यहाँ उदाहरण के लिए गणितज्ञ में क्या होता है :
ph = N[1/GoldenRatio];
Nest[Append[#1, #1[[-2]] - #1[[-1]]] & , {1, ph}, 50] - ph^Range[0, 51]
{0., 0., 1.1102230246251565*^-16, -5.551115123125783*^-17, 2.220446049250313*^-16,
-2.3592239273284576*^-16, 4.85722573273506*^-16, -7.147060721024445*^-16,
1.2073675392798577*^-15, -1.916869440954372*^-15, 3.1259717037102064*^-15,
-5.0411064211886014*^-15, 8.16837916750579*^-15, -1.3209051907825398*^-14,
2.1377864756200182*^-14, -3.458669982359108*^-14, 5.596472721011714*^-14,
-9.055131861349097*^-14, 1.465160458236081*^-13, -2.370673237795176*^-13,
3.835834102607072*^-13, -6.206507137114341*^-13, 1.004234127360273*^-12,
-1.6248848342954435*^-12, 2.6291189633497825*^-12, -4.254003796798193*^-12,
6.883122762265558*^-12, -1.1137126558640235*^-11, 1.8020249321541067*^-11,
-2.9157375879969544*^-11, 4.717762520172237*^-11, -7.633500108148015*^-11,
1.23512626283229*^-10, -1.9984762736468268*^-10, 3.233602536479646*^-10,
-5.232078810126407*^-10, 8.465681346606119*^-10, -1.3697760156732426*^-9,
2.216344150333856*^-9, -3.5861201660070964*^-9, 5.802464316340953*^-9,
-9.388584482348049*^-9, 1.5191048798689004*^-8, -2.457963328103705*^-8,
3.9770682079726053*^-8, -6.43503153607631*^-8, 1.0412099744048916*^-7,
-1.6847131280125227*^-7, 2.725923102417414*^-7, -4.4106362304299367*^-7,
7.136559332847351*^-7, -1.1547195563277288*^-6}
इसके लिए कथित परिणाम φ^41
गलत संकेत है, और पहले भी, φ^39
साझा और वास्तविक मूल्य साझा करने के लिए सामान्य ( 3.484899258054952
* ^ - 9 for the computed version against the true value
7.071019424062048 *^-9
) में कोई मूल्य नहीं है । इस प्रकार एल्गोरिथ्म अस्थिर है, और किसी को इस अंकगणित सूत्र का उपयोग अधूरा अंकगणित में नहीं करना चाहिए। यह पुनरावर्तन सूत्र की अंतर्निहित प्रकृति के कारण है: इस पुनरावृत्ति के लिए "क्षय" और "बढ़ रहा है" समाधान है, और आगे बढ़ने वाले समाधान द्वारा "क्षय" समाधान की गणना करने की कोशिश कर रहा है जब कोई वैकल्पिक "बढ़ते" समाधान भीख मांग रहा है। संख्यात्मक दु: ख के लिए। इस प्रकार यह सुनिश्चित करना चाहिए कि उसके संख्यात्मक एल्गोरिदम स्थिर हैं।
अब, एक गैर-सशर्त समस्या की अवधारणा पर : भले ही संख्यात्मक रूप से कुछ करने का एक स्थिर तरीका हो, यह बहुत अच्छी तरह से हो सकता है कि आपके पास अभी जो समस्या है वह आपके एल्गोरिथ्म द्वारा हल नहीं की जा सकती है। यह समस्या का दोष है, न कि समाधान पद्धति का। संख्यात्मकता में विहित उदाहरण तथाकथित "हिल्बर्ट मैट्रिक्स" से जुड़े रेखीय समीकरणों का हल है।
मैट्रिक्स एक बीमार- मैट्रिक्स का विहित उदाहरण है : एक बड़े हिल्बर्ट मैट्रिक्स के साथ एक प्रणाली को हल करने की कोशिश करना एक गलत समाधान वापस कर सकता है।
यहाँ एक गणितीय प्रदर्शन है: सटीक अंकगणित के परिणामों की तुलना करें
Table[LinearSolve[HilbertMatrix[n], HilbertMatrix[n].ConstantArray[1, n]], {n, 2, 12}]
{{1, 1}, {1, 1, 1}, {1, 1, 1, 1}, {1, 1, 1, 1, 1}, {1, 1, 1, 1, 1,
1}, {1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1,
1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}}
और अनुभवहीन अंकगणित
Table[LinearSolve[N[HilbertMatrix[n]], N[HilbertMatrix[n].ConstantArray[1, n]]], {n, 2, 12}]
{{1., 1.}, {1., 1., 1.}, {1., 1., 1., 1.}, {1., 1., 1., 1., 1.},
{1., 1., 1., 1., 1., 1.}, {1., 1., 1., 1., 1., 1., 1.},
{1., 1., 1., 1., 1., 1., 1., 1.}, {1., 1., 1., 1., 1., 1., 1., 1., 1.},
{1., 1., 1., 0.99997, 1.00014, 0.999618, 1.00062, 0.9994, 1.00031,
0.999931}, {1., 1., 0.999995, 1.00006, 0.999658, 1.00122, 0.997327,
1.00367, 0.996932, 1.00143, 0.999717}, {1., 1., 0.999986, 1.00022,
0.998241, 1.00831, 0.975462, 1.0466, 0.94311, 1.04312, 0.981529,
1.00342}}
(यदि आपने इसे मैथेमेटिका में आज़माया है , तो आप कुछ त्रुटि संदेशों को नोट करेंगे जो बीमार कंडीशनिंग की चेतावनी है।)
दोनों मामलों में, केवल सटीकता बढ़ाने से कोई इलाज नहीं है; यह केवल आंकड़ों के अपरिहार्य क्षरण में देरी करेगा।
यह वही है जिसके साथ आपका सामना किया जा सकता है। समाधान मुश्किल हो सकता है: पहले के लिए, या तो आप ड्रॉइंग बोर्ड पर वापस जाते हैं, या पत्रिकाओं / पुस्तकों के माध्यम से उतारा करते हैं / जो कुछ भी खोजने के लिए यदि आपके पास कोई और बेहतर समाधान है; दूसरे के लिए, आप या तो हार मान लेते हैं, या अपनी समस्या को और अधिक सुधारने योग्य बनाते हैं।
मैं आपको डायने ओ'लेरी के एक उद्धरण के साथ छोड़ूंगा:
जीवन हमें कुछ अशिक्षित समस्याओं का सामना कर सकता है, लेकिन अस्थिर एल्गोरिथ्म के लिए बसने का कोई अच्छा कारण नहीं है।