1970年代初,普林斯頓大學生態學家R. May研究昆蟲繁殖提出經典遞迴模型:
x[n+1] = k · x[n] · (1 - x[n])
其中x[n]為第n代族群數量 (歸一化至0~1),k為控制參數。固定x[0]迭代時,k值決定系統行為:
0 < k < 1:族群滅絕 (x→0)1 < k < 3:穩定平衡 (x→1/k)k > 3:週期倍增路徑通往混沌 (2週期 → 4 → 8 → 16...)k ≈ 3.449:4週期k ≈ 3.835:3週期竇 (3 → 6 → 12...)k:完全混沌,但參數空間中無限穿插著週期竇這個簡單非線性方程蘊含無窮複雜性,是混沌理論的標誌性發現。
利用x[n]控制PC喇叭頻率,將混沌動態轉化為聽覺體驗:
#include
#include // sound(), nosound(), delay()
main() {
int fMin = 20, fMax = 16000; // 頻率範圍
int fDis = fMax - fMin;
float x = 0.1, k; // x[0]=0.1
int i, j;
for (j = 1; ; j++) {
printf("請輸入k值 (1~4.0),輸入0結束:\n");
scanf("%f", &k);
if (k == 0) break;
// 捨棄前100次迭代 (暫態)
for (i = 1; i < 100; i++) x = k * x * (1 - x);
// 產生聲音
for (i = 1; i < 100; i++) {
x = k * x * (1 - x);
sound((int)(x * fDis + fMin)); // x映射至頻率
delay(1000); // 延遲1ms
}
nosound();
}
}
執行程式並調整k值 (如同調音鈕):
1 < k < 3:單一音調,重複單調k ≈ 3.0+:出現韻律 so-mi-so-mi... (2週期)k ≈ 3.449:so-fa-la-mi-so-fa-la-mi... (4週期)k持續增大:韻律複雜化,成為現代抽象音樂k ≈ 3.835:突然回歸簡單 mi-so-ti-mi-so-ti... (3週期竇)k > 3.835:再次快速複雜化 (6、12週期...)不斷微調k,彷彿在混沌邊緣漫步,聆聽確定性系統產生的不可預測之美。
sound()x[n]映射至MIDI音階而非線性頻率,音樂性更強這個經典實驗以不足50行程式碼,將混沌理論的核心發現——簡單確定性規則產生無限複雜行為——轉化為直觀的聽覺體驗。它不僅是教學示範,更啟發我們思考:複雜性科學、藝術創作與計算機聲音合成的交會點,蘊藏著怎樣的未被發現之美?