如何評價《最強大腦》第四季中,余彬晶所進行的分形之美(從分形圖推演x,y取值)這一挑戰的難度?
最強大腦
轉載一下我在其它網站的評論,略有修改。
首先前面已經有人指出,本項目是記憶遊戲而不是數學遊戲。這裡我要提一下,竊以為本項目不僅依靠後台記憶來完成,而且是後台記憶裡面最嚴重的——直接背題。為什麼選手無法以誤差0.002為步進值背圖,而必須直接背題?因為分形圖的x、y取值通常在[-2, 2]之間(節目裡面出現的最小值為-1.5, 最大值為1),以0.002為步進值需要記下400萬張圖,排除對稱也要記200萬張,即便是記憶大師也無能為力,更何況很多差距為0.002之間的分形圖差異極小,分辨十分困難。
注意節目中Dr魏提到,分形圖相對於x、y的變化是非線性的,時快時慢,比如前兩道題目就處在變化率較低的位置,所以根據選手的答案畫出來的分形圖與題目差異很小,而第三道題目在變化率較高的位置,所以根據選手的答案畫出來的分形圖與題目有明顯差異。關鍵問題在前兩道上面,比如說第一題,正確答案是c = 0.503 + 0.181i。我們將x與y在一定範圍內變動,對比幾張圖就知道了。
這是正確答案c = 0.503 + 0.181i 的:
另一個不合理之處在於這三個題目x的變化範圍比y要大,節目中鏡頭給到了選手看到的三個題目共計15個參考值,我分析了一下這些參考值,x與y之間的變化關係近似於線性(注意是x與y的關係,不是分形圖與x、y的變化關係),選手連x都能估計得如此準確,對y的估值應該更精準才對。比如第二題,x從0.401變到1,y從0變到0.301,x的變化率約為y的兩倍,如果x能估計到只差0.001,y斷無差出0.003的道理。並且可以注意到選手答題時將y從0.017改動到0.019,如果他真的是根據計算來估值,那麼由他看到的幾個參考值表現出的線性關係,應該往更小的數去改動才對,改成0.019完全是向相反的方向進行。
最後,選手的身份是記憶大師,只要在後台記住230幅分形圖及對應的x、y值即可。實戰中選手的演技還是不錯的,比如假裝在計算:謝邀...很難...但是不值這個分...
本來我不大想答的,以前關於分形的回答也全匿掉了...
因為分形已經變成民科,佛學和無病呻吟者的聚集地了,實在受不了...
-------------------------------------------------------------------------------------
我看了下回播,不要管節目組越說越糊的說明了,和分形沒多大關係,不懂啥叫分形一點問題都沒有...
大概就是給出一個Julia集,要求給出對應的x,y坐標(其實應該是實部和虛部)...
這麼說吧, Mandelbrot 每個點對應一個Julia集的圖形.
以0.4為標度渲染下大概是這個樣子的:
中間那個大圓就是(0,0),往左兩格也就是節目中的圖2大約就是(-2,0)*0.4=(-0.8,0)左右.
節目中出現的上圖都能找到:
比如1,2,8都是靠近實數軸的部分的圖案,5,6,7都是稍稍遠離的圖案,3,4是離得比較遠的圖案,記住這個大概能精確到0.2左右.
當然這沒啥用...又沒考你這個...考的是插值能力...範圍都給你了...
首先不同區域要找到不同的比對點,Dr.魏有句話沒說錯,變化是非線性的,有的地方對變化很敏感,有的地方不太敏感.
看下圖,變化一個標度表示0.002.
找到也沒啥用因為差別實在太小了,下面那張和上面那張我找了半天也沒看出啥區別...
所以我覺得確實挺難的...但對於最強大腦來說也不過是記憶版找不同而已...
水哥多練練直接秒了這小子......
-------------------------------------------------
最強大腦數學類的題一向分數偏高...
莫名其妙把一個記憶觀察類的題包裝成推演計算類的題...唬誰呢?
計算機發明以前Julia就知道存在這麼種病態圖形,但沒有人知道長什麼樣.
不是沒數學家算過,都沒算出來...人腦心算就能計算分形?開玩笑...反正我不信...
我覺得112分至少得讓他私下了解了解然後上台,不給範圍,直接所有可能里挑才行...
差不多這張圖(0.04刻度)加細10倍選三個讓他報...
這張圖看上去變化趨勢就很明顯了,這麼考才同時顯示出推演和觀察能力...
昨天受到幾個人邀請回答這期節目中的問題,我「被迫」把這期節目看完了,平時不看綜藝節目的。先說我的結論: 這個挑戰其實和推理沒有半毛錢關係,主要是考圖像識別能力和記憶能力。
因為有的點對參數的變化很敏感,參數稍微改變一點點就會導致圖形變化很大,大到肉眼可識別程度。而觀眾只看到大體上的形狀和五彩斑斕的顏色,並沒有注意到細微的差別。對於挑戰者來說,只需要記住千分之一的變動範圍內圖形的變化特徵即可。這對於普通人來說可能很困難,但是對於一個頂級的記憶大師來說應該是不困難的,這個困難程度不會高於觀察萬花筒的難度。
大家之所以感到神奇,主要是被數學這兩個字以及公式搞糊塗了,很多人可能連x,y代表什麼都沒搞清楚。首先朱利亞集合可以由f(z)=z2+c進行反覆迭代得到。對於固定的複數c,取某一z值(如z = z0),一直迭代下去即可得到一個分形圖形。c=x+iy,所以只需要變化參數c,也即x和y的值即可得到不同的分形圖。大家通過節目可以看到,當x,y變化較大時(其實也就0.0幾),分形圖會發生極大的變化,所以根據圖形的大致形狀即可把參數控制在一定的範圍之內。再來看細微的差別,根據挑戰者強大的記憶功能,可記住參數變化千分之一相應的圖形發生的細微變化。主要通過觀察不穩定點附近的變化即可。
數學不是神學,人腦不是電腦,如果真的是推理出來的話,至少應該要張草稿紙吧?畢竟人的心算能力是有限的。
個人理解,望批評指正。改了下代碼,換了清晰的圖片。這回結論清楚多了。
===============================================
廢話不多說,上代碼。"""
@author: Zeqian Li
"""
import numpy as np
from math import sqrt
def julia(c, focus=(0, 0), zoom=1, resolution=640, maxstep=20):
"""Return a numpy grid of juliaset set.
Args: c: constant c in x^2+c
Kwargs: focus: display region center
zoom: zoom scale compared to the default scale (r=(-1,1),i=(-1,1))
resolution: resolution of displayed image
maxstep: maximum calculation step
"""
_xlen = 2
_xyratio = 1
_ylen = _xlen / _xyratio
xreso,yreso=resolution,int(resolution/_xyratio)
grid = np.zeros((yreso,xreso))
c_real, c_imag = c
xmin, xmax = (focus[0] - _xlen / zoom / 2, focus[1] + _xlen / zoom / 2)
ymin, ymax = (focus[0] - _ylen / zoom / 2, focus[1] + _ylen / zoom / 2)
R = (1 + sqrt(1 + 4 * sqrt(c_real ** 2 + c_imag ** 2))) / 2
RSqr = R ** 2
def in_julia(real, imag, step=0):
if step &>= maxstep:
return step
fx_real = real ** 2 - imag ** 2 + c_real
fx_imag = 2 * real * imag + c_imag
# print(fx_real,fx_imag)
if fx_real ** 2 + fx_imag ** 2 &> RSqr:
return step
else:
return in_julia(fx_real, fx_imag, step + 1)
def pix_in_julia(pixx, pixy):
return in_julia(xmin + pixx / xreso * (xmax - xmin),
ymax - pixy / yreso * (ymax - ymin))
for x in range(xreso):
for y in range(yreso):
grid[y, x] = pix_in_julia(x, y)
return grid
1. 首先,遍歷實部虛部(-2,2)範圍內,0.1為步長的400個c值圖案:(迭代次數:5)畫這麼大我就是想把這Mandelbrot Set畫出來。一個有名結論是Julia Set圖案這樣堆到一起就會變成Mandelbrot Set。這個因為Mandelbrot Set就是所有在(0,0)下x^2+c收斂的c值的集合,所以所有的Julia Set的中心堆到一起就變成了Mandelbrot Set.可以參考下節目的幾個參數範圍在哪裡。
代碼:
rmin,rmax=-2,2
imin,imax=-2,2
step=0.1
rpointnum,ipointnum=int((rmax-rmin)/step)+1,int((imax-imin)/step)+1
maxstep,resolution,zoom=(5,100,0.7)
grids=np.zeros((ipointnum*resolution,rpointnum*resolution))
progress=1
for i,real in enumerate(np.linspace(rmin,rmax,rpointnum)):
for j,imag in enumerate(np.linspace(imax,imin,ipointnum)):
grids[j*resolution:(j+1)*resolution,i*resolution:(i+1)*resolution]=julia((real,imag),resolution=resolution,zoom=zoom,maxstep=maxstep)
print("Progress: "+str(progress)+"/"+str(rpointnum*ipointnum))
progress += 1
plt.imshow(grids)
plt.imsave("iterate_c.png",grids)
xticks=np.linspace(int(resolution/2),int(grids.shape[1]-resolution/2),rpointnum)
xlabels=["{0:.2f}".format(i) for i in np.linspace(rmin,rmax,rpointnum)]
plt.xticks(xticks,xlabels)
yticks=np.linspace(int(grids.shape[0]-resolution/2),int(resolution/2),ipointnum)
ylabels=["{0:.2f}".format(i) for i in np.linspace(imin,imax,ipointnum)]
plt.yticks(yticks,ylabels)
plt.xlabel("Real")
plt.ylabel("Imaginary")
plt.show()
paras = {"YlOrBr": (0.503, 0.181),
"BuPu": (0.430, 0.016),
"Greens": (-1.162, 0.204)}
step = 0.002
rnum, inum = 2, 2
maxstep, resolution, zoom = (40, 600, 0.7)
# grids = [np.zeros(resolution * (2 * inum + 1), resolution * (2 * rnum + 1)) for key in paras]
for num,(cm, c) in enumerate(paras.items()):
progress = 1
grid = np.zeros((resolution * (2 * inum + 1), resolution * (2 * rnum + 1)))
for j,re in enumerate(np.linspace(-rnum, rnum ,rnum*2+1)):
for i,im in enumerate(np.linspace(inum, -inum,inum*2+1)):
grid[i * resolution:(i + 1) * resolution, j * resolution:(j + 1) * resolution]
= julia((c[0]+re*step,c[1]+im*step), zoom=zoom, resolution=resolution, maxstep=maxstep)
print("Progress: "+str(progress)+"/"+str((2*rnum+1)*(2*inum+1)))
progress += 1
plt.imsave("sensitivity_"+cm+".png", grid,cmap=cm)
plt.subplot(1,len(paras),num+1)
plt.imshow(grid,cmap=cm)
xticks = np.linspace(int(resolution / 2), int(grid.shape[1] - resolution / 2), rnum)
xlabels = ["{0:.2f}".format(i) for i in np.linspace(c[0]-rnum*step, c[0]+rnum*step, rnum*2)]
plt.xticks(xticks, xlabels)
yticks = np.linspace(int(grid.shape[0] - resolution / 2), int(resolution / 2), inum)
ylabels = ["{0:.2f}".format(i) for i in np.linspace(c[0]-inum*step, c[0]+inum*step, inum*2)]
plt.yticks(yticks, ylabels)
plt.xlabel("Real")
plt.ylabel("Imaginary")
plt.title(cm+": "+str(c))
plt.show()
黃
就算我提高解析度,迭代次數翻一倍,還是到底有個卵區別?????????!!!!
粉。。。。。。。。。。。。。。。。。。。。。。。。。迭代40次也沒有卵用綠好了終於能看出區別了,可以看出圖案從中心原點「裂開」的過程。節目結果也說明了這是組比較敏感的參數。(0,0)這個點從有到無說明這組參數落在了Mandelbrot Set的邊界附近。
所以結論是,1. 參賽者眼神很好。太好了。至於說現場迭代算是不可能的,電腦跑這個幾個圖的時間都比節目里的時限長。別的答案也介紹了參賽選手的背景,是記憶大師。只要熟悉這幾個參數附近的圖片,找出不同的地方即可。2. 難不難?非常難,如果真如節目所說,參賽者實際不知道這幾個圖參數的範圍。但我認為參賽者是知道的,這幾個參數都是經典的那幾個漂亮圖案,這樣顯然能更吸引觀眾。如果參賽者的範圍限制在這幾個參數,還是可以理解的。再比如那個綠色的,應該圖案對c很敏感。過一段時間再去驗證。但眼神也太好了點,這還是一般人做不到的。3. 節目組的代碼寫的不錯。最後掛幾個Julia Set放大圖。Julia Set還是很好理解的,會算複數乘法就行了。凡是寫過茱莉亞集演算法的人就知道這不可能是推理而是純粹記憶了
余彬晶是「世界記憶大師」,這個挑戰只是拿數學作噱頭,本質是記憶題目,跟推演應該關係不大。
我相信即使是Avila,沈維孝也反推不出來。
余彬晶,1988年於湖南株洲出生,畢業於陝西師範大學數學系。2010年初開始接觸全腦記憶法,同年7月在廣西南寧接受「新思維」培訓,由「世界記憶大師」余偉指導,通過一年半的勤加練習,於2011年12月參加在中國廣州舉辦的第20屆世界腦力錦標賽,獲得「世界記憶大師」稱號與證書。
2016年12月,余彬晶應江蘇衛視《最強大腦》節目組邀請,強勢加入《最強大腦》第四季陣容。
跟分形和相關的數學關係不大。說白了就是數字和圖像之間有一個連續的一一對應,然後通過觀察圖像得到數字。只能說明嘉賓觀察能力和記憶能力比較強。
感覺強行介紹的數學背景什麼的只是唬住觀眾和嘉賓騙難度分的。
Manderbrot集的性質非常的精細複雜,是復動力系統最為核心的研究對象之一,到現在還有一些相關很難卻很基本的fields級別的問題沒有做出來。
所以魏老師節目里評論頭頭是道說通過圖形反推什麼的我是有些反感的,私以為還是不應該在非自己專業的領域隨便公開發表言論,尤其他也算是學術圈的人,這也是對在這個領域辛苦工作的學者們的不尊重。
再多說幾句,這個節目我基本沒看過,是這次聽周圍人說跟自己搭點邊去看了一下。我覺得當下的時代判斷一個大腦是否強大應該看這個大腦能否完成機器所不能或者難以完成創造性的事。按這個標準的話節目里那些特技似乎都是幾行代碼的事……
當然節目獲得了曝光度,嘉賓有了名利,魏老師顯示了自己的博學,廣大群眾有了機會展現自己對科學的尊重敬畏,也有了茶餘飯後的談資。我等失學或者整天愁畢業Nerd又在這裡扯什麼呢…Matrix67: The Aha Moments Matrix67大大寫過一篇相對簡明的科普文章,我再大白話一下,
首先列一個等式 f(z) = z^2 + c(或者寫成映射形式 z → z^2 + c),其中z,c都是複數;
然後令c為任意複數值,並固定它不變(例如 c = 2 + 3i 等等);給 z 賦予一個初值 z0,代入等式里,就得到一個新的複數 f(z0) = z0^2 + c;把 f(z0) 再當成 z 值代入等式,又得到一個新的複數;然後反覆迭代下去……於是最終咱們得到了一個複數z的序列,這個序列有兩種可能,一是發散至無窮大,二是收斂至某一值。序列收斂與否決定於z0,或者說根據所得序列,整個複數域被分成兩部分:發散型和收斂型。咱們關注的是收斂型z,因為其個數是有限(理論上可數)的。換一種說法,令 z =x + y*i,並在坐標軸上畫出所有z對應的點(x, y),則所得圖像有兩種可能,一是一幅不可描述,二是一幅有限大小的圖案。這個圖案,即收斂型 z 的集合,就叫Julia集。咱們應該能夠發現,c 相同的條件下,不論代入哪個收斂型 z,出來的都是一樣的Julia集。
所以能夠決定這個圖案形狀的因素只有一個:c然而,這個圖案也能分成兩類:所有點相連(一整個),以及有些點不相連(好些塊)。所以整個複數域又被分成兩部分:相連型和灰塵型。所有相連型 c 對應的點畫在坐標軸上,又能出新的圖案,這個就叫Mandelbrot集。 ↑ 黑色區域里的點,對應的Julia集(小圖)都是一整個,喏,醬嬸兒的:黑色區域外的點對應的都是支離破碎的。這個軟體是Ultra Fractal 5。——至於這個挑戰,真的不是 微觀辨水 × 找規律 嗎?——這個挑戰和「分形」的關係還是有的,但用沒用上分形理論不得而知……
這個挑戰如果是真的(觀察並計算得出)(不是通過人腦記憶步長為0.001的圖片),並且如果選手同意公開識別分形圖形方法就可以設計一個演算法:求給定分形圖案的迭代函數的表達式了!(而我們現在大部分研究都是在通過迭代函數確定分形圖案)
由於分形圖形的差異不大,而參數的變化卻十分明顯(如上圖),所以可以說分形給選手的挑戰增加了難度。
如果換做我下面例子中的拋物線,就簡單多了!
實際上,這個挑戰就是通過給定參考圖案及其參數,通過比對微乎其微的差異,確定(由嘉賓給出的)「(變化)附近的」圖案的參數(而且這些參考圖案及參數都得背下來,而不是給你一本參考書讓你看著比對,這一點考的就是記憶力了!)
其實吧,我覺得這個挑戰和之前的「微觀辯水」有點像(僅從挑戰內容來說,難度另當別論),多了求參數的部分C(x,y)。
關於如何確定嘉賓所給的分形圖案,打個簡單的比方(憤怒的小鳥的例子):給你一個參考的拋物線(沒擊中豬的,當然與可以擊中豬的拋物線很接近)(比作選手選擇的圖案)及其係數(初速度、仰角和重力加速度),試確定另一條(可以擊中豬)拋物線(嘉賓給出的圖案),並確定係數。(當然,挑戰中的「分形圖形」比這個例子中的「拋物線」難多了!)
求參數的部分選手運用的知識還真不清楚(但可以確定的是,這個變化是非線性的,感覺沒有通法)
(對一般人來說,可能真的只能靠猜了)
上圖說是推演能力,就真不敢恭維。也許真的有方法,識別並確定這微乎其微的差異,那也算是圖形識別學的方法吧!(而不是分形理論)
純屬yy
確實很難。但是如果選手之前對julia集十分熟悉,並且以0.001的步長觀察過圖形,那實際上就是一個觀察+記憶類的題,其他人也能做。希望不是我想的那樣。
如果是這樣,c的實部虛部分別變化產生的圖形是非常多的。但圖形是連續變化的,有一定的規律可循,其實記憶量並沒有這麼大。比如劉國梁選的圖,首圖尾圖的c差別不是很大,圖形差別的信息對於記憶大師來說也是足夠的。所以完全能夠只記以0.002甚至0.004變化的圖,其他的靠簡單推理。而且我相信其中的一些規律還能繼續減少記憶量。所以準確說是記憶+推理+觀察,如果真是這三者結合的話,那可能選手三方面能力都不是頂尖的。(話說這裡的推理能夠和數學研究里的邏輯推理相提並論么)
首先選手肯定比我們常人要厲害,也有一定天賦的。但可能題目並不是想像那麼難,可能是關係到一個數學上生僻的概念就讓人覺得很暈,其實並不需要理解分形或者julia集。是不是作弊不清楚,因為對數字圖形的敏感本身就是建立在大量經驗的基礎上,而選手的工作恰恰就是這類的。所以猜測選手本身的能力可能並不是那種頂尖的,李威和鄭才千也說比賽贏過他。下面四張圖,一二之間的誤差就是0.002,二三四之間是0.02,感受下。真想不出咋反推的。
還是請本尊回答這個問題最合適 @253鈦牛 @253鈦牛 @253鈦牛
最強大腦這劇本痕迹也太明顯了吧,朱莉亞集合C值千分之二的差距看圖吧(迭代16次),靠人腦畫圖推理區分出其中的差距我是想不出來有什麼可能,怎麼恰好就是差0.002不是差了0.003呢。
唯一可能的解釋就是,還是圖和數字的對應記憶項目,包裝成了推理項目,甚至整個過程包括寫什麼、錯多少都是劇本。也基本符合這個人的背景,和名人堂里的好幾個都是新思維學校出來的世界記憶大師都認識,入圍賽就是走個過場。怎麼覺得和國辯論冠軍進奇葩說開綠燈一樣…分形 也是會生氣的
反正作為一個數學白痴沒能感受到分形的美...
難 但是還是沒有一般人理解的那麼難
注意它提到了是有題庫的
julia集只有複數一個參數 或者說xy兩個參數那麼還要出分多個題庫幹嘛呢?因為不分題庫人類做不到啊!注意到每個題庫給出了頭尾就是給出了xy變化區間啊!這題目和1mm紙洞是差不多的 當然把感性轉為理性數字可能要難些
這題目真正詭異的地方是我好像看到了一個-1.501 只能當做是顯示誤差了
另外這題和數學毛關係沒有 仍然是觀察和記憶雖然上過複變函數,仍然沒太看懂題目……
說是計算出來的,我是不相信的……這肯定是靠記憶的,不然就讓他考慮(z+c)^2這一族好了,不要說逆推了,就算給定一個c,讓他給出Julia集的大致示意圖可能都做不到……
目測就是用5個數插值而已,畢竟都不見他點開大圖看,如果在沒有提前記憶的情況下推Z的數值的人只能是神。P.S. 用Python+matplotlib繪製朱利亞集合(Julia Set)和曼德博集合(Mandelbrot Set)
感覺應該跟推演沒有半毛關係,應該是一個人記憶的項目,畢竟記住所有圖形也不會那麼難,而且還是有參照系的(每套題有5個都給出了c(xy)),這不可能是一個要通過什麼推演的數學計算項目,畢竟他連紙都有沒用,而且圖形連坐標系都沒有。也可能是我太愚昧,期待數學大神給講一講。
反正這個推演我是真心服,以前試觀察一些圖形特徵反推公式和參數,當然都是很簡單那種,發現誤差極大,今天看了這一挑戰打心底佩服
難度就是沒人能理解到底有多難....
這個難度我不清楚。大概就是通過圖看出變數xy的取值。不恰當的比方,給一條斜線,看斜率k。在這裡我想噴一下節目組,如果節目組在節目中展示一下相近的取值對應的是什麼圖形,才能讓觀眾更直觀的看出難度。
推薦閱讀:
※非線性、自組織、混沌、分形、超循環、突變論、協同論、耗散結構,他們之間的關係是怎樣的?
※「區間[0,1]的實數個數等於整個實數集合的實數個數」這句話如何理解?
※混沌理論和分形理論有什麼不同?
※妙警賊探中音樂盒編碼是怎麼回事兒?怎麼把一個方程藏到一段旋律中?還有,它最後弄出來的那個分型是怎麼回事兒?
※有哪些計算機生成的精美圖形?