使用Mathematica進(jìn)行可視化操作的“3n%1”問題
1. 使用EvenQ函數(shù)判斷數(shù)字是否為偶數(shù)在Mathematica中,使用EvenQ函數(shù)可以判斷一個(gè)數(shù)字是否為偶數(shù)。需要注意的是,Mathematica認(rèn)為12.0不是偶數(shù)。2. 執(zhí)行“3n%1”規(guī)則
1. 使用EvenQ函數(shù)判斷數(shù)字是否為偶數(shù)
在Mathematica中,使用EvenQ函數(shù)可以判斷一個(gè)數(shù)字是否為偶數(shù)。需要注意的是,Mathematica認(rèn)為12.0不是偶數(shù)。
2. 執(zhí)行“3n%1”規(guī)則操作
我們以121為第一個(gè)元素,使用NestWhileList函數(shù)執(zhí)行“3n%1”規(guī)則的操作。代碼如下:
NestWhileList[If[EvenQ[], /2, 3 1] , 121, ! 1 ]
3. 實(shí)現(xiàn)人機(jī)互動(dòng)的代碼
我們可以使用Manipulate函數(shù)實(shí)現(xiàn)人機(jī)互動(dòng)的可視化操作。代碼如下:
Manipulate[
Pane[
[Framed[Style[, Background->Orange, "Label"], Background->Blue]/@
NestWhileList[If[EvenQ[], /2, 3 1] , i, ! 1 ], "->"],
{500, 420}, Alignment->{Left, Center}],
{i, 50, Style["開始的數(shù)",@Green,Bold,30]}, 1,150,1]
4. 列舉30到40之間整數(shù)的“3n%1”過程
我們可以使用Table函數(shù)列舉30到40之間的整數(shù)經(jīng)過“3n%1”規(guī)則的過程。代碼如下:
Table[NestWhileList[If[EvenQ[], /2, 3 1] , i, ! 1 ], {i, 30, 40}]
5. 觀察前150個(gè)數(shù)字經(jīng)過多少步得到1
我們可以使用Table函數(shù)觀察前150個(gè)數(shù)字經(jīng)過多少步會(huì)得到1。代碼如下:
Table[Length[NestWhileList[If[EvenQ[], /2, 3 1] , i, ! 1 ]], {i, 1, 150}]
6. 畫出對(duì)應(yīng)的點(diǎn)線圖
我們可以使用ListLinePlot函數(shù)畫出前150個(gè)數(shù)字與相應(yīng)步驟的點(diǎn)線圖。代碼如下:
ListLinePlot[Table[Length[NestWhileList[If[EvenQ[], /2, 3 1] , i, ! 1 ]], {i, 1, 150}]]
7. 畫出前10000個(gè)數(shù)字與相應(yīng)步驟的點(diǎn)陣圖,并求出最大的步驟
我們可以使用ListPlot函數(shù)畫出前10000個(gè)數(shù)字與相應(yīng)步驟的點(diǎn)陣圖,并通過Max函數(shù)求出最大的步驟。代碼如下:
ListPlot[Table[Length[NestWhileList[If[EvenQ[], /2, 3 1] , i, ! 1 ]], {i, 1, 10000}]]
Table[Length[NestWhileList[If[EvenQ[], /2, 3 1] , i, ! 1 ]], {i, 1, 10000}] // Max
通過以上代碼,我們可以發(fā)現(xiàn)最大的步驟是262。你能否找出是哪個(gè)數(shù)字的步驟最大呢?