MacOS ve iOS hesap makinesindeki 0 ^ 0 neden farklı sürümlerde farklı sonuçlar veriyor?


17

Farklı sürümlerde hesap makinesinde 0 ^ 0 sonucunu kontrol ettim:

  • iOS 10.3 => 1
  • iOS 11.4 => Hata
  • macOS 10.12.6 => 1
  • macOS 10.13.5 => Sayı Değil

Farkın nedeni nedir?


22
O zaman High Sierra'ya bağlı kalmam gerekecek, çünkü NaN ekmeğini seviyorum ;-))
Tetsujin


ayrıca news.ycombinator.com/item?id=8502968 <(apple matematik kütüphanesi sürümlerini yayınlamayı bıraktı)
parlak

3
Matematiği anlayabilmenizi mi istiyorsun yoksa Apple'ın yorumunu neden birden çok kez 0 ^ 0 değiştirdiğini anlamak mı istiyorsun? Eğer eski ise, kabul edilebilir bir cevap var; ikincisi ise, bu mutlaka cevaplanabilir olmayabilir.
zr00

10.11.6 sürümünde sonuç 1
Robert Kowal

Yanıtlar:


20

0⁰ genellikle tanımsız olsa da, bazı matematik dalları bunu açıkça 1 olarak tanımlar , çünkü görebileceğiniz gibi bu, y (x) = xˣ fonksiyonunun n = 0'da birleştiği değerdir.

Daha az resmi olarak, 0.5 0.5 = 0.707…; 0,2 0,2 = 0,725…; 0.1 0.1 = 0.794… ve 0.01 0.01 = 0.955…. 0'a yaklaştıkça sonuç 1'e yaklaşacaktır, bu da bazı durumlarda 0 ^ 0'ı 1 olarak tanımlamayı oldukça mantıklı ve kullanışlı hale getirir .

Bu nedenle, bu 3 sonucun hiçbiri kendi başına yanlış değildir ve bunun yerine hepsi bu tanımsız ifadenin değeri hakkındaki farklı kuralları yansıtmaktadır.

Sorunu açıklayan iyi bir Wikipedia makalesi var . Ayrıca bkz . Sıfır güce sıfır - 0⁰ = 1? .


4
N = 0 değil, x = 0 demek istiyorsun.
Ruslan

2
Daha önce 0 ^ 0 = 1 ayarlamak için belirli bir mantıkla karşılaşmadım. Sonuçta, x ^ y'nin (x, y) → (0,0) olarak bir sınırı yoktur. Bununla birlikte , ∑ c_n x ^ n biçiminde genel bir polinom yazarsanız, toplamdaki n 0 ila n (polinom derecesi) arasında değişirse, 0 ^ 0 = 1 veya " sabit "terimi sonuçta o kadar sabit değildir. Ayrıca buraya bakınız.
Harald Hanche-Olsen

@ HaraldHanche-Olsen Bu çok anlayışlı bir nokta, lütfen bir cevap yazmayı düşünün ya da benimkini düzenlemekten çekinmeyin. Sezgim, e ^ {αx ^ β * ln ^ {ξx ^ γ + μ}} biçimindeki çoğu işlevin 1'e (β = 0 ve belki de diğer bazı kenar durumlar hariç) ve bu sınıftan yakınlaşmasından kaynaklandı. mühendislik uygulamalarında sık sık karşılaşılır, yani insanların hesap makinesi uygulamasını kullanacağı şeyler, ancak bunun biraz zorlandığını anlıyorum.
undercat, Monica

3
Bu cevap, 0 ^ 0'ın ne olduğu / tanımlanabileceği hakkında iyi bir açıklama verse de, Apple'ın yorumlarını neden birkaç kez değiştirdiğini açıklamıyor.
zr00

1
@DawoodibnKareem Yukarıdaki yorumum ve daha da önemlisi, math.se ile ilgili başvurulan soru, 0 ^ 0 1 olmanın neden yararlı olabileceğini açıklamalıdır. Tabii ki, böyle bir konvansiyonun bir bedeli vardır: x ^ ifadesi y, (0,0) 'da süreksizdir.
Harald Hanche-Olsen

13

Kayan nokta aritmetiğinin çoğu uygulaması, pow (0,0) değerinin 1 döndürdüğünü belirten IEEE 754-2008 standardını takip eder (bkz. §9.2.1).

Ancak, diğer iki işlevi de tanımlar: pown (0,0) = 1 ve powr (0,0) = NaN.

Wikipedia bunu şöyle özetliyor :

IEEE 754-2008 kayan nokta standardı, çoğu kayan nokta kitaplığının tasarımında kullanılır. Bir güç hesaplamak için bir dizi işlem yapılmasını önerir: [20]

pow 0 0'ı 1 olarak kabul eder . Eğer güç tam bir tamsayı ise sonuç pown ile aynıdır, aksi takdirde sonuç powr ile aynıdır (bazı istisnai durumlar hariç).

pown 0 0'ı 1 olarak kabul eder . Güç tam bir tamsayı olmalıdır. Değer negatif bazlar için tanımlanır; örneğin, pown (−3,5) −243'tür. powr 0 0'ı NaN (Sayı Değil - tanımsız) olarak kabul eder. Bazın sıfırdan küçük olduğu powr (−3,2) gibi durumlarda da değer NaN'dir. Değer epower × log (taban) ile tanımlanır.

