倍増カスケード


12

最初に、数学的な間奏、短く、あなたの価値があります:

の場合0 < a < 4ロジスティック関数 f(x) = ax(1-x)は間隔[0,1]を内部にマッピングします。これは、反復ゲームをプレイできることを意味します。たとえば、a = 2の場合、初期値0.3は0.42になり、0.4872になります。

パラメーターaが増加するfと、次の意味で2次関数はより複雑になります。

  • 0 < a < 1 すべての初期値は0に向かって反復します。
  • 1 < a < 3 0は反発になりますが、すべての反復を引き付ける新しい固定小数点(a-1)/ aがあります。
  • 3 < a < 1+sqrt(6) 新しい固定点は反発しますが、2つの引き付け点のサイクルが表示されます。
  • 3.44949... < a < 3.54409... 2サイクルは反発しますが、4つの引き付け点のサイクルが表示されます。

フェイゲンバウムは、これらのパラメーター間隔の長さが4.6692...フェイゲンバウム定数にますます近づく速度で減少することに気付きました。素晴らしい発見は、この期間2 分岐シーケンスは、(二次放物線のように)増加してから減少する関数によって共有される一般的な現象であるということです。これはカオス普遍性に関する最初のレポートの1つでした。

さあ、挑戦しましょう!選択した精度でファイゲンバウム定数を計算する最短のコードを作成します。ここでのポイントは、グーグルで検索した数値をエンコードしてシステムをごまかすことではなく、実際にコンピューターに値を見つけさせることです。参考のため、30桁の定数は次のとおりです。

4.669201609102990671853203821578


5
この定数の計算にまだ挑戦していないことに驚いています。これは私たちが見逃した素晴らしいアイデアです。最も近いのは、ロジスティックアトラクタプロットすることです。コードに最大エラーまたは桁数を取り入れて、その精度内で定数を生成することをお勧めします(ある時点以降のマシンの制限を無視します)。または、定数に収束するように、i番目と(i + 1)番目の2倍間隔の比率を計算することもできます。正確さを選択するゴルファーはあいまいすぎて、ハードコーディングしないことは強制できません。
xnor

私はこのチャレンジをどのように表現するか一生懸命考えました。問題は、これを正確に計算するのは非常に難しいことであるため、ブルートフォースで余分な数字を取得するよりも、スリックメソッドの実装に集中する方が楽しいと思ったのです。人々が異なって感じる場合、私はルールを変更します。
ロドリゴA.ペレス

1
なめらかな方法として、またはブルートフォースを避けるために何を探していますか?コードゴルフのデフォルトでは、ランタイムやスペースに境界が必要ないため、回答は短くなるように最適化すると非常に非効率になる傾向があることに注意してください。たぶん、あなたは最速のコードまたは制限された複雑さの挑戦をしたいと思っていますか?
xnor

回答:


3

Javascriptを、141 138 135 131バイト、8桁

それは私が推測するものです。かなり改善できるはずです。誰かがスタートを必要とする場合:フェイゲンバウムの計算方法。そして、コードごとにそれを行う方法を知りたい場合は、これをチェックしてください

コンソールに次のコードをコピーして貼り付けます。4.6692016 68823243を計算します(あまり正確ではありません)。

b=1;c=0;e=3.2;for(i=2;i<13;i++){z=b-c;a=b+z/e;j=4;while(j--){x=y=0;k=2**i;while(k--){y=1-2*y*x;x=a-x*x;}a-=x/y}e=z/(a-b);c=b;b=a;e}

b=1;c=0;e=3.2;for(i=2;i<13;i++){z=b-c;a=b+z/e;j=4;while(j--){x=y=0;k=2**i;while(k--){y=1-2*y*x;x=a-x*x;}a-=x/y}e=z/(a-b);c=b;b=a;e}
console.log(e)


2

Python、127バイト

c,b,e=0,1,2
for i in range(2,13):a=b+(b-c)/e;exec(("x=y=0;"+"y,x=1-2*y*x,a-x*x;"*2**i+"a=a-x/y;")*17);d,c,b=(b-c)/(a-b),b,a;e=d

彼のjavascript回答で@ThomasWの功績が認められました。

print(d)出力4.669201673141983に追加します。実行前に長い文字列が計算されるため、数秒かかります。


1

、84バイト

A¹βA⁰εA³·²δF…²¦¹³«A⁺β∕⁻βεδαFχ«A⁰ξA⁰ψFX²ι«A⁻¹××ψ²ξψA⁻α×ξξξ»A⁻α∕ξψα»A∕⁻βε⁻αβδAβεAαβ»Iδ

オンラインでお試しください!説明用の冗長コードへのリンク。

ここからアルゴリズムを使用

4.66920 0975097843(6桁)を印刷

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