Mengapa 0 ^ 0 dalam kalkulator macOS dan iOS memberikan hasil berbeda pada versi yang berbeda?

17

Saya telah memeriksa hasil 0 ^ 0 di kalkulator pada versi yang berbeda:

  • iOS 10.3 => 1
  • iOS 11.4 => Kesalahan
  • macOS 10.12.6 => 1
  • macOS 10.13.5 => Bukan Angka

Apa alasan perbedaannya?

mspanc
sumber
22
Aku harus tetap berpegang pada High Sierra kalau begitu, karena aku suka roti NaN ;-))
Tetsujin
juga news.ycombinator.com/item?id=8502968 <(apel berhenti menerbitkan libm perpustakaan matematika versi mereka)
don bright
3
Apakah Anda bertanya sehingga Anda dapat memahami matematika, atau Anda bertanya untuk memahami mengapa Apple telah mengubah interpretasinya 0 ^ 0 beberapa kali? Jika yang pertama, ada jawaban yang dapat diterima diposting; jika yang terakhir, maka itu mungkin belum tentu bisa dijawab.
zr00
Dalam versi 10.11.6 hasilnya adalah 1
Robert Kowal

Jawaban:

20

Sementara 0⁰ umumnya tidak terdefinisi, beberapa cabang matematika secara eksplisit mendefinisikannya sebagai 1 karena, seperti yang Anda lihat , ini adalah nilai yang fungsi y (x) = xˣ konvergen pada n = 0.

Kurang formal, perhatikan bahwa 0,5 0,5 = 0,707 ...; 0,2 0,2 = 0,725 ...; 0,1 0,1 = 0,794 ... dan 0,01 0,01 = 0,955 .... Saat Anda mendekati 0, hasilnya akan mendekati 1, yang membuatnya cukup logis dan praktis untuk mendefinisikan 0 ^ 0 sebagai 1 dalam beberapa kasus .

Dengan demikian, tidak satupun dari 3 hasil ini yang tidak benar per se dan sebaliknya mereka semua mencerminkan konvensi yang berbeda pada nilai dari ekspresi yang tidak ditentukan ini.

Ada artikel Wikipedia yang bagus untuk menjelaskan masalah ini. Lihat juga Nol ke nol daya - apakah 0⁰ = 1? .

undercat mendukung Monica
sumber
4
Maksud Anda di x = 0, bukan n = 0.
Ruslan
2
Saya belum pernah menemukan alasan khusus untuk pengaturan 0 ^ 0 = 1. Lagi pula, x ^ y tidak memiliki batas sebagai (x, y) → (0,0). Namun , jika Anda menulis polinomial umum dalam bentuk ∑ c_n x ^ n, di mana n dalam jumlah berkisar dari 0 hingga n (tingkat polinomial), menjadi penting untuk memiliki 0 ^ 0 = 1, atau yang lain “ konstanta ”istilahnya tidak begitu konstan. Lihat juga di sini.
Harald Hanche-Olsen
@ HaraldHanche-Olsen Itu poin yang sangat berwawasan luas, silakan pertimbangkan untuk menulis jawaban, atau merasa bebas untuk mengedit milik saya. Intuisi saya berasal dari fakta bahwa sebagian besar fungsi dalam bentuk e ^ {αx ^ β * ln ^ {ξx ^ γ + μ}} akan menyatu menjadi 1 (kecuali untuk β = 0 dan mungkin beberapa kasus tepi lainnya), dan kelas itu sering dijumpai dalam aplikasi teknik, yaitu jenis barang yang kemungkinan akan digunakan oleh aplikasi kalkulator, tapi saya mengerti itu agak dibuat-buat.
Undercat mendukung Monica
3
Meskipun jawaban ini memberikan penjelasan yang baik tentang 0/0 yang dapat didefinisikan sebagai, itu tidak menjelaskan mengapa Apple telah mengubah interpretasi mereka beberapa kali.
zr00
1
@DawoodibnKareem Komentar saya di atas, dan lebih tepatnya, pertanyaan yang direferensikan pada math.se, harus menjelaskan mengapa mungkin bermanfaat jika 0 ^ 0 menjadi 1. Tentu saja, konvensi semacam itu harus dibayar mahal: Ekspresi x ^ y terputus pada (0,0).
Harald Hanche-Olsen
13

Sebagian besar implementasi aritmatika floating point mengikuti standar IEEE 754-2008, yang menentukan pow (0,0) mengembalikan 1 (lihat §9.2.1).

Tetapi juga mendefinisikan dua fungsi lainnya: pown (0,0) = 1 dan powr (0,0) = NaN.

Wikipedia merangkumnya sebagai berikut :

Standar titik-mengambang IEEE 754-2008 digunakan dalam desain sebagian besar perpustakaan titik-mengambang. Ini merekomendasikan sejumlah operasi untuk menghitung daya: [20]

pow memperlakukan 0 0 sebagai 1. Jika daya adalah bilangan bulat yang tepat, hasilnya sama dengan pown, jika tidak hasilnya adalah untuk powr (kecuali untuk beberapa kasus luar biasa).

pown memperlakukan 0 0 sebagai 1. Daya harus bilangan bulat yang tepat. Nilai didefinisikan untuk basis negatif; misalnya, pown (−3,5) adalah −243. powr memperlakukan 0 0 sebagai NaN (Not-a-Number - undefined). Nilainya juga NaN untuk kasus-kasus seperti powr (−3,2) di mana basisnya kurang dari nol. Nilai ditentukan oleh epower × log (basis).

