เหตุใด 0 ^ 0 ในเครื่องคิดเลข macOS และ iOS จึงให้ผลลัพธ์ที่แตกต่างกันในเวอร์ชั่นต่างๆ


17

ฉันได้ตรวจสอบผลลัพธ์ของ 0 ^ 0 ในเครื่องคิดเลขในรุ่นต่างๆ:

  • iOS 10.3 => 1
  • iOS 11.4 => ข้อผิดพลาด
  • macOS 10.12.6 => 1
  • macOS 10.13.5 => ไม่ใช่ตัวเลข

อะไรคือเหตุผลของความแตกต่าง?


22
ฉันจะต้องยึดติดกับเซียร์ราสูงแล้ว 'เพราะเหตุใดฉันจึงรักขนมปัง NaN ;-))
Tetsujin


ยังnews.ycombinator.com/item?id=8502968 <(แอปเปิ้ลหยุดการเผยแพร่ libm ไลบรารีคณิตศาสตร์เวอร์ชันของพวกเขา)
ดอนสดใส

3
คุณถามเพื่อให้คุณสามารถเข้าใจคณิตศาสตร์หรือคุณขอให้เข้าใจว่าทำไม Apple เปลี่ยนการตีความเป็น 0 ^ 0 หลายครั้ง? หากเป็นอดีตก็มีคำตอบที่ยอมรับได้ หากหลังจากนั้นอาจไม่สามารถตอบได้
zr00

ในเวอร์ชัน 10.11.6 ผลลัพธ์คือ 1
Robert Kowal

คำตอบ:


20

แม้ว่าโดยทั่วไปแล้ว0⁰จะไม่ได้กำหนด แต่บางสาขาของคณิตศาสตร์จะกำหนดอย่างชัดเจนเป็น 1 เพราะอย่างที่คุณเห็นนี่คือค่าที่ฟังก์ชัน y (x) = xˣลู่เข้าหากันที่ n = 0

น้อยลงอย่างเป็นทางการโปรดทราบว่า 0.5 0.5 = 0.707 …; 0.2 0.2 = 0.725 …; 0.1 0.1 = 0.794 …และ 0.01 0.01 = 0.955 … ในขณะที่คุณเข้าใกล้ 0, ผลจะใกล้ 1 ซึ่งทำให้ค่อนข้างตรรกะและมีประโยชน์ในการกำหนด 0 ^ 0 เป็น 1 ในบางกรณี

ดังนั้นจึงไม่มีผลลัพธ์ 3 รายการเหล่านี้ที่ไม่ถูกต้องต่อ se และผลลัพธ์ทั้งหมดนั้นสะท้อนให้เห็นถึงอนุสัญญาที่แตกต่างกันเกี่ยวกับค่าของนิพจน์ที่ไม่ได้กำหนดนี้

มีบทความวิกิพีเดียที่ดีที่อธิบายถึงปัญหานี้ ดูเพิ่มเติมศูนย์ถึงพลังศูนย์ - คือ0⁰ = 1 หรือไม่ .


4
คุณหมายถึงที่ x = 0 ไม่ใช่ n = 0
Ruslan

2
ฉันไม่เคยพบมาก่อนด้วยเหตุผลที่เฉพาะเจาะจงสำหรับการตั้งค่า 0 ^ 0 = 1 ท้ายที่สุด x ^ y ไม่มีข้อ จำกัด ในฐานะ (x, y) → (0,0) อย่างไรก็ตามถ้าคุณเขียนพหุนามทั่วไปในรูปแบบ ∑ c_n x ^ n โดยที่ n ในผลรวมอยู่ในช่วงตั้งแต่ 0 ถึง n (ระดับของพหุนาม) มันจะกลายเป็นสิ่งจำเป็นที่จะมี 0 ^ 0 = 1 หรืออย่างอื่น " คำว่า "คงที่" ไม่คงที่หลังจากทั้งหมด ดูที่นี่ด้วย
Harald Hanche-Olsen

