次の関数をグラフ化しようとしています。
f(x) = 0 if x is rational else 1 # so 1 if x is irrational
私の計画は、python と matplotlib を使用することです。Python でランダムな無理数を生成するにはどうすればよいですか?
これはディリクレ関数と呼ばれ、どこにも連続しない関数の例です。これは単純な数学的事実であり、数値の任意のペアの間には、無限の有理数と無限の無理数があります。
この関数を実際にプロットすることは、離散ピクセルを使用してプロットしているため、 f(x) = 0 およびf(x) = 1 をプロットすることと同じです。
2 つの落とし穴があります。
いずれにせよ、この種の「問題」は、厳密にプログラミングの問題としてアプローチすることを意図したものではありません。
答えはできません。
あなたができることは、この数が不合理であると見なされた後、いくつかのイプシロンを理解することです。
同じように見えます。
これを考慮してください:2の平方根は無理数です。
wolframlpahはあなたに概算を与えます:1.4142135623730950488016887242096980785696718753769480 .. ..
Pythonは1.4142135623730950488016887242096980785696718753769480のみを認識します。つまり、1+ 4142135623730950488016887242096980785696718753769480/10000000000000000000000000000000000000000000000000000
乱数はほとんどの場合無理数です(つまり、確率1)
def f(x):
return 1
ほとんどの場合、必要に応じて機能します。
コンピュータ プログラムで無理数を表現できないというのは正しくありません。メモリに収まらず、無理数全体を出力することはできませんが、それらを使用していくつかの計算を実行し、「最初の 100 桁を教えてください」などの操作を行うことはできます。それらを一種の怠惰な列挙子として表すことができます。問題は、この種の数が有理数であるかどうかを確認することは停止問題と同等であり、したがって決定できないため、これは実際にはニーズに合わないことです。
しかし、例えば 0 と 1 の間の無理数を選択することは常に不可能というわけではありません。私は最近それを行いましたが、これらの数値の適用は比較する必要があり、アルゴリズムのいくつかの決定はこれらの比較に依存していました。ここでは、それらを怠惰な列挙子として表現してもうまくいきます。比較する場合は、左側から始めて、1 つの数字がより大きな数字になるまで、各数字を比較します。そのため、その場でランダムな数字を生成し、比較対象の数値の対応する数字と異なるまで、生成された数字を配列に格納します。
有限数と、有限部分のみが必要な無限数の違いを明確にするために、前者の場合、数値の長さは固定され、制限されています。後者の場合、有限部分のみを格納する必要があります。桁数ですが、この数は限界を超えて大きくなる可能性があるため、十分な桁数を比較すると、すべての有限数はそのような無限数とは異なります。