函數使用中括號,不是小括號
Wolfram 的函數呼叫形式是 f[x],不是 f(x)。此外,內建符號通常以大寫字母開頭,像是 Plot、Map、Table。
Sin[Pi/2]
Plot[x^2, {x, -3, 3}]
Table[n^2, {n, 1, 5}]
本網站專為初學者與想快速建立系統觀念的學習者設計,內容涵蓋 Wolfram 語言的核心語法、符號運算思維、函數式風格、規則與樣式比對、資料處理、視覺化,以及互動式小測驗。
理解 Wolfram 語言「一切皆為表達式」的核心概念,這是它和許多命令式語言最大的差異。
掌握函數應用、純函數、規則替換與樣式比對,才能真正寫出符合 Wolfram 風格的程式。
學會使用內建函數處理列表、關聯、圖形與互動介面,減少自行重造輪子的工作量。
透過範例與測驗檢查理解程度,將語法知識轉化為實作能力。
Wolfram 語言不是單純把數學函數寫成程式碼而已;它更像是一套「符號式計算語言」。你會經常看到函數、資料、規則、圖形都被當成表達式來操作。因此,若你以前主要使用 C、JavaScript、Python 或 Java,最需要先適應的不是語法外觀,而是整個程式設計哲學。
在 Wolfram 中,數字、字串、清單、圖形、函數呼叫、規則,幾乎都能視為表達式。這使得程式可以直接操作程式本身的結構。
Wolfram Language 擁有數千個整合良好的內建函數,強調高層次、整體化的使用方式。
樣式比對(Patterns)和替換規則(Rules)不是附加功能,而是 Wolfram 語言中極重要的程式設計基礎。
以下整理了最常用、也最容易搞混的 Wolfram 語法。
Wolfram 的函數呼叫形式是 f[x],不是 f(x)。此外,內建符號通常以大寫字母開頭,像是 Plot、Map、Table。
Sin[Pi/2]
Plot[x^2, {x, -3, 3}]
Table[n^2, {n, 1, 5}]
學 Wolfram 時最重要的基本功之一,就是正確分辨各種括號用途。
| 語法 | 用途 | 範例 |
|---|---|---|
[] |
函數參數 | Range[5] |
{} |
列表、區間規格、迭代器 | {1,2,3} |
() |
控制運算優先序 | (a+b)^2 |
<| |> |
Association 關聯結構 | <|"name" -> "Ada", "age" -> 20|> |
= 會立即計算右側,再把結果存起來;:= 則會延後到每次呼叫時才重新計算。這是初學者最常踩雷的地方。
r = RandomInteger[{1, 100}]
r
r
結果固定,因為第一次就已經算好了。
r := RandomInteger[{1, 100}]
r
r
每次都可能不同,因為每次都重新求值。
列表是 Wolfram 非常核心的資料結構。你會經常搭配 Part 或簡寫 [[ ]] 使用。
data = {10, 20, 30, 40, 50}
data[[1]]
data[[3]]
data[[2 ;; 4]]
data[[1]] 取得第一個元素。data[[2 ;; 4]] 代表從第 2 個取到第 4 個。
Wolfram 語言大量使用規則式寫法。a -> b 是規則;expr /. rule 表示把規則套用到表達式上。
expr = x^2 + 2 x + 1
expr /. x -> 3
{x, y, z} /. x -> 100
x^2 + y^2 /. {x -> 2, y -> 5}
純函數是 Wolfram 函數式風格的基本元素。
(#^2 + 1) &[5]
(#^2) /@ {1, 2, 3, 4}
Range[5] // Total
| 寫法 | 意思 |
|---|---|
# |
純函數的第 1 個匿名參數 |
& |
純函數結尾標記 |
/@ |
Map,把函數套到列表每個元素 |
// |
後置應用,例如 x // f 等同 f[x] |
(blank)是最基礎的模式物件,代表「任何表達式」;x_ 則是在匹配時給它一個名字。也可限制 head,例如 x_Integer,或使用 /; 增加條件。
f[x_] := x^2
f[5]
g[x_Integer] := x + 100
g[8]
fac[n_Integer] /; n > 0 := n fac[n - 1]
fac[1] = 1
x_ 代表任何表達式;x_Integer 限定整數;/; 代表「當條件成立時」才套用定義。
雖然 Wolfram 很強調函數式與規則式設計,但它也提供常見流程控制,例如 If、Which、Do、Table、Module 等。
sign[x_] := If[x > 0, "正數", If[x < 0, "負數", "零"]]
Table[n^3, {n, 1, 5}]
Module[{x = 10, y = 20},
x + y
]
Module 用於建立局部變數,避免和外部符號衝突。
這一區整理幾個最能代表 Wolfram 優勢的入門應用:符號運算、資料處理、繪圖視覺化與互動操作。
Wolfram 最有代表性的能力之一就是符號式數學。你可以先表示一個公式,再對它進行展開、因式分解、求解與微積分操作。
expr = (x + 1)^4
Expand[expr]
Factor[x^2 + 2 x + 1]
Solve[x^2 - 5 x + 6 == 0, x]
D[Sin[x]^2, x]
Integrate[x^2, x]
透過 Select、Map、GroupBy、CountsBy 等內建函數,常見資料處理工作可以寫得非常精簡。
scores = {87, 92, 58, 77, 100, 69, 81};
passed = Select[scores, # >= 60 &]
curve = (# + 5) & /@ scores
sorted = Sort[scores]
words = {"apple", "ant", "banana", "boat", "cat", "car"};
GroupBy[words, StringTake[#, 1] &]
Wolfram 語言提供多種函數與資料繪圖方式,並會自動處理很多繪圖細節。
Plot[Sin[x], {x, 0, 2 Pi},
PlotLabel -> "正弦函數",
AxesLabel -> {"x", "Sin[x]"},
PlotStyle -> Blue
]
ListLinePlot[{3, 5, 4, 9, 7, 10},
PlotMarkers -> Automatic,
PlotLabel -> "成績變化"
]
Wolfram 的 notebook 與互動功能相當強,Manipulate 可以快速做出教學展示、參數調整介面或原型工具。
Manipulate[
Plot[a Sin[x], {x, 0, 2 Pi},
PlotRange -> {-5, 5},
PlotLabel -> Row[{"a = ", a}]
],
{a, 1, 5}
]
這是最能體現 Wolfram 特色的例子之一。你可以像在做「結構轉換」一樣處理公式與程式。
expr = a x^2 + b x + c
expr /. x -> y + 1
{x^2, x^3, y^2, z} /. x^n_ -> HoldForm["x 的次方,指數為 " <> ToString[n]]
Cases[{x^2, x, y^3, z^5, 3}, _^_]
下面整理最常用的簡寫與概念,方便複習。
| 語法 | 說明 |
|---|---|
f[x] | 函數呼叫 |
{a,b,c} | 列表 |
expr[[i]] | 取第 i 個部分 |
x = 5 | 立即指派 |
f[x_] := ... | 函數定義 |
# & | 純函數 |
/@ | Map |
// | 後置應用 |
-> | 規則 |
/. | 替換套用 |
| 錯誤 | 正確觀念 |
|---|---|
把函數寫成 f(x) | 應寫成 f[x] |
亂用 = 與 := | 先分清立即求值與延遲求值 |
| 忽略列表大括號 | 很多函數都依賴 {} 規格 |
| 不理解 pattern | 函數定義與規則替換常依賴 pattern |
| 過度用迴圈 | 先思考能否用 Map、Select、Table |
每題只有一個正確答案。作答後可立即查看成績與解析。
完成下方 8 題後,按下「批改測驗」即可看到分數與建議。
x := RandomInteger[{1,10}] 的意思是?/@ 是哪一個函數的簡寫?expr /. x -> 3 的作用是?data[[2]] 的意思是?