Pow değişkeni, temel olarak uyumluluk için C99'daki pow işlevinden esinlenmiştir. [21] Çoğunlukla tek bir güç işlevine sahip diller için kullanışlıdır. Pown ve powr varyantları, güç işlevlerinin çakışan kullanımı ve farklı bakış açıları (yukarıda belirtildiği gibi) nedeniyle tanıtılmıştır. [22]

Elbette bunun doğru matematiksel sonucun ne olduğu üzerinde hiçbir etkisi yoktur: diğerlerinin de belirttiği gibi, birden fazla olası cevap vardır ve IEEE keyfi bir karar vermek zorunda kaldı.


5

Apple'dan biri 0 ^ 0'ın geçersiz bir işlem olduğunu anladı ve düzeltti.


5

Sıfırın gücüne sıfır bir çelişkidir

  • 0 kez herhangi bir sayı 0
  • 0 gücüne herhangi bir sayı 1'dir

Bu gerektiğini bir hata oluşturabilir. Bir hatanın oluşturulmasını görmemenizin tek nedeni, söz konusu Hesap Makinesi sürümünün bu giriş hatasını yakalamamasından kaynaklanmaktadır.


9
(Çok paslı amatör) matematikçi iddia etmek istediğiniz 0 sınırı ^ x 0 x 0 yaklaşımlar gibi sınırı x ^ x 1'dir x, 0 nedenle bir süreksizlik vardır yaklaşırken belirsiz çok tanımı ve
warms

1
duydum ısıtıyor - Sheppard ile matematik problemleri yapıyor toasty sıcak koyun görüntüleri, @bmike :-D
Allan

2
@MrLister “bazı yazarlar tarafından tanımlanmış ve diğer yazarlar tarafından tanımlanmamıştır” tam olarak matematiğin çalışma şeklidir . Hemen hemen tüm bağlamlarda, 0 ^ 0 = 1 doğru tanımdır (örneğin, boş kümeden boş kümeye işlevlerin sayısıdır). X ^ y'nin kökene sürekli olarak genişletilememesi talihsizdir ve bazı analiz eğitimcilerinin karışıklığı önlemek için tanımsız bırakmayı tercih etmelerinin nedeni, ancak bir kez ulaştıklarında 0 ^ 0 = 1 almaları gerekir. güç serisi.
Eike Schulte

3
@bmike Sınırları dahil etmeye gerek yoktur. Çünkü x ^ y de süreksiz olurdu (0, 0) Eğer bir değer atamak anlamına gelmez 0 ^ 0
Dennis

3
0 ^ 0 = 1 kesinlikle bir çelişki değildir . 0 ^ 0 için olan , boş bir ürün ve bu nedenle 1. 0 ^ 0 olan fonksiyonlar seti kardinalitesi gelen boş grubu boş seti, tam olarak orada bir tür fonksiyon . Polinomlar için gereklidir . Liste devam ediyor.
user76284

4

(X, y) -> (0,0) değerinde bir süreksizliği olan x ^ y fonksiyonuna kadar kaybolan yaklaşık 0⁰ civarında bir yarı tartışma vardır. Bu bir yarı tartışmadır çünkü süreksizlikte bir değere sahip bir işlevi yasaklamak matematiksel saçmalıktır.

Tamsayılar, gerçekler üzerinde tanımlanan bir fonksiyon, gerçek fonksiyon integral değerleri her aldığında tamsayılarda tanımlanan fonksiyonla eşleşecek şekilde gerçeklere gömmek genel bir uygulamadır. Bu nedenle 0.0 ^ 0'ı 0.0 ^ 0.0'dan ayırmanın pek bir anlamı yoktur.

Şimdi ⁰ tamsayı olarak 0 tamsayı ile x'in tam sıfır faktörlerini içeren bir üründür. Değerinde x faktörü bulunmadığından, x'e bağlı olarak bir değer atamanın pek bir anlamı yoktur ve boş bir ürün olarak değeri açıkça çarpma için nötr bir unsur olan 1'dir.

Binom teoremini sıfırdan farklı değerlerle keyfi olarak sınırlamadığı için bu da mantıklıdır. Bir bakıma bu, x⁰ fonksiyonunu x = 0'da mantıklı bir şekilde tamamlamaya çalışarak her yerde tanımlanmış ve sürekli hale getirmeye dayanan bir argüman.

Bunu 0 ^ x işleviyle denersek, x = 0 + 'daki sınır 0 olabilir, ancak bu şekilde tanımlamak, işlev negatif x için tanımlanmadığı için temel süreksizliğin iyileştirilmesine yardımcı olmaz.

Şimdi hesap makineleri x ^ y değerini exp (y * ln (x)) olarak hesaplama eğilimindedir. Tabii ki bu x = 0 için kötü bir haber. Bu nedenle, bu tür değerlerin açıkça programlanması gerekir, aksi takdirde bir sayıya ulaşmazsınız. Açık programlama için, programlayıcının matematiksel sezgisine güvenmeniz gerekir ve tipik programcı, bir matematikçiden daha çok "bir fonksiyon tanımlandığı yerde sürekli olmalıdır" gibi psödomomatik sezgi tarafından yönlendirilir.

Buna ek olarak, farklı kullanıcılardan bir yorum dalgası bekleyebilirsiniz ve saf matematikçiler, matematiksel gerçek vizyonları için hesap makinelerine geri dönmeyeceklerdir, bu nedenle girdilerinin başkalarının bataklığını yapmasını bekleyemezsiniz.

Dolayısıyla sonuç, matematiksel olandan daha demokratik bir sonuçtur ve demokratik çoğunluklar değişme eğilimindedir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.