2017-01-02 3 views
4

私は、彼らがE^zは、少なくともすべての正の、実際の値をとり、実数以上のようにzの範囲」というサンプル命題で示しているが、現在はエリック・リーマン、トム・レイトンでコンピュータ科学のための数学を読んで、証明について読みました一度 "。私はこの命題を完全に理解するのに苦労している。擬似コードで∀y∈R +、∃z∈R、e^z = yをどう書くか?

私は、これはプログラマとしてで近づき、私はそれが本当だったかどうかを確認した場合、それは擬似コードでどのように見えるかを考えるようにしようとしています。

pr = [ all real positive numbers ] 
r = [ all real numbers ] 

for y in pr: 
    for z in r: 

     e = pow(y, z) 
     if e != y: 
      goto outer 

     print "this is true"; 

    outer 

これは、これらの提案ですか? Y∈R +∀

+2

これはしかし実際には全体的に素晴らしい質問です。 stackoverflowでより多くのアルゴリズムと数学的なものを見てうれしいです。 –

+0

"pr = [すべての正の数] r = [すべての実数]"これらは無限に多いだけでなく、計算可能でもないため、すでに問題があります。 –

+0

@ G.Bach私はそれをすでに以下に述べています。問題は、実際のプログラムを作成するのではなく、疑似コード・アルゴリズムでどのように見えるかを確認することでした。 –

答えて

3

、∃Z R、E^Z = Y

∈は、このようなことを、正の実数のセット内のすべてのyため、zは実数のセットに存在することを言っていますexp(z) = y

これが本当であることを確認するプログラムを実際に作成することはできません。最も基本的には小数点演算の不正確さをフローティング、次のような問題

  1. のいずれかが発生しますので、(基本的な読みIs floating point math broken?
  2. 実数は

無限であなたはどの(すべての浮動小数点数の上にこれを確認することができ非常に長い時間がかかりますが、理論的には計算可能です)。しかし、あなたはそうするでしょう。

  1. 可能性があります何z、このような浮動小数点数のセットに正確に十分に存在しないexp(z) = yzなので、あなたの浮動小数点数のセット内のすべてのyためexp(z) = y
  2. があった場合でもzを与えること、これはexp(z) = yを証明しないでしょうRのすべてのyとRのzについて

したがって、全体的には、疑似コードはいくらか考えを表していますが、コンピュータでこれを確認するには実用的でも論理的でもありませんコンピューティングの問題として。

編集: これについて考えるための最善の方法は、プログラムによってこの

R = [SET OF ALL REALS] 
R+ = FILTER (> 0) R 
(MAP (exp) R) == R+ 

N.B.ようになりますexpは約2.718^xあるe^x = SUM [ (x^k)/(k!) | k <- [SET OF ALL NATURALS]]e^nを意味します。

+0

@CarlosGranadosあなたは正しい軌道に乗っています。私がちょうどあなたにもいくつかの使用の実際にかもしれない(実際にプログラミングを行う場合) –

+2

本当のことは無限であるという事実はそれ自体問題ではありません。命題が真であり、実数が*数える*(正確には、再帰的に列挙可能な*)ならば、そのアイデアはうまくいくでしょう:すべての 'y'に対して、このような' z'が最終的に見い出されます。実数が無限に無限*であり、したがって列挙できないという事実は、実際の妨害である。 – lisyarus

+0

@lisyarus無限に数えられる集合は、コンピュータ上で正当に反復することはできません。ブルートは、無限の数え切れない集合を強制的にO(n)(n =無限大)とする。 (たとえそれがaleph-0であっても) –

2

あなたはそれがすべての正の実数を列挙することは可能だったことを想像し、しかも有限の時間でそうするならば、あなたの思考実験のための擬似コードは、より次のようになります。

pr = [ all real positive numbers ] 
r = [ all real numbers ] 

for y in pr: 
    for z in r: 
     e = exp(z) 
     if e == y: 
      goto outer 

    print "false" 
    stop 

    outer: 

print "true" 

の重要な違いあなたの擬似コードから、次のとおりです。exp(z)pow(y, z)を変更

  • (技術的な)。これは、等価的に(結果及びアルゴリズムプリント)命題が真であることが見出されているZ

  • に上げ数Eのみアウター場合zに指数関数である、又は外側ループの任意の反復で、内側のが完了するまでランを(その反復のためYは、任意の実数の指数ではないことを示す)ない場合、ループは終了

  • に実行次に命題であります偽証したその場合、アルゴリズムはその結果を出力して停止します。命題全体が失敗するためには、そのような実数の1つのみがyである。もちろん

、提案を記述するための完全に異なる、数学的な方法は、それが自然対数が定義されていると言うことであり、すべての正の実引数の実数と評価されます。これは、自然対数が指数関数の逆数であるため、e^z = yの対辺の対数をとると、z = log(y)となります。

0

命題はそう、Z∈Rは、任意のY∈R +を与え見つけるプログラムによって証明されています

z = log(y); 
関連する問題