macOSとiOSの計算機の0 ^ 0が異なるバージョンで異なる結果を与えるのはなぜですか?


17

異なるバージョンの計算機で0 ^ 0の結果を確認しました。

  • iOS 10.3 => 1
  • iOS 11.4 =>エラー
  • macOS 10.12.6 => 1
  • macOS 10.13.5 =>数字ではない

違いの理由は何ですか?


22
ハイシエラに固執する必要があります '私はNaNパンが大好きだ;
鉄人


また、news.ycombinator.com / item?id = 8502968 <(アップルは、数学ライブラリlibmのバージョンの公開を停止しました)
明るくしない

3
数学を理解できるように求めているのですか、それともAppleが0 ^ 0の解釈を複数回変更した理由を理解するように求めているのですか?前者の場合、受け入れられる回答が投稿されています。後者の場合、必ずしも回答できるとは限りません。
zr00

バージョン10.11.6では結果は1である
ロバート・コワル

回答:


20

0⁰は一般に定義されていませんが、数学の一部の分岐では明示的に1として定義されています

あまり正式ではないことに注意してください、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を、近づくだろう定義する 1と0 ^ 0をいくつかのケースで

したがって、これらの3つの結果自体は正しくありません。代わりに、これらはすべて、この未定義の式の値に関する異なる規則を反映しています。

この問題を説明するウィキペディアの良い記事があります。「ゼロのゼロ乗」も参照してください–0⁰= 1ですか?


4
n = 0ではなくx = 0を意味します。
ルスラン

2
0 ^ 0 = 1を設定するための特定の根拠に出会ったことはありません。結局、x ^ yには(x、y)→(0,0)のような制限はありません。ただし、一般的な多項式を∑ c_n x ^ nの形式で記述し、合計のnが0からn(多項式の次数)の範囲である場合、0 ^ 0 = 1にするか、定数」という用語は結局のところそれほど一定ではありません。こちらもご覧ください。
ハラルドハンシュオルセン

@ HaraldHanche-Olsenこれは非常に洞察に富んだポイントです。答えを書くことを検討するか、自由に編集してください。私の直感は、e ^ {αx^β* ln ^ {ξx^γ+μ}}の形式のほとんどの関数が1に収束するという事実(β= 0およびその他のエッジケースを除く)、およびそのクラスに由来します。エンジニアリングアプリケーション、つまり人々が電卓アプリを使用する可能性が高い種類のアプリケーションで頻繁に発生しますが、それは少し手に負えないことを理解しています。
undercatはモニカをサポートしています

3
この回答は、0 ^ 0が何であるか/定義される可能性があるかについての適切な説明を提供しますが、Appleが数回解釈を変更した理由を説明しません。
-zr00

1
@DawoodibnKareem上記の私のコメントと、要点であるmath.seで参照されている質問は、なぜ0 ^ 0が1であることが有用であるのかを説明する必要があります。 yは(0,0)で不連続です。
ハラルドハンシュオルセン

13

浮動小数点演算のほとんどの実装は、IEEE 754-2008標準に従っています。これは、pow(0,0)が1を返すことを指定しています(§9.2.1を参照)。

ただし、pown(0,0)= 1およびpowr(0,0)= NaNという2つの関数も定義しています。

ウィキペディアでは、次のように要約しています

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 – undefined)として扱います。また、値は、ベースがゼロより小さいpowr(-3,2)のような場合のNaNです。値はepower×log(base)で定義されます。

powバリアントは、主に互換性のためにC99のpow関数に触発されています。[21] 主に単一のべき関数を持つ言語で役立ちます。pownとpowrのバリアントは、電力関数の使用の競合と異なる視点(前述)のために導入されました。[22]

もちろん、これは正しい数学的結果とは何の関係もありません。他の人が指摘したように、複数の可能な答えがあり、IEEEは任意の決定をしなければなりませんでした。



5

ゼロのゼロ乗は矛盾です

  • 0回、任意の数は0
  • 0乗の任意の数は1です

それはすべきエラーが発生します。生成されるエラーが表示されない唯一の理由は、問題の電卓のバージョンがその入力エラーをトラップしなかったという事実によるものです。


9
(非常に錆びたアマチュア)の数学者がいることを主張したい0 ^ xの上限が0で、xが0に近づくとしてのx ^×1さの限界 xが0に近づくと、したがって、あなたが不連続持っている不定の非常に定義をし、温めるは1つの真のOS上ではNaNを見て聞いて、私の
bmike

1
私の耳を温めます -シェパードで微積分の問題をしている乾いた暖かい羊の画像、@ bmike :-D-
アラン

2
@MrListerは、「一部の著者によって定義され、他の著者によって定義されていない」ことが、数学の正確な動作です。ほとんどすべてのコンテキストで、0 ^ 0 = 1が正しい定義です(たとえば、空のセットから空のセットまでの関数の数です)。x ^ yを連続して原点に拡張できないという事実は不幸であり、分析の教育者の中には混乱を防ぐために未定義のままにすることを好む理由がありますが、一度到達すれば0 ^ 0 = 1を取りますパワーシリーズ。
アイケシュルテ

3
@bmike制限を伴う必要はありません。x ^ y(0、0)で不連続になるからといって、値を0 ^ 0に
Dennis

3
0 ^ 0 = 1は絶対に矛盾ではありません。^ 0は空の製品、したがって1 0 ^ 0である関数の集合の濃度から空集合空集合に、そして正確に存在する1つの このような機能は多項式に必要です。リストは続きます。
user76284

4

0xについては、(x、y)->(0,0)で不連続性をもつ関数x ^ yに帰着する半論争があります。不連続点で値を持つ関数を禁止することは数学的なナンセンスなので、これは半論争です。

実数で定義された関数が整数で定義された関数と一致するように実数に整数を埋め込むことは、実数関数が整数値をとるときはいつでも一般的な慣行です。したがって、0.0 ^ 0と0.0 ^ 0.0を区別する意味はほとんどありません。

これで、整数0を指数とするx⁰は、xのゼロファクターを含む積になります。xの要素はその値に含まれていないため、xに依存する値を割り当てる意味はほとんどなく、空の製品としての値は明らかに1であり、乗算の中立要素です。

これは、二項定理をゼロ以外の値にto意的に制限しないため、理にかなっています。ある意味では、これは関数x⁰をx = 0で賢明に完成させ、どこでも定義され連続するようにすることに基づく議論です。

代わりに関数0 ^ xでこれを試すと、x = 0 +での制限は0になりますが、関数は負のxに対して未定義であるため、それ自体を定義しても本質的な不連続の解消には役立ちません。

現在、電卓はx ^ yをexp(y * ln(x))として計算する傾向があります。もちろん、これはx = 0にとって悪いニュースです。したがって、そのような値は明示的にプログラムする必要があります。そうしないと、非数に到達します。明示的なプログラミングでは、プログラマーの数学的な直感に頼らなければなりません。典型的なプログラマーは、数学者よりも「定義された場所で関数が連続しなければならない」などの擬似数学的な直感に導かれます。

さらに、さまざまなユーザーからのコメントの寄せ集めを期待することができ、純粋な数学者は数学的な真実のビジョンのために電卓にあまり戻らないので、他の人の入力を圧倒することは期待できません。

したがって、結果は数学的なものよりも民主的なものであり、民主的な多数派は変化する傾向があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.