@ HaraldHanche-Olsen นั่นเป็นจุดที่ลึกซึ้งมาก ๆ โปรดลองเขียนคำตอบหรืออย่าลังเลที่จะแก้ไขของฉัน สัญชาติญาณของฉันเกิดจากความจริงที่ว่าฟังก์ชั่นส่วนใหญ่ในรูปแบบ e ^ {αx ^ β * ln ^ {ξx ^ γ + μ}} จะมาบรรจบกับ 1 (ยกเว้นβ = 0 และบางทีกรณีขอบอื่น ๆ ) และชั้นเรียนนั้น พบได้บ่อยในแอปพลิเคชั่นทางวิศวกรรมคือประเภทของสิ่งที่ผู้คนมักจะใช้แอพเครื่องคิดเลขสำหรับ แต่ฉันเข้าใจว่ามันค่อนข้างไกล
undercat สนับสนุน Monica

3
แม้ว่าคำตอบนี้จะให้คำอธิบายที่ดีว่า 0 ^ 0 คืออะไร / สามารถกำหนดได้ แต่ไม่ได้อธิบายว่าทำไม Apple เปลี่ยนการตีความไปสองสามครั้ง
zr00

1
@DawoodibnKareem ความคิดเห็นของฉันด้านบนและอีกประเด็นคำถามที่อ้างอิงใน math.se ควรอธิบายว่าทำไมมันอาจจะมีประโยชน์ที่จะมี 0 ^ 0 เป็น 1 แน่นอนการประชุมดังกล่าวมีราคา: นิพจน์ x ^ y ไม่ต่อเนื่องที่ (0,0)
Harald Hanche-Olsen

13

การใช้งานส่วนใหญ่ของเลขทศนิยมเป็นไปตามมาตรฐาน IEEE 754-2008 ซึ่งระบุว่า pow (0,0) ส่งคืน 1 (ดู§9.2.1)

แต่มันยังนิยามฟังก์ชันอื่นอีกสองฟังก์ชัน: pown (0,0) = 1 และ powr (0,0) = NaN

Wikipedia สรุปดังต่อไปนี้ :

มาตรฐานจุดลอยตัว IEEE 754-2008 ถูกนำมาใช้ในการออกแบบไลบรารีจุดลอยตัวส่วนใหญ่ แนะนำการใช้งานหลายอย่างเพื่อคำนวณพลังงาน: [20]

pow ปฏิบัติต่อ 0 0เป็น 1 หากกำลังเป็นจำนวนเต็มที่แน่นอนผลลัพธ์จะเหมือนกับ pown ไม่เช่นนั้นผลลัพธ์จะเป็น powr (ยกเว้นบางกรณีพิเศษ)

pown ปฏิบัติต่อ 0 0เป็น 1 กำลังจะต้องเป็นจำนวนเต็มที่แน่นอน ค่าถูกกำหนดสำหรับฐานลบ เช่น pown (−3,5) คือ −243 powr ปฏิบัติต่อ 0 0เป็น NaN (Not-a-Number - ไม่ได้กำหนด) ค่ายังเป็น NaN สำหรับกรณีเช่น powr (−3,2) ซึ่งฐานนั้นน้อยกว่าศูนย์ ค่าถูกกำหนดโดย epower × log (ฐาน)

ตัวแปร pow นั้นได้รับแรงบันดาลใจจากฟังก์ชั่น pow จาก C99 เพื่อความเข้ากันได้เป็นหลัก [21] มันมีประโยชน์ส่วนใหญ่สำหรับภาษาที่มีฟังก์ชั่นพลังงานเดียว pown และ powr ได้รับการแนะนำเนื่องจากความขัดแย้งในการใช้ฟังก์ชั่นพลังงานและมุมมองที่แตกต่างกัน (ตามที่ระบุไว้ข้างต้น) [22]

