لماذا معظم لغات البرمجة فقط تعطي إجابة واحدة الجذر التربيعي 4?

StackOverflow https://stackoverflow.com/questions/838214

سؤال

معظم لغات البرمجة تعطي 2 والجواب أن الجذر التربيعي 4.ومع ذلك ، هناك إجابتين: 2 و -2.هل هناك أي سبب معين أو تاريخية أو غير ذلك ، لماذا إجابة واحدة فقط عادة ؟

هل كانت مفيدة؟

المحلول

لأن:

  • في الرياضيات ، √x عادة ما لم ينص على خلاف ذلك ، يشير إلى مدير المدرسة (أيإيجابي) جذر x [http://mathworld.wolfram.com/SquareRoot.html].
  • بعض اللغات لا يملكون القدرة على العودة أكثر من قيمة واحدة.
  • حيث يمكنك فقط تطبيق النفي ، والعودة على حد سواء أن تكون زائدة عن الحاجة.

نصائح أخرى

إذا عاد طريقة الجذر التربيعي قيمتين، ثم واحد من هذين سيكون عمليا دائما التخلص منها. بالإضافة إلى إضاعة الذاكرة والتعقيد على قيمة الإرجاع الإضافية، وسوف تستخدم بعض الشيء. الجميع يعرف أنه يمكنك متعددة الجواب إرجاعها بواسطة -1 والحصول على الجذر الآخر.

وأتوقع أن اللغات الرياضية الوحيدة سيعود قيم متعددة هنا، ربما صفيف أو المصفوفة. ولكن بالنسبة لمعظم لغات البرمجة للأغراض العامة، وهناك ربح ضئيل وتكلفة لا يستهان بها لفعل كما اشرتم.

بعض الأفكار:

  • تاريخيا ، مهام كانت تعرف بأنها الإجراءات التي عاد قيمة واحدة.

  • كان ذكي (باستخدام بدائية البرمجة بنيات) لتحديد وظيفة التنظيف التي عادت قيم متعددة مثل هذا.

  • هناك دائما استثناءات إلى القاعدة:

    • 0 على سبيل المثال فقط واحد الجذر (0).
    • لا يمكنك أن تأخذ الجذر التربيعي من رقم سالب (إلا لغة يدعم الأعداد المركبة).هذا يمكن أن تعامل على أنها استثناء (مثل "القسمة 0") في اللغات التي لا تدعم أرقام خيالية أو معقدة ؟
  • وهي عادة ما تكون بسيطة نستنتج 2 التربيعي (ببساطة ينفي القيمة التي تم إرجاعها بواسطة الدالة).ربما كان هذا اليسار باعتبارها ممارسة من قبل المتصل من sqrt() وظيفة ، إذا المجال يتوقف على التعامل مع كل من الموجب (+) والسالب (-) الجذور.

وانه من الاسهل للعودة رقم واحد من اثنين من العودة. وأضاف أن معظم القرارات الهندسية في هذه الطريقة.

وهناك العديد من الوظائف التي يعود فقط 1 إجابة من الاحتمالات 2 أو أكثر. المماس قوس على سبيل المثال. يتم إرجاع الظل قوس من 1 إلى 45 درجة، ولكن يمكن أيضا أن يكون 225 أو حتى 405. كما هو الحال مع العديد من الأشياء في الحياة والبرمجة وجود اتفاقية نعرفها ويمكن الاعتماد عليها. وظائف الجذر التربيعي تعود القيم الإيجابية هو واحد منهم. والأمر متروك لنا، والمبرمجين، أن نضع في اعتبارنا أن هناك حلول أخرى والعمل عليها إذا لزم الأمر في التعليمات البرمجية.

وبالمناسبة هذه هي قضية مشتركة في مجال الروبوتات عند التعامل مع الحركيات والمعادلات الكينماتيكا العكسية حيث هناك حلول متعددة من الروابط المواقف المقابلة لمواقف الديكارتية.

في الرياضيات، من خلال اتفاقية انها دائما افترض أنك تريد الجذر التربيعي الموجب لشيء إلا إذا كنت أقول صراحة على خلاف ذلك. الجذر التربيعي لأربعة هي حقا اثنين. إذا كنت تريد إجابة سلبية، ووضع علامة سلبية في الجبهة. إذا كنت تريد على حد سواء، ووضع علامة زائد أو ناقص. بدون هذه الاتفاقية سيكون من المستحيل لكتابة المعادلات. كنت لا تعرف أبدا ما يقصد الشخص حتى لو لم تضع علامة أمام (لأنه يمكن أن يكون سلبيا من الجذر التربيعي سلبي، على سبيل المثال). أيضا، كيف بالضبط أن تكتب أي نوع من التعليمات البرمجية الكمبيوتر التي تنطوي على الرياضيات إذا بدأت شركات عودته قيمتين؟ فإنه كسر كل شيء.

والاستثناء المؤسف أن هذه الاتفاقية هو عندما حل للمتغيرات. في المعادلة التالية:

س ^ 2 = 4

لا يوجد لديك خيار سوى النظر في كل القيم الممكنة للX. إذا كنت تأخذ الجذر التربيعي لكلا الجانبين، وتحصل س = 2 ولكن الآن يجب أن تضع في علامة زائد أو ناقص للتأكد من أنك لا تغفل أي حلول ممكنة. أيضا، تذكر أنه في هذه الحالة فإنه من الناحية الفنية X التي يمكن أن تكون إما زائد أو ناقص، وليس الجذر التربيعي من أربعة.

ولأن أنواع متعددة عودة مزعج لتنفيذها. إذا كنت حقا بحاجة إلى نتيجة أخرى، ليس من السهل بما فيه الكفاية لمجرد متعددة الناتج -1؟

ولأن معظم المبرمجين فقط تريد إجابة واحدة.

وانها السهل بما فيه الكفاية لتوليد قيمة سالبة من قيمة إيجابية إذا كان الطالب يريد ذلك. بالنسبة لمعظم رمز المتصل يستخدم فقط في قيمة إيجابية.


ولكن، في الوقت الحاضر فمن السهل للعودة قيمتين في العديد من اللغات. في جافا سكريبت:

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

وطالما أن الطالب يعرف تكرار خلال مجموعة أن يعود، وكنت الذهب.

>sqrts(2)
[1.4142135623730951, -1.4142135623730951]

وأعتقد لأن وظيفة تسمى "الجذر التربيعي"، وإذا أردت جذور متعددة، قد تضطر إلى استدعاء الدالة "sqrts"، التي لا وجود لها، لذلك لا يمكنك أن تفعل ذلك.

والجواب الأكثر خطورة هو أنك تشير إلى نسخة معينة من قضية أكبر. العديد من المعادلات، وظائف عادة العكسية (بما في ذلك الجذر التربيعي) لديها الحلول الممكنة متعددة، مثل جيب الزاوية القوسي، الخ، وهذه هي، بشكل عام، قضية. مع جيب الزاوية القوسي، على سبيل المثال، ينبغي للمرء أن عودة عدد لا حصر له من الأجوبة؟ انظر، على سبيل المثال، مناقشات حول تخفيضات فرع .

ولأن كان يعرف تاريخيا {{بحاجة لمصدر}} عن وظيفة والتي تعطي طول ضلع مربع من سطح المعروفة. وطول هو إيجابي في هذا السياق.

ويمكن أن أقول لكم دائما ما هو رقم آخر، لذلك ربما ليس من الضروري أن يعود كل منهما.

ومن المرجح أنه عندما يستخدم الناس حاسبة لمعرفة الجذر التربيعي، انهم يريدون فقط قيمة إيجابية.

والذهاب خطوة أبعد ونسأل لماذا سوف آلة حاسبة الخاصة بك لا تسمح لك أخذ الجذر التربيعي لعدد سالب. فمن الممكن، وذلك باستخدام أرقام خيالية، ولكن للمستخدم العادي لديه الصفر تماما استخدام لهذا الغرض.

على أرقام خيالية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top