昨天看到一個貼文,是一個有關色彩錯覺的貼文,圖片是有個像底下圖案的。這引起我動手做的念頭,於是弄了這個程式。
可以調整背景、方塊、圓點的出現與否,還有圓點的尺寸。
另外還有這些元素的顏色都可以調整。
昨天看到一個貼文,是一個有關色彩錯覺的貼文,圖片是有個像底下圖案的。這引起我動手做的念頭,於是弄了這個程式。
可以調整背景、方塊、圓點的出現與否,還有圓點的尺寸。
另外還有這些元素的顏色都可以調整。
捕食者和獵物的關係玩這麼多,再來看個以前就寫過的東西:食物鏈的模擬模型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)、羊、兔、狼
調整參數:狼從不同獵物獲能的效率
觀察重點:
獲能效率影響狼的「選擇偏好」嗎?
哪一種草食動物族群受到較大壓力?
最近教到群集的消長變化時,突然想到可以用Google Earth Engine來做NDVI的分析。
以前做這個東西,真的花很多時間,但是現在AI協作,幫忙在GGE平台上寫程式,一下就可以做出來了。
這是程式連結
NDVI(Normalized Difference Vegetation Index,正規化植生指數)是最常被用來評估綠意程度的指標之一。
這段程式使用的衛星資料來自MODIS。MODIS 是美國 NASA Terra 與 Aqua 衛星搭載的儀器,從 2000 年起每天環繞地球,觀察大氣、海洋與陸地變化。MOD13Q1 是 MODIS 的 NDVI 資料產品,每 16 天提供一次雲遮減少、經過處理的高品質 NDVI 值,解析度約為 250 公尺。
在這程式上使用者只需要:
最近正值許多學校進行專題成果發表的季節。這些年來聽了不少學生的發表,常常都有一種很可惜的感覺。
大家常常把自己精彩的研究發表弄得很無聊,常見的問題像是:
照本宣科的報告架構
許多學生沿用紙本報告的格式發表,從題目、摘要開始,一路講到參考文獻。由於文字量龐大,不是匆匆念過,就是讓觀眾自行閱讀。
花太多時間在不重要的細節上
像是詳盡的文獻探討、設備清單、研究步驟或原始數據表格,這些對沒有專業背景的聽眾來說既難以理解,也缺乏吸引力,容易讓人失去耐心。
缺乏吸引人的敘事節奏
學術報告的格式是為了系統性記錄,而非講故事。逐字照稿念、缺乏起承轉合與情緒起伏,使得演講難以抓住聽眾注意力。
資訊平均分配,重點不突出
學術報告常會平等呈現所有資訊,然而科普演講則需要聚焦在最關鍵、最有趣的發現。若直接照搬報告內容,亮點反而會被埋沒在細節裡。
簡而言之,學生們大多尚未學會如何進行一場吸引人的演講。其實學生會這樣發表,也不是不努力,而是缺乏演講訓練或不知道可以怎麼做。
以前看過有些大學會辦過一個活動,讓研究生在五分鐘內,向一般民眾說明自己的研究。最近也看到一些國外的大學,舉辦類似比賽,邀請博士班學生用五分鐘進行大眾導向的演講。
中學生的專題成果發表,其實也應該朝這個方向發展。畢竟聽眾通常是年齡相仿的同學或學弟妹。
一場好的口頭發表,應該是從報告中挑出最精彩、最容易理解、最具啟發性的部分,用講故事的方式重新組織內容,加入情感與共鳴元素,並將複雜的科學概念轉譯成一般人聽得懂的語言。這麼做可能會略微犧牲學術上的完整性與細節,但卻能大幅提升演講的趣味性、吸引力與理解度,甚至帶來那種「啊哈!」的 Eureka 時刻。
只是喔,過去不管我怎麼鼓勵學生往這個方向嘗試,真正做得好的還是少數。不過現在有 AI 協作的工具了,應該可以做得更好了。
其實只要一個簡單的 prompt,就可以做得到:
任務:根據這份科展報告,產出一份科普演講稿。
目標聽眾:國中生或對科學感興趣的大眾。
時間限制:5 到 7 分鐘。
風格要求:生動有趣、淺顯易懂、避免艱深術語。
目前困難:我不確定該怎麼把報告內容轉化為演講流程,也不清楚哪些細節該保留、哪些該刪去,需要你的協助。
各位可以試試看:到「科展群傑廳」下載幾份中小學科展的報告,放進 NotebookLM,搭配前面提到的 prompt,一起看看 AI 會怎麼轉化內容。
即使是那些充滿公式、表格、技術細節的報告,NotebookLM 也總是能萃取出精彩的核心,轉化成精彩的講稿。光是看這些講稿,就像在看一段引人入勝的科學小故事。
以下的科普漫畫包含胰島素的製作、青黴素發現、虎克看細胞、林奈的二名法。
都是上周利用chatGPT和Gemini製作的,主要利用chatGPT生出適合的prompt,再交由Gemini畫出,中文對白則是人工後製。
流程我放在這個google 文件https://docs.google.com/document/d/1twZAVUFPlK6eJXraRK2HxU6pjQdaycTcaWB6Ma6y3lA/edit?usp=sharing
但是這週chatGPT已經又有新的model 功能釋出,能產生一致人物風格與加入中文對白的漫畫。才幾天時間,我摸索出來的繪製漫畫方法就已經過期了。
科普漫畫分鏡:《種子的時間旅行》
主角:小種(擬人化的種子)、科學家(Ellis & Roberts)、真菌軍團
分鏡 1:種子的誕生
📍(畫面)一顆種子剛從母株上掉落,看起來充滿活力,四周陽光普照。 💬 小種(自言自語):「嘿嘿,終於自由啦!準備展開我的冒險!」
分鏡 2:時間與環境的挑戰
📍(畫面)時間飛逝,溫度計和水滴顯示不同儲藏環境的變化。 💬 科學家 Ellis:「種子的壽命取決於溫度和含水率!」 💬 科學家 Roberts:「數據顯示,低溫低水分的種子壽命較長。」
分鏡 3:K1 之謎
📍(畫面)數學方程式與座標軸出現,小種困惑地看著數據圖表。 💬 小種:「什麼是 K1?為什麼它決定我的命運?」 💬 Ellis:「K1 代表你的壽命變化!」 💬 Roberts:「如果我們掌握 K1,就能預測種子存活率!」
分鏡 4:真菌軍團的襲擊
📍(畫面)真菌軍團(擬人化的細菌與黴菌)試圖入侵種子。 💬 真菌軍團:「哈哈,這顆種子快不行了,我們來分解它吧!」 💬 小種:「救命!這也影響我的壽命嗎?」
分鏡 5:種皮的保護
📍(畫面)豆類種子披著厚厚的種皮,對抗環境變化。 💬 Ellis:「種皮越厚,存活機率越高!」 💬 小種(感動):「謝謝我的裝甲!」
分鏡 6:老化與死亡
📍(畫面)老化的種子逐漸變得乾枯,發芽能力降低。 💬 Ellis:「氧化是種子老化的關鍵!」 💬 Roberts:「降低氧氣接觸,有助於延長壽命!」
分鏡 7:未來的希望
📍(畫面)部分種子成功發芽,變成嫩芽。 💬 小種(發芽):「終於,我活過來了!」 💬 科學家們:「這就是儲藏技術與環境影響的結果!」
Panel 1: Birth of the Seed📍 (陽光照射在剛落地的種子上)💬 Little Seed: “Yay! I’m finally free! Time to start my adventure!”(「耶!我終於落地了!準備開始我的冒險!」)Panel 2: The Challenge of Time & Environment📍 (溫度計與水滴顯示變化)💬 Narration: "Temperature and moisture affect seed longevity."(「溫度與濕度影響種子的壽命。」)Panel 3: The Mystery of K1📍 (種子科學家們看著數據圖表)💬 Scientist 1: "K1 helps us predict how long seeds can survive."(「K1 幫助我們預測種子的存活時間。」)💬 Scientist 2: "Dry and cool conditions can extend seed life!"(「乾燥與低溫可以延長種子壽命!」)Panel 4: Attack of the Fungal Army📍 (細菌與真菌大軍來襲,種子驚恐地看著)💬 Fungal Army: "Hahaha! Time to break this seed down!"(「哈哈哈!該分解這顆種子了!」)💬 Little Seed: "Oh no! I’m getting weaker!"(「糟糕!我開始變弱了!」)Panel 5: The Seed Coat’s Defense📍 (某些種子有厚厚的種皮,顯得較堅固)💬 Narration: "Seeds with thicker coats have better protection."(「種皮較厚的種子擁有更好的保護力。」)💬 Little Seed: "Maybe I still have a chance!"(「也許我還有希望!」)Panel 6: Aging and Death📍 (老化的種子變得乾枯,無法發芽)💬 Scientist 1: "Oxidation speeds up aging."(「氧化會加速種子老化。」)💬 Scientist 2: "Reducing oxygen exposure helps!"(「降低氧氣接觸有助於延長壽命!」)Panel 7: Hope for the Future📍 (一些種子成功發芽)💬 Little Seed: "I made it! I’m growing!"(「我成功了!我要開始生長了!」)💬 Scientist: "Proper storage makes a difference!"(「適當的儲存方式是關鍵!」)
2月4日是世界癌症日,這幾天因為關心健康資訊,自然就被各種相關內容推送了。於是,我也順便查閱了一些資料,想了解更多關於癌症預防的最新研究與建議。