แน่นอนว่าสิ่งนี้ไม่มีผลต่อผลลัพธ์ทางคณิตศาสตร์ที่ถูกต้องคือ: ตามที่คนอื่น ๆ ระบุไว้มีคำตอบที่เป็นไปได้มากกว่าหนึ่งคำตอบและ IEEE ต้องตัดสินใจเองตามอำเภอใจ


5

บางคนที่ Apple คิดว่า 0 ^ 0 เป็นการดำเนินการที่ไม่ถูกต้องและได้รับการแก้ไขแล้ว


5

ศูนย์ถึงพลังของศูนย์คือความขัดแย้ง

  • 0 คูณจำนวนใดก็ได้คือ 0
  • จำนวนใด ๆ ที่กำลัง 0 เป็น 1

มันควรสร้างข้อผิดพลาด เหตุผลเดียวที่คุณไม่เห็นข้อผิดพลาดเกิดขึ้นเนื่องจากข้อเท็จจริงที่ว่ารุ่นของเครื่องคิดเลขที่เป็นปัญหาไม่ได้ดักจับข้อผิดพลาดการป้อนข้อมูลนั้น


9
(สนิมมากมือสมัครเล่น)นักคณิตศาสตร์ที่อยากจะยืนยันว่าขีด จำกัด ของการ 0 ^ x คือ 0เป็น x เข้าใกล้ 0 และขีด จำกัด ของการ x ^ x 1เป็น x เข้าใกล้ 0 ดังนั้นคุณต้องไม่ต่อเนื่องซึ่งเป็นที่นิยามของ Indeterminateและ ความอบอุ่นที่ได้ยินมาเพื่อเห็น NaN ในระบบปฏิบัติการจริงหนึ่งเดียว
bmike

1
อุ่นเสียงของฉันที่ได้ยิน - รูปภาพของแกะที่อบอุ่น toasty ทำปัญหาแคลคูลัสกับ Sheppard ของพวกเขา @bmike :-D
อัลลัน

2
@MrLister“ ถูกกำหนดโดยผู้เขียนบางคนและไม่ได้กำหนดโดยผู้เขียนคนอื่น ๆ ” เป็นวิธีการทางคณิตศาสตร์ที่แม่นยำ ในบริบทเกือบทั้งหมด 0 ^ 0 = 1 เป็นคำจำกัดความที่ถูกต้อง (เช่นเป็นจำนวนหน้าที่จากชุดเปล่าถึงชุดว่าง) ความจริงที่ว่า x ^ y ไม่สามารถขยายออกไปสู่แหล่งกำเนิดได้อย่างต่อเนื่องนั้นเป็นเรื่องที่โชคร้ายและเป็นเหตุผลที่นักการศึกษาบางคนต้องการที่จะปล่อยให้มันไม่ได้กำหนดเพื่อป้องกันความสับสน แต่ถึงแม้ว่าพวกเขาจะต้องใช้ ซีรีย์พาวเวอร์
Eike Schulte

3
@bmike ไม่จำเป็นต้องมีข้อ จำกัด เพียงเพราะx ^ yจะไม่ต่อเนื่องที่(0, 0)ไม่ได้หมายความว่าคุณไม่สามารถกำหนดค่าเป็น0 ^ 0
Dennis

3
0 ^ 0 = 1 ไม่ได้ขัดแย้งอย่างแน่นอน 0 ^ 0 เป็นผลิตภัณฑ์เปล่าดังนั้น 1. 0 ^ 0 คือความสำคัญของชุดฟังก์ชั่นจากเซตว่างถึงเซ็ตเปล่าและมีฟังก์ชันดังกล่าวเพียงหนึ่ง ฟังก์ชันเท่านั้น มันจำเป็นสำหรับหลายชื่อ รายการดำเนินต่อไป
user76284

4

