昨天看到一個貼文,是一個有關色彩錯覺的貼文,圖片是有個像底下圖案的。這引起我動手做的念頭,於是弄了這個程式。
可以調整背景、方塊、圓點的出現與否,還有圓點的尺寸。
另外還有這些元素的顏色都可以調整。
昨天看到一個貼文,是一個有關色彩錯覺的貼文,圖片是有個像底下圖案的。這引起我動手做的念頭,於是弄了這個程式。
可以調整背景、方塊、圓點的出現與否,還有圓點的尺寸。
另外還有這些元素的顏色都可以調整。
捕食者和獵物的關係玩這麼多,再來看個以前就寫過的東西:食物鏈的模擬模型Lotka-Volterra equation與食物鏈模擬軟體。現在呢就做了一個線上互動程式來玩
https://chihhsiangchien.github.io/Lotka-Volterra_equations/index.html
想像一片草原,上面住著一群快樂的兔子和一些虎視眈眈的狐狸。兔子的數量會一直增加嗎?狐狸會把兔子都吃光嗎?大自然中,捕食者(像是狐狸)和獵物(像是兔子)的數量是如何變化的呢?
點進頁面後是一個「洛特卡-沃爾泰拉方程式」模擬器(Lotka–Volterra equations)。聽起來很可怕,但它的概念很簡單!這些方程式描述了:
在模擬器裡,你可以調整幾個參數:
振幅 (Amplitude):代表族群數量的最大變化幅度。
週期 (Period):代表族群數量循環一次的時間。
在這個模式中,你可以獨立調整獵物和捕食者的振幅與週期:你可以讓兔子的數量波動很大、週期很短,同時讓狐狸的數量波動很小、週期很長,看看會發生什麼事。
直接控制相位差 (φ):你可以直接設定捕食者的週期比獵物晚開始多少。例如,設定 -0.25,就代表捕食者的數量高峰會比獵物晚四分之一個週期出現。週期的變化也同時改變了相位圖的樣子。
我朋友解過一題97學年度生物指考的題目,正是在說這個現象,而這題答案給了D。
前幾天做了 狼羊兔草的生態模擬互動程式 ,就開始在課堂上讓學生玩。
很意外耶,學生居然很沉迷於調參數看族群數量變化。所以我就想玩更大的,把課本上的食物網放進來做一款更多生物的遊戲。
生物種類包括植物、松鼠、老鼠、兔子、雉雞、蛇、黃鼠狼、鷹。
有興趣的點此 生態模擬食物網
然後這就變成上帝視角的經營策略遊戲,玩家就是扮演一位生態系的設計師與管理者, 打造一個生生不息、物種多樣且能長期穩定運作的生態系。我覺得這好難,不過學生居然可以玩出來!?
除了之前就有的「族群數量變化圖」和「能量金字塔圖」,再新增一個「食物網」,還告訴你目前經營出幾條食性關係,這個經營遊戲中的儀表板和報告,幫助玩家了解當前生態系的狀況。然而要作到成功,就要會「假設分析」,不斷嘗試不同的參數組合。「如果我把老鷹的繁殖率調到最高會怎樣?」、「如果植物再生速度變得很慢,生態系能撐多久?」。
總之,我本來只是想做一個科學模擬程式,結果就變成了經營策略遊戲了。玩家在調整滑桿時,其實就是在制定自己的經營方針,透過觀察圖表變化,檢視自己的策略成效。我想這種互動性和策略性,就是學生會玩得入迷的關鍵吧?
自然界中樹木分枝、雪花結晶那樣複雜又充滿規律的圖案是不是可以用一些數學規則來描述和生成呢?
L-System 最初由匈牙利生物學家 Aristid Lindenmayer 於 1968 年提出,用於模擬植物的生長過程。它本質上是一套符號重寫規則,從一個初始字串(稱為「公理」Axiom)開始,透過迭代應用這些規則,生成一系列越來越複雜的字串。這些字串隨後可以被解釋為繪圖指令,從而產生視覺化的圖形。
關於細節可以看他的書 The Algorithmic Beauty of Plants
L-System 是一套符號重寫系統。想像一下,你有一串初始的符號字串,然後你定義了一些規則,告訴程式如何將字串中的特定符號替換成另一串符號。
我對這個東西有陣子很著迷,所以就寫了一個生成器來玩玩
https://chihhsiangchien.github.io/L-system/index.html
公理 (Axiom): 這是 L-System 的起始狀態或初始字串。它通常是一個非常簡單的字串,例如 F 或 F-F-F-F。在我的程式中,你可以在 "Axiom" 輸入框中設定這個初始字串。
規則 (Rules): 這是 L-System 的生成引擎。規則定義了如何將字串中的特定符號(稱為「前驅」predecessor)替換成一個新的字串(稱為「後繼」successor)。 例如,一條簡單的規則可能是: F -> F+F-F 這表示,在每次迭代中,字串中所有的 F 符號都會被替換成 F+F-F。
機率性規則: 允許一個符號根據不同的機率被替換成不同的字串,為圖形帶來隨機性和多樣性。例如: F 0.5 -> F[+F]F (50% 機率) F 0.5 -> F[-F]F (50% 機率)
上下文相關規則 (Context-sensitive): 規則的應用可以取決於符號的「鄰居」是什麼。例如: A < B > C -> X 這表示只有當符號 B 的左邊是 A 且右邊是 C 時,B 才會被替換成 X。
迭代 (Iteration): 從公理開始,程式會重複地將規則應用於現有的字串。每一次完整的應用稱為一次迭代。隨著迭代次數的增加,字串會變得越來越長,越來越複雜。在我的程式中,每點擊一次 "Generate" 按鈕,就會執行一次迭代。
生成了複雜的字串後,我們如何將它變成視覺化的圖形呢?這通常是透過一種稱為「海龜繪圖 (Turtle Graphics)」的機制來實現的。
想像有一隻小海龜在畫布上,它會讀取 L-System 生成的字串中的每一個符號,並根據符號執行特定的動作:
F, G, L, R, Fl, Fr 等: 向前移動一定距離並畫線。
f: 向前移動但不畫線。
+: 向左轉動一個預設的角度。
-: 向右轉動一個預設的角度。
[: 保存目前海龜的狀態(位置和方向),通常用於開始一個分支。
]: 恢復到上一次保存的海龜狀態,通常用於結束一個分支,回到分叉點。
X: 在目前位置畫一個小標記(在我的程式中是個小圓圈)。
你可以透過 "Angle" 輸入框來設定 + 和 - 指令的轉向角度,改變不同圖案的樣貌。
透過這些基本的公理、規則和繪圖指令,L-System 就能生成出千變萬化的圖案。
很久以前我就對一個現象很好奇,男性和女性對於紅色的認知真的有不同嗎?
是不是同樣一種顏色,男生覺得是紅色,但女生會覺得不是紅色呢?口紅的各種色號對男生來說,是不是都叫做紅色呢?我能不能量化的表現出這種對紅色認知的差異呢?
我做了這個程式就是在研究這件事
https://chihhsiangchien.github.io/red-boundary/index.html
進去畫面後,會有一個顏色方塊出現,你覺得它可以被稱為紅色嗎?這個問題會連續問差不多50個。
資料就只有收集你的性別和年齡範圍而已,願意的話就幫我填看看。也許等很久很久以後,我就可以把研究成果做出來跟大家分享了。
話說很久很久以前,做了化石大發現的活動,後來還用了線上的桌遊網站也做了一個線上版
但其實有些功能無法做,覺得有點可惜,後來今年就自已做了一個線上板,上線使用後,覺得效果很不錯。
連結 https://chihhsiangchien.github.io/fossils/index.html
中研院的地理資訊科學研究專題中心有一個台灣百年歷史地圖的專題網站
https://gissrv4.sinica.edu.tw/gis/twhgis.aspx
我教環境變化常常會用到,不過在平板操作上,要用疊圖就有點麻煩
後來它們有一個多視窗比對的,還可以作套疊拉,我覺得就相當適合使用
https://gissrv4.sinica.edu.tw/gis/twhgis/mapcompare/
那麼在教學上怎麼用?
比方說我們可以看在日治時和現在的地圖比對,你可以看到一百年前你所處的這片土地過去曾經是什麼樣子,是埤塘或是農田?
大約一個多月前,看到colab有了Gemini進駐,可以用自然語言讓寫出notebook每個cell的py。
心想來試試看讓他幫我把新竹市人的人口統計圖做出來看看
在政府開放平臺上有這項資料 https://data.gov.tw/dataset/67531
一開始我試了最直白的方式就是讓他作圖,不過沒有經過任何結構指引,做出來就是一團亂
後來再經過多種嘗試和多個AI協作,總之也是做出來了,但後來我就沒在colab上使用,改寫成.py,在本機使用。如果遠端的資料庫沒問題,應該是只要我跑一次指令就可以更新出最新的人口圖,希望啦。
專案放在
https://github.com/ChihHsiangChien/PopulationDynamics
未來的目標是希望可以跑一次程式就把想要探索的各地資料作出來,但目前的問題就是各縣市政府的規格文件多樣性很高,即便是同一個縣市可能就有兩種以上的資料格式,就看我願不願意花時間做這種事情了。
https://chihhsiangchien.github.io/ecoSimulation/index.html
這個模擬的原始靈感來自 NetLogo 的經典模型 —— Wolf Sheep Predation。不過我後來改了不少東西,慢慢變成了自己覺得比較適合教學的樣子。
這套模擬不只是拿來「玩」,其實在教學上可以設計出很多層次的活動。以下是我使用這個模擬做生態教學時的建議流程:
先只啟用草和羊,讓學生理解基本的族群互動。等理解了,就可以加入狼或兔子等物種,讓系統變得更豐富。
每次調整參數或設定前,讓學生先預測會發生什麼,再實際模擬來檢驗。
「族群大小圖」可以看出週期變化;「能量比較圖」則有助於理解營養階層之間的能量流動與損失。
引導學生每次只改變一個參數,幫助他們學會控制變因的實驗設計思維。
記錄設定與結果:包括族群變化曲線、滅絕時間、能量趨勢等。這樣可以進一步討論背後原因。
提醒學生這只是簡化的模型,現實世界更複雜。有什麼沒有被考慮進來?疾病、遷徙、個體差異?
例如黃石公園重新引入狼群造成的食物網變化,或外來種造成的生態失衡。
以下是我自己整理出來的幾種教學情境,你可以根據教學主題挑選適合的情境來進行模擬。
啟用:有限草(B)、羊、狼
停用:無限草(A)、兔
可以調整:初始族群數量、繁殖率、狼的獲能量
討論重點:
族群是否會呈現週期波動?
什麼條件下會導致族群滅絕?
繁殖率、能量效率怎麼影響族群穩定?
啟用:有限草(B)、羊、兔
停用:無限草(A)、狼
調整參數:繁殖率、草再生速度、負荷量
討論重點:
誰在競爭中佔上風?為什麼?
改變草的供給會怎麼改變結果?
有沒有可能達到穩定共存?
啟用:有限草(B)、單一草食動物
停用:無限草(A)、狼、另一草食動物
關注參數:草的覆蓋率、再生速度、負荷量
討論重點:
當資源供不應求時,會發生什麼事?
草食動物是否會超載,造成族群崩潰?
情境 A:啟用無限草(A),設定低能量
情境 B:啟用有限草(B),設定高能量
比較點:
哪種情況下族群數量更穩定?
如果加入狼群會怎麼改變局勢?
啟用:有限草(B)、羊、兔、狼
操作:模擬一段時間後移除狼群
觀察與討論:
沒有狼之後,草食動物會發生什麼事?
草地會被過度啃食嗎?
狼是生態系裡的什麼角色?
設定系統:有限草(B)+ 羊 + 狼
重點參數:基礎耗能 / 繁殖成本
討論方向:
能量消耗會如何影響生存與繁殖?
哪些組合導致族群更穩定或崩潰?
啟用:有限草(B)+ 草食動物
停用:無限草(A)+ 掠食者
設定:草食動物負荷量非常高
討論重點:
缺乏天敵會造成什麼後果?
這跟某些外來種案例是否類似?
啟用:有限草(B)、羊、兔、狼
調整參數:狼從不同獵物獲能的效率
觀察重點:
獲能效率影響狼的「選擇偏好」嗎?
哪一種草食動物族群受到較大壓力?