[このノートブックは以下のcommunityのポストをLLMツールにより日本語に翻訳したものです:
The Continuous case of the Hofstadter’s Q-Sequence
by Ed Pegg
Wolfram Community, STAFF PICKS, September 24, 2025
https://community.wolfram.com/groups/-/m/t/3550911]
The Continuous case of the Hofstadter’s Q-Sequence
by Ed Pegg
Wolfram Community, STAFF PICKS, September 24, 2025
https://community.wolfram.com/groups/-/m/t/3550911]
HofstadterのQ数列の連続の場合
HofstadterのQ数列の連続の場合
by Ed Pegg
連続Q関数
連続Q関数
In[]:=
Grid[Partition[Function[{a,b},ListStepPlot[ResourceFunction["RecursiveFunction"][f[n]->f[n-f[n-a]]+f[n-f[n-b]],{n<=0->1}][Range[100]],Center,AspectRatio->1/4,ImageSize->300,Frame->True,FrameTicks->None,Epilog->Text[Row[{,a,b}],Scaled[{.03,.8}],{-1,0}]]]@@@{{1,2},{2,3},{2,4},{1,6}},2]]
"F"
4
Out[]=
In[]:=
g[n_?NumericQ]:=g[n]=If[n<3,1,g[n-g[n-1]]+g[n-g[n-2]]];
In[]:=
ListStepPlot[Table[g[n],{n,2,100}],Joined->True,AspectRatio->1/4]
Out[]=
In[]:=
Table[g[n],{n,2,55}]
Out[]=
{1,2,3,3,4,5,5,6,6,6,8,8,8,10,9,10,11,11,12,12,12,12,16,14,14,16,16,16,16,20,17,17,20,21,19,20,22,21,22,23,23,24,24,24,24,24,32,24,25,30,28,26,30,30}
これを連続関数として考察した場合,どのような挙動を示すかと疑問に思った.結果として,整数関数と同様の見た目となる.
In[]:=
Row[ListStepPlot[Table[{n,g[n]},{n,0,55,#}],ImageSize->300]&/@{1,1/50}]
Out[]=
したがって,g[2]=1 の代わりに,新たな関数を用いて g[2]=2 として試行した.
In[]:=
f[n_?NumericQ]:=f[n]=If[n<3,n,f[n-f[n-1]]+f[n-f[n-2]]];
結果は類似しているが,1のオフセットが存在する.
In[]:=
Table[f[n],{n,1,54}]
Out[]=
{1,2,3,3,4,5,5,6,6,6,8,8,8,10,9,10,11,11,12,12,12,12,16,14,14,16,16,16,16,20,17,17,20,21,19,20,22,21,22,23,23,24,24,24,24,24,32,24,25,30,28,26,30,30}
最初の50000個の整数について,となる.
f[n]=g[n+1]
In[]:=
Union[Table[f[n],{n,1,50000}]-Table[g[n],{n,2,50001}]]
Out[]=
{0}
この関数は連続性を有し,さらに多くの複雑性を持つ.この変種を連続Q関数と名付ける.
In[]:=
ListPlot[Table[{n,f[n]},{n,0,55,1/120}]]
Out[]=
25までにおいては単純に見える.
In[]:=
ListPlot[Table[{n,f[n]},{n,0,25,1/120}]]
Out[]=
区分的関数を取得することが可能である.
In[]:=
ClearAll[f,n];f[n_?NumericQ]:=f[n]=If[n<3,n,f[n-f[n-1]]+f[n-f[n-2]]];h=1/120;(*detectintegerslopeflipsupto20*)leftD[k_]:=(f[k]-f[k-h])/h;rightD[k_]:=(f[k+h]-f[k])/h;changeInts=Select[Range[3,20],Round[leftD[#]]=!=Round[rightD[#]]&];x=Rationalize[Range[3,25,h],0];y=f/@x;sl=Rationalize[Differences[y]/h,0];xL=Most[x];xR=Rest[x];idxRuns=SplitBy[Range[Length[sl]],sl[[#]]&];toPiece[idx_List]:=Module[{a=xL[[First[idx]]],b=xR[[Last[idx]]],m=sl[[First[idx]]],v0=f[xL[[First[idx]]]],c},c=v0-ma;(*y=mn+c*){mn+c,a<=n<b}];piecesGE3=toPiece/@idxRuns;pw=Piecewise[Prepend[piecesGE3,{n,n<3}],Indeterminate];
In[]:=
pw
Out[]=
|
その後はさらに複雑になる:
49を超えた後,状況はさらに著しく複雑になる:
以下に,区分的関数を1つ拡張し,区分的関数が増加する過程における状態を提供するためのコードを示す.
pw54のコード
pw54のコード
pw54
pw54
著者のシステムにおいて56が解決されないため,これを数回実行する必要があった.
これらの計算が正しければ,成長率は次の通りとなる:
56を得ることは一度もできなかった.最後の区間は他の全てを合わせたものの2倍以上の大きさとなっている.
区分的関数については,古いコンピュータでは55を動作させることができないため,54および55の区分的関数を示す.
区分的関数については,古いコンピュータでは55を動作させることができないため,54および55の区分的関数を示す.
そのため,pw55を点に簡略化した.
最初の複雑な部分:
第2部は,54までである.
連続関数は,52から55の範囲において非常に複雑な様相を呈する.各赤い点は感染点である.
この範囲における最大の分母は1713454620に達する:
それでは,次に何をすべきであろうか.本関数は55まで連続であるが,55から95の範囲でどのような挙動となるかは不明である.
区分的関数や点の表現を56やそれ以上の値までどのように得るべきか判断できない.
区分数に対する増加率はどのようになるか.
他の関数,すなわちNestedly Recursive Functions は,連続の場合において劇的に複雑さが増すのであろうか.また,「モンスター」とは何か.
区分的関数や点の表現を56やそれ以上の値までどのように得るべきか判断できない.
区分数に対する増加率はどのようになるか.
他の関数,すなわちNestedly Recursive Functions は,連続の場合において劇的に複雑さが増すのであろうか.また,「モンスター」とは何か.
より高い値に対して,この複雑さがどの程度になるかについて考察する必要がある.
このノートブックを引用する
このノートブックを引用する
The Continuous case of the Hofstadter's Q-Sequence
by Ed Pegg
Wolfram Community, STAFF PICKS, September 24, 2025
https://community.wolfram.com/groups/-/m/t/3550911
by Ed Pegg
Wolfram Community, STAFF PICKS, September 24, 2025
https://community.wolfram.com/groups/-/m/t/3550911