มีข้อโต้แย้งบางส่วนเกี่ยวกับ0⁰ที่ทำให้ฟังก์ชัน x ^ y มีความไม่ต่อเนื่องที่ (x, y) -> (0,0) นี่คือความขัดแย้งเนื่องจากมันเป็นเรื่องไร้สาระทางคณิตศาสตร์เพื่อห้ามฟังก์ชั่นที่มีค่าที่ไม่ต่อเนื่อง

มันเป็นวิธีปฏิบัติทั่วไปในการฝังจำนวนเต็มลงใน reals เพื่อให้ฟังก์ชั่นที่กำหนดไว้ใน reals ตรงกับฟังก์ชั่นเดียวกันที่กำหนดไว้ในจำนวนเต็มเมื่อใดก็ตามที่ฟังก์ชั่นจริงถือว่าค่าที่สำคัญ มีจุดเล็ก ๆ ในการแยกความแตกต่าง 0.0 ^ 0 จาก 0.0 ^ 0.0

ตอนนี้x⁰ที่มีจำนวนเต็ม 0 เป็นเลขชี้กำลังเป็นผลิตภัณฑ์ที่มีปัจจัยศูนย์เท่ากับ x เนื่องจากไม่มีปัจจัยของ x อยู่ในค่าของมันจึงมีจุดเล็ก ๆ ในการกำหนดค่าขึ้นอยู่กับ x และค่าของมันเนื่องจากผลิตภัณฑ์เปล่าค่อนข้างชัดเจน 1 องค์ประกอบที่เป็นกลางสำหรับการคูณ

สิ่งนี้ก็สมเหตุสมผลเช่นกันเพราะมันไม่ได้ จำกัด ทฤษฏีทวินามโดยไม่ได้ตั้งใจให้มีค่าที่ไม่เป็นศูนย์ ในลักษณะนี้เป็นข้อโต้แย้งตามความพยายามทำให้ฟังก์ชั่นx⁰อย่างสมเหตุสมผลที่ x = 0 ทำให้มันถูกกำหนดและต่อเนื่องทุกที่

หากเราลองใช้ฟังก์ชัน 0 ^ x แทนขีด จำกัด ที่ x = 0 + อาจเป็น 0 แต่การกำหนดดังกล่าวยังคงไม่ช่วยรักษาความไม่ต่อเนื่องที่จำเป็นเนื่องจากฟังก์ชันไม่ได้ถูกกำหนดสำหรับค่าลบ x

ตอนนี้เครื่องคิดเลขมักจะคำนวณ x ^ y เป็น exp (y * ln (x)) แน่นอนว่าเป็นข่าวร้ายสำหรับ x = 0 ดังนั้นค่าดังกล่าวจะต้องมีการตั้งโปรแกรมไว้อย่างชัดเจนหรือคุณจะมาถึงที่ไม่ใช่ตัวเลข สำหรับการเขียนโปรแกรมที่ชัดเจนคุณต้องพึ่งพาสัญชาตญาณทางคณิตศาสตร์ของโปรแกรมเมอร์และโปรแกรมเมอร์ทั่วไปจะได้รับคำแนะนำมากขึ้นโดยสัญชาตญาณ pseudomathematical เช่น "ฟังก์ชั่นจะต้องต่อเนื่องที่กำหนดไว้" กว่านักคณิตศาสตร์จะ

นอกจากนี้คุณสามารถคาดหวังความคิดเห็นที่วุ่นวายจากผู้ใช้ที่แตกต่างกันและนักคณิตศาสตร์บริสุทธิ์จะไม่เปลี่ยนกลับไปใช้เครื่องคิดเลขสำหรับวิสัยทัศน์ของพวกเขาเกี่ยวกับความจริงทางคณิตศาสตร์ทั้งหมดนั้นมากดังนั้นคุณจึงไม่สามารถคาดหวังได้ว่า

ดังนั้นผลลัพธ์คือประชาธิปไตยมากกว่าคณิตศาสตร์และเสียงข้างมากของประชาธิปไตยมักจะเปลี่ยนแปลง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.