2009-05-08 16 views
15

अधिकांश प्रोग्रामिंग भाषा 2 को 4 के वर्ग रूट के उत्तर के रूप में देती हैं। हालांकि, दो जवाब हैं: 2 और -2। क्या कोई विशेष कारण है, ऐतिहासिक या अन्यथा, आमतौर पर केवल एक जवाब क्यों दिया जाता है?अधिकांश प्रोग्रामिंग भाषाएं केवल 4 के वर्ग रूट के लिए एक जवाब क्यों देती हैं?

+2

यदि आप "सभी जड़ें वापस लौटने" के साथ सौदा करने के लिए विस्तार करते हैं तो आपको जटिल संख्याओं के लिए अंतर्निहित समर्थन के साथ बहुत जल्दी भाषा की आवश्यकता होती है। –

+0

और उस भाषा का नाम है? – bugmagnet

+0

ऐसी भाषाओं में से एक का नाम अंग्रेजी है। :) – mbaitoff

उत्तर

37

क्योंकि:

  • गणित में, √ एक्स आमतौर पर, जब तक अन्यथा निर्दिष्ट, प्रिंसिपल को संदर्भित करता है (अर्थात सकारात्मक) की एक्स [http://mathworld.wolfram.com/SquareRoot.html] जड़।
  • कुछ भाषाओं में एक से अधिक मूल्य वापस करने की क्षमता नहीं है।
  • चूंकि आप केवल अस्वीकृति लागू कर सकते हैं, दोनों लौटने से अनावश्यक होगा।
+5

मुझे ऐसा नहीं लगता! गणित में, समीकरण f (x) = sqrt (x) का समाधान x = +/- 2 है। यह आपके द्वारा चुने गए डोमेन पर पूरी तरह निर्भर करता है (प्राकृतिक संख्याएं, पूर्णांक, वास्तविकता, आदि)। चूंकि प्रोग्राम -व संख्याओं की अनुमति देते हैं, गणित यह निर्देश देंगे कि वे दोनों समाधान लौटाएंगे। यह व्यावहारिकता है जो प्रोग्रामिंग भाषाओं को सीमित करती है (हालांकि पायथन हमेशा एक टुपल लौटा सकता है)। – paxdiablo

+1

इसके अतिरिक्त, अधिकांश भाषाओं में मैं अपने सिर के ऊपर से सोच सकता हूं कि वे वेक्टर या कम से कम कुछ प्रकार की डेटा संरचना को दोनों मूल्यों का प्रतिनिधित्व करने के लिए वापस कर सकते हैं, यदि वे चाहते हैं। – Cuga

+12

पैक्स, क्या आप प्रदान किए गए संदर्भ को नहीं देखते हैं? वहाँ जाओ और सुंदर rainbows के ऊपर अनुच्छेद में अंतिम वाक्य पढ़ें। –

1

आप हमेशा बता सकते हैं कि अन्य नंबर क्या है, इसलिए शायद उन दोनों को वापस करने के लिए आवश्यक नहीं है।

5

क्योंकि एकाधिक रिटर्न प्रकार लागू करने के लिए परेशान हैं। यदि आपको वास्तव में अन्य परिणाम की आवश्यकता है, तो क्या यह केवल -1 से परिणाम के लिए पर्याप्त नहीं है?

10

दो लौटने की तुलना में एक नंबर वापस करना आसान है। अधिकांश इंजीनियरिंग निर्णय इस तरह से किए जाते हैं।

12

कुछ विचार:

  • ऐतिहासिक रूप से, कार्यों प्रक्रियाओं जो एक एकल मान लौटे रूप में परिभाषित किया गया।

  • यह एक साफ फ़ंक्शन को परिभाषित करने के लिए विचित्र रूप से (आदिम प्रोग्रामिंग संरचनाओं का उपयोग करके) होता है जो कई मान लौटाता है।

  • वहाँ हमेशा अपवाद हैं शासन के लिए:

    • 0 उदाहरण के लिए केवल एक एकल जड़ है (0)।
    • आप नकारात्मक संख्या (जब तक कि जटिल संख्या का समर्थन नहीं करता है) के वर्ग रूट को नहीं ले जा सकते हैं। इसे उन भाषाओं में अपवाद (जैसे "0 से विभाजित करें") के रूप में माना जा सकता है जो काल्पनिक संख्या या जटिल संख्या प्रणाली का समर्थन नहीं करते हैं।
  • यह आमतौर पर सरल है निकालना 2 वर्ग जड़ों (बस मूल्य समारोह से वापस लौटे नकारना)। यह संभवतः sqrt() फ़ंक्शन के कॉलर द्वारा एक अभ्यास के रूप में छोड़ा गया था, यदि उनके डोमेन दोनों सकारात्मक (+) और नकारात्मक (-) जड़ों से निपटने पर निर्भर थे।

+0

नकारात्मक संख्या का अप्रोपोस वर्ग रूट: कम से कम लिस्प इसे संभालता है और जटिल संख्या 0 + 1i: देता है? (वर्ग -1) # सी (0 1) –

+0

आपका मतलब है: ऐसी भाषाओं में जो काल्पनिक संख्याओं का समर्थन नहीं करते हैं, नकारात्मक संख्या के वर्ग रूट को लेना संभव नहीं है। – Eddie

+0

धन्यवाद - विधिवत नोट किया गया (और मेरे उत्तर को उचित रूप से संपादित किया गया)। – LeopardSkinPillBoxHat

17

यदि वर्ग रूट विधि दो मान लौटाती है, तो उन दोनों में से एक हमेशा व्यावहारिक रूप से त्याग दिया जाएगा। अतिरिक्त रिटर्न मूल्य पर स्मृति और जटिलता को बर्बाद करने के अलावा, इसका थोड़ा उपयोग नहीं किया जाएगा। हर कोई जानता है कि आप कई जवाब -1 द्वारा लौटा सकते हैं और अन्य रूट प्राप्त कर सकते हैं।

मुझे उम्मीद है कि केवल गणितीय भाषाएं एक सरणी या मैट्रिक्स के रूप में यहां कई मान लौटाएंगी। लेकिन अधिकांश सामान्य प्रयोजन प्रोग्रामिंग भाषाओं के लिए, आपके सुझाव के अनुसार नगण्य लाभ और गैर-नगण्य लागत है।

8

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

चर के लिए हल करते समय इस सम्मेलन का दुर्भाग्यपूर्ण अपवाद है। निम्न समीकरण में:

x^2 = 4

आप कोई चारा नहीं एक्स के लिए दोनों संभावित मान विचार करने के लिए यदि आप दोनों पक्षों का वर्गमूल ले है, तो आप x = 2 मिलता है, लेकिन अब आप चाहिए यह सुनिश्चित करने के लिए प्लस या माइनस साइन इन करें कि आप किसी भी संभावित समाधान को याद नहीं कर रहे हैं। साथ ही, याद रखें कि इस मामले में यह तकनीकी रूप से एक्स है जो या तो प्लस या माइनस हो सकता है, चार की वर्ग रूट नहीं।

+2

"गणित में, सम्मेलन द्वारा यह हमेशा माना जाता है कि आप कुछ के सकारात्मक वर्ग रूट चाहते हैं जब तक कि आप स्पष्ट रूप से अन्यथा नहीं कहें" - क्षमा करें यह 100% गलत है। – DanSingerman

+0

वाह फिलिप, यह वास्तव में कठोर प्रतिक्रिया है। – Albert

1

ऐसा लगता है क्योंकि जब लोग वर्ग रूट को समझने के लिए कैलकुलेटर का उपयोग करते हैं, तो वे केवल सकारात्मक मान चाहते हैं।

एक कदम आगे जाएं और पूछें कि आपका कैलक्यूलेटर आपको ऋणात्मक संख्या के वर्ग रूट क्यों नहीं लेगा। काल्पनिक संख्याओं का उपयोग करना संभव है, लेकिन औसत उपयोगकर्ता के लिए इसका बिल्कुल शून्य उपयोग है।

On imaginary numbers.

+2

अंतर यह है कि कोई वास्तविक संख्या नहीं है जिसे "कुछ नकारात्मक संख्या> के वर्ग रूट क्या है?" के उत्तर के रूप में प्रदान किया जा सकता है। आपको COMPLEX संख्या प्रणाली का उपयोग करने की आवश्यकता है। तो मुझे यकीन नहीं है कि यह पूछे जाने वाले प्रश्न के लिए प्रासंगिक कैसे है।तथ्य यह है कि, लगभग (लगभग हमेशा) 2 वास्तविक संख्याएं हैं जो एक सकारात्मक पूर्णांक की वैध वर्ग जड़ें हैं। एक बार फिर, मुझे लगता है कि यह डोमेन पर वापस आता है। यदि उपयोगकर्ता + और - दोनों जड़ों में रुचि रखते हैं, तो वे उन्हें sqrt() रिटर्न से आसानी से प्राप्त कर सकते हैं। कभी-कभी व्यवहारवाद शुद्धता को ओवरराइड करता है। – LeopardSkinPillBoxHat

+0

व्यावहारिकता से सहमत हैं। काल्पनिक संख्या उदाहरण यह दिखाने के लिए था कि इस तरह की सुविधा किसी सामान्य उपयोगकर्ता के लिए कितनी अव्यवहारिक है। – Cuga

2

मुझे लगता है कि क्योंकि समारोह "sqrt" कहा जाता है, और यदि आप कई जड़ों चाहता था, आप, समारोह "sqrts" है, जो अस्तित्व में नहीं है कॉल करने के लिए तो आप ऐसा नहीं कर सकते करना होगा यह।

अधिक गंभीर उत्तर यह है कि आप एक बड़े मुद्दे का एक विशिष्ट उदाहरण सुझा रहे हैं। कई समीकरण, और सामान्य रूप से व्यस्त कार्यों (वर्ग सहित) में कई संभावित समाधान होते हैं, जैसे कि आर्केसिन, आदि, और ये सामान्य रूप से एक समस्या है। Arcsin के साथ, उदाहरण के लिए, क्या किसी को अनंत संख्या में जवाब देना चाहिए? उदाहरण के लिए, branch cuts के बारे में चर्चाएं देखें।

3

क्योंकि अधिकांश प्रोग्रामर केवल एक उत्तर चाहते हैं।

कॉलर चाहता है तो सकारात्मक मूल्य से नकारात्मक मूल्य उत्पन्न करना काफी आसान है। अधिकांश कोड के लिए कॉलर केवल सकारात्मक मान का उपयोग करता है।


हालांकि, आजकल कई भाषाओं में दो मान वापस करना आसान है। जावास्क्रिप्ट में:

var sqrts=function(x) { 
    var s=Math.sqrt(x); 
    if (s>0) { 
    return [s,-s]; 
    } else { 
    return [0]; 
    } 
} 

जब तक फोन करने वाले सरणी कि वापस आता है के माध्यम से पुनरावृति करने के लिए जानता है, तब तक आप सोने कर रहे हैं।

>sqrts(2) 
[1.4142135623730951, -1.4142135623730951] 
9

ऐसे कई कार्य हैं जो केवल 2 या अधिक संभावनाओं से 1 जवाब लौटाते हैं। उदाहरण के लिए आर्क टेंगेंट। 1 का आर्क टेंगेंट 45 डिग्री के रूप में वापस किया जाता है, लेकिन यह 225 या 405 भी हो सकता है।जैसा कि जीवन और प्रोग्रामिंग में कई चीजों के साथ एक सम्मेलन है जिसे हम जानते हैं और भरोसा कर सकते हैं। स्क्वायर रूट फ़ंक्शन सकारात्मक मान लौटते हैं उनमें से एक है। यह हमारे ऊपर है, प्रोग्रामर, ध्यान में रखने के लिए अन्य समाधान हैं और कोड में आवश्यक होने पर उन पर कार्य करने के लिए।

जिस तरह से यह किनेमेटिक्स और उलटा किनेमेटिक्स समीकरणों से निपटने के दौरान रोबोटिक्स में एक आम मुद्दा है, जहां कार्टेसियन पदों के अनुरूप लिंक पदों के कई समाधान हैं।

+1

मुझे व्यक्तिगत रूप से यह उत्तर सबसे संतोषजनक लगता है। +1। –

2

क्योंकि इसे ऐतिहासिक रूप से परिभाषित किया गया था {{उद्धरण वांछित}} जो फ़ंक्शन के रूप में ज्ञात सतह के वर्ग की तरफ की लंबाई देता है। और उस संदर्भ में लंबाई सकारात्मक है।