Varian pow terinspirasi oleh fungsi pow dari C99, terutama untuk kompatibilitas. [21] Berguna sebagian besar untuk bahasa dengan fungsi daya tunggal. Varian pown dan powr telah diperkenalkan karena penggunaan fungsi fungsi yang saling bertentangan dan sudut pandang yang berbeda (seperti yang dinyatakan di atas). [22]

Tentu saja ini tidak ada hubungannya dengan apa hasil matematika yang benar: seperti yang lain telah dicatat, ada lebih dari satu jawaban yang mungkin, dan IEEE harus membuat keputusan yang sewenang-wenang.

Michael Kay
sumber
5

Seseorang di Apple menemukan bahwa 0 ^ 0 adalah operasi yang tidak valid dan memperbaikinya.

nohillside
sumber
5

Nol dengan kekuatan nol adalah kontradiksi

  • 0 kali angka berapa pun adalah 0
  • angka berapapun 0 adalah 1

Ini harus menghasilkan kesalahan. Satu-satunya alasan Anda tidak melihat kesalahan yang dihasilkan adalah karena fakta bahwa versi Kalkulator yang dimaksud tidak menjebak untuk kesalahan input itu.

Allan
sumber
9
The (sangat berkarat amatir) matematika ingin berpendapat bahwa batas 0 ^ x adalah 0 sebagai x mendekati 0 dan batas x ^ x adalah 1 sebagai x mendekati 0 karena itu Anda memiliki diskontinuitas yang merupakan definisi yang sangat tak tentu dan menghangatkan dengar saya untuk melihat NaN pada satu OS yang benar
bmike
1
menghangatkan suara saya - gambar domba hangat bakar bakar melakukan masalah kalkulus dengan Sheppard mereka, @bmike :-D
Allan
2
@MrLister “didefinisikan oleh beberapa penulis dan terdefinisi oleh penulis lain” adalah justru bagaimana matematika bekerja. Di hampir semua konteks, 0 ^ 0 = 1 adalah definisi yang benar (mis. Itu adalah jumlah fungsi dari set kosong ke set kosong). Fakta bahwa x ^ y tidak dapat terus diperluas ke asalnya sangat disayangkan dan merupakan alasan bahwa beberapa pendidik analisis lebih suka membiarkannya tidak terdefinisi untuk mencegah kebingungan, tetapi bahkan mereka harus mengambil 0 ^ 0 = 1 begitu mereka mencapai seri kekuatan.
Eike Schulte
3
@bmike Tidak perlu melibatkan batasan. Hanya karena x ^ y akan terputus pada (0, 0) tidak berarti Anda tidak dapat menetapkan nilai ke 0 ^ 0
Dennis
3
0 ^ 0 = 1 sama sekali bukan kontradiksi. 0 ^ 0 adalah produk kosong , dan karenanya 1. 0 ^ 0 adalah kardinalitas himpunan fungsi dari himpunan kosong ke himpunan kosong, dan hanya ada satu fungsi seperti itu . Ini perlu untuk polinomial . Daftarnya berlanjut.
user76284
4

Ada beberapa semikontroversi tentang 0⁰ yang bermuara pada fungsi x ^ y yang memiliki diskontinuitas pada (x, y) -> (0,0). Ini adalah semikontroversi karena merupakan matematis omong kosong untuk melarang fungsi yang memiliki nilai pada diskontinuitas.

Ini adalah praktik umum untuk menanamkan bilangan bulat ke dalam real sehingga fungsi yang didefinisikan pada real cocok dengan fungsi yang sama yang didefinisikan pada bilangan bulat kapan pun fungsi nyata mengasumsikan nilai integral. Jadi ada gunanya membedakan 0,0 ^ 0 dari 0,0 ^ 0,0.

Sekarang x⁰ dengan bilangan bulat 0 sebagai eksponen adalah produk yang mengandung faktor nol x. Karena tidak ada faktor x yang terkandung dalam nilainya, maka tidak ada gunanya menetapkan nilai tergantung pada x, dan nilainya sebagai produk kosong cukup jelas 1, elemen netral untuk perkalian.

Ini juga masuk akal karena tidak semena-mena membatasi teorema binomial ke nilai-nilai non-nol. Dalam suatu cara, ini adalah argumen yang didasarkan pada upaya untuk menyelesaikan fungsi x⁰ dengan masuk akal pada x = 0, membuatnya didefinisikan dan kontinu di mana-mana.

Jika kita mencoba ini dengan fungsi 0 ^ x sebagai gantinya, batas di x = 0 + mungkin 0, tetapi mendefinisikannya seperti itu masih tidak membantu menyembuhkan diskontinuitas esensial karena fungsi tidak ditentukan untuk x negatif.

Sekarang kalkulator cenderung menghitung x ^ y sebagai exp (y * ln (x)). Tentu saja itu berita buruk untuk x = 0. Jadi, nilai-nilai seperti itu harus diprogram secara eksplisit atau Anda akan tiba di bukan-nomor. Untuk pemrograman eksplisit, Anda harus mengandalkan intuisi matematis programmer, dan tipikal programmer akan lebih dipandu oleh intuisi pseudomathematical seperti "suatu fungsi harus kontinu jika didefinisikan" daripada seorang ahli matematika.

Selain itu, Anda dapat mengharapkan banyak komentar dari pengguna yang berbeda, dan matematikawan murni tidak akan kembali ke kalkulator karena visi mereka tentang kebenaran matematika terlalu banyak, sehingga Anda tidak dapat mengharapkan input mereka untuk mengalahkan yang lain.

Jadi hasilnya lebih demokratis daripada matematika, dan mayoritas demokratis cenderung berubah.


sumber