阿里網盤pdf文件分享
1 進入數學快速入門官網文檔

進入到

拉到網頁最下面

點擊面向數學學習的快速入門指南即可進入官方數學學習教程
2 面向數學學習的快速入門指南
2.1 內容輸入
在網絡或桌面 Wolfram 筆記本中,只須輸入內容,然后按下 SHIFT+ENTER 進行計算:
In[1]:= |
 |
Out[1]= |
 |
In[n] 和 Out[n] 標示出相鄰的輸入和輸出. % 符號指代最近的輸出:
In[1]:= |
 |
Out[1]= |
 |
In[2]:= |
 |
Out[2]= |
 |
執行完計算以后,建議欄會提供下一步計算的建議:

在數學運算中可以使用標准符號:
(用空格或 * 表示乘法,不要用字符 “x”.)
In[1]:= |
 |
Out[1]= |
 |
用小括號(不是中括號或大括號)顯示不同層次的組合:
In[2]:= |
 |
Out[2]= |
 |
Wolfram 語言有大約 6,000 個內置函數,涵蓋了各個方面的數學知識.
用逗號分隔內置函數的參數,並將其置於方括號內:
In[1]:= |
 GCD[12, 15] |
Out[1]= |
 |
如果不知道使用哪個函數,在行的開始處鍵入 =
即可進行自然語言輸入:
In[2]:= |
 plot a sine curve |
|
|
Out[2]= |
 |
|
|
Lists 表示一些項的集合,用 { ... } 表示:
In[1]:= |
 {1, 2, 3} {x, y, z} |
列表是有序的. 可以包含數字、變量、計算,甚至是其他列表:
許多運算是被應用到每個元素上的:
In[2]:= |
 {1, 2, 3} + 2 |
Out[2]= |
 |
從 1 開始,可以用 [[ ... ]] 來提取列表的元素:
In[3]:= |
 {a, b, c, d}[[3]] |
Out[3]= |
 |
通過使用如 Range 這樣的函數可以輕松構建列表:
In[1]:= |
 Range[10] |
Out[1]= |
 |
2.2 分數與小數
在 Wolfram 語言中,精確輸入(如分數)會提供精確的輸出:
(用 CTRL
+ /
輸入分數.)
In[1]:= |
 1/4 + 1/3 |
Out[1]= |
 |
用 Together 寫成最小公分母的形式:
In[2]:= |
 Together[1/a + 1/b] |
Out[2]= |
 |
任何含有小數的輸入給出近似輸出:
In[1]:= |
 .25 + 1/3 |
Out[1]= |
 |
用 N 得到結果的數字近似值:
In[2]:= |
 N[1/4 + 1/7] |
Out[2]= |
 |
指定所示答案的准確度:
In[3]:= |
 N[1/4 + 1/7, 10] |
Out[3]= |
 |
有些數字表示成 ScientificForm 形式會更合適:
In[1]:= |
 ScientificForm[0.00123] |
Out[1]= |
 |
在適合的情況下,系統自動使用 ScientificForm 形式:
In[2]:= |
 N[100!] |
Out[2]= |
 |
2.3 變量與函數
變量以字母開頭,可以含有數字:
(最好是用小寫字母,把大寫開頭留給內置函數.)
In[1]:= |
 a1/2 |
Out[1]= |
 |
兩個變量或數字間的空格表示相乘:
(換句話說,“a b” 表示 a 乘以 b,而 “ab” 則為變量 ab.)
In[2]:= |
 a b + 5 x x |
Out[2]= |
 |
用 /. 和 ->
在表達式中進行替代操作:
(可用 -> 輸入 “rule” ->
.)
In[3]:= |
 1 + 2 x /. x -> 2 |
Out[3]= |
 |
用 = 符號賦值:
In[1]:= |
 x = 2 |
Out[1]= |
 |
在表達式和命令中使用變量:
In[2]:= |
 1 + 2 x |
Out[2]= |
 |
清除賦值,x 保持未計算狀態:
In[3]:= |
 Clear[x] 1 + 2 x |
Out[3]= |
 |
用 f[x_]:= 來定義自己的函數:
In[1]:= |
 f[x_] := 1 + 2 x |
x_ 表示 x 是一個模式,任何值都可以取代它.
:= 表示在計算時傳遞給 f 的任何參數將被代入右側:
In[2]:= |
 f[2] |
Out[2]= |
 |
2.4 代數
可以因式分解或展開代數表達式:
(用 CTRL+6
輸入排版式指數.)
In[1]:= |
 Factor[x^2 + 2 x + 1] |
Out[1]= |
 |
Wolfram 語言用 == (兩個等號)檢測是否相等:
In[1]:= |
 2 + 2 == 4 |
Out[1]= |
 |
用 ==
把代數表達式組合在一起表示方程:
In[2]:= |
 1 + z == 15 |
Out[2]= |
 |
像 Solve 這樣的命令給出的是方程的精確解:
In[1]:= |
 Solve[x^2 + 5 x - 6 == 0, x] |
Out[1]= |
 |
如果想要得到近似結果,用 NSolve:
In[2]:= |
 NSolve[7 x^2 + 3 x - 5 == 0, x] |
Out[2]= |
 |
以列表形式把一個方程組傳遞給函數:
In[3]:= |
 Solve[{x^2 + 5 == y, 7 x - 5 == y}, {x, y}] |
Out[3]= |
 |
求方程的根:
(|| 是 Or 的符號.)
In[1]:= |
 Roots[x^2 + 3 x - 4 == 0, x] |
Out[1]= |
 |
如果一個多項式不易被因式分解,近似結果可能更有用:
In[2]:= |
NRoots[360 + 234 x - 1051 x^2 + 11 x^3 + 304 x^4 - 20 x^5 == 0, x] |
Out[2]= |
 |
Reduce 命令可把一組不等式化簡成簡單的形式:
(可鍵入 <= 得到 ≤
符號.)
In[1]:= |
 Reduce[{0 < x < 2, 1 <= x <= 4}, x] |
Out[1]= |
 |
簡化形式可以包含多個區間:
In[2]:= |
 Reduce[(x - 1) (x - 2) (x - 3) (x - 4) > 0, x] |
Out[2]= |
 |
NumberLinePlot 是可視化這些結果的簡便方法:
In[3]:= |
NumberLinePlot[x < 1 || 2 < x < 3 || x > 4, {x, -10, 10}] |
Out[3]= |
 |
通過自然語言輸入可以得到許多方程和公式:
In[1]:= |
 quadratic equation |
Out[1]= |
 |
2.5 二維繪圖
生成多項式函數的二維曲線:
(區間 {x,min,max} 定義了繪圖范圍.)
In[1]:= |
 Plot[x^2 + 2 x + 1, {x, -10, 10}] |
Out[1]= |
 |
或者繪制一組不等式的二維區域:
(&& 是 And 的符號.)
In[2]:= |
RegionPlot[Reduce[{x^2 + y < 2 && x + y < 1}], {x, -3, 3}, {y, -3, 3}] |
Out[2]= |
 |
有許多有用的選項可以用來自定義可視化,比如,可以加上圖例:
In[1]:= |
Plot[{x^3, x^2, x}, {x, -2, 2}, PlotLegends -> "Expressions"] |
Out[1]= |
 |
或對繪圖進行填充來查看曲線下的面積:
In[2]:= |
 Plot[1/x, {x, -3, 3}, Filling -> Axis] |
Out[2]= |
 |
用 Show 來組合不同的繪圖類型:
In[1]:= |
Show[{Plot[x^2 + 2, {x, -3, 3}], RegionPlot[2 x > y - 3, {x, -3, 3}, {y, 0, 9}]}] |
Out[1]= |
 |
2.6 幾何
Graphics 命令可以生成各種各樣的二維形狀:
In[1]:= |
 Graphics[Disk[]] |
Out[1]= |
 |
許多幾何對象接受一系列坐標(列表)作為參數:
In[2]:= |
 Graphics[Rectangle[{0, 0}, {4, 2}]] |
Out[2]= |
 |
與指令一起以列表形式傳遞參數,把圖形組合在一起並改變它們的樣式:
In[3]:= |
Graphics[{Green, Rectangle[{0, 0}, {2, 2}], Red, Disk[]}] |
Out[3]= |
 |
用諸如 SASTriangle 這樣的命令生成三角形:
(鍵入 ESC+deg+ESC
可輸入 °
符號.)
In[1]:= |
 tr = SASTriangle[1, 90 \[Degree], 2] |
Out[1]= |
 |
可以直接算出如面積這樣的屬性:
In[2]:= |
 Area[tr] |
Out[2]= |
 |
把該表達式傳遞給 Graphics:
In[3]:= |
 Graphics[tr] |
Out[3]= |
 |
同樣,可以用 Graphics3D 顯示三維物體:
In[1]:= |
 Graphics3D[Ball[]] |
Out[1]= |
 |
計算體積及其他屬性:
(如果沒有給出參數,圓柱的半徑為1,高度為 2.)
In[2]:= |
 Volume[Cylinder[]] |
Out[2]= |
 |
還可以用自然語言輸入查找公式和其他信息:
In[3]:= |
 volume of a cone |
Out[3]= |
 |
系統還內置有幾何變換,如 Rotate、Translate 和 Scale:
In[1]:= |
 Graphics[Rotate[Rectangle[], 45 \[Degree]]] |
Out[1]= |
 |
2.7 三角函數
對於基本的三角函數,可以使用標准的縮寫形式(首字母大寫):
In[1]:= |
 Sin[x]/Cos[x] == Tan[x] |
Out[1]= |
 |
加上 “Arc” 求反函數:
In[2]:= |
 ArcTan[1] |
Out[2]= |
 |
在弧度表達式中使用 Pi:
(鍵入 ESC+pi+ESC
來輸入 π
字符.)
In[1]:= |
 Sin[\[Pi]/2] |
Out[1]= |
 |
或輸入 ESCd+eg+ESC
得到內置的 Degree 符號:
In[2]:= |
 Sin[90 \[Degree]] |
Out[2]= |
 |
用恆等式自動展開(或化簡)三角表達式:
In[1]:= |
 TrigExpand[Sin[2 x]] |
Out[1]= |
 |
因式分解三角多項式:
In[2]:= |
 TrigFactor[Cos[x]^2 - Sin[x]^2] |
Out[2]= |
 |
也可以使用像 Solve 這樣的函數:
In[1]:= |
 Solve[Cos[x]^2 + Sin[x]^2 == x] |
Out[1]= |
 |
指定解的值域:
In[2]:= |
 Solve[{Tan[x] == 1, 0 < x < 2 Pi}] |
Out[2]= |
 |
2.8 極坐標
創建二維極坐標圖:
(鍵入 ESC+th+ESC
可得到 θ
符號.)
In[1]:= |
PolarPlot[Sin[2 \[Theta]] + Cos[2 \[Theta]], {\[Theta], 0, 2 Pi}] |
Out[1]= |
 |
顯示極坐標軸:
In[2]:= |
PolarPlot[Sin[2 \[Theta]] + Cos[2 \[Theta]], {\[Theta], 0, 2 Pi}, PolarAxes -> Automatic, PolarTicks -> {0 \[Degree], 90 \[Degree], 180 \[Degree], 270 \[Degree]}] |
Out[2]= |
 |
把直角坐標轉換成極坐標:
In[1]:= |
 ToPolarCoordinates[{1, 1}] |
Out[1]= |
 |
2.9 指數和對數
Wolfram 語言用 E 表示指數常數.
Log 給出一個表達式的自然對數:
In[1]:= |
 Log[E^2] |
Out[1]= |
 |
計算以 2 為基數的對數:
In[2]:= |
 Log[2, 64] |
Out[2]= |
 |
在對數刻度上繪圖:
In[1]:= |
 LogPlot[E^x, {x, 1, 5}] |
Out[1]= |
 |
把兩個坐標軸都設成對數刻度:
In[2]:= |
 LogLogPlot[x^2 + x^3, {x, 1, 100}] |
Out[2]= |
 |
2.10 極限
計算表達式的極限值:
(鍵入 -> 可得到
符號.)
In[1]:= |
 Limit[(x^3 - 1)/(x - 1), x -> 1] |
Out[1]= |
 |
求 Infinity 處的極限:
(鍵入 ESC+inf+ESC
可得到 ∞
符號.)
In[2]:= |
 Limit[(2 x^3 - 1)/(5 x^3 + x - 1), x -> \[Infinity]] |
Out[2]= |
 |
還可以指定極限的方向.
設置為 1 時從左側逼近極限:
In[1]:= |
 Limit[1/x, x -> 0, Direction -> 1] |
Out[1]= |
 |
設置為 -1 時從右側逼近極限:
In[2]:= |
 Limit[1/x, x -> 0, Direction -> -1] |
Out[2]= |
 |
用 HoldForm 將表達式保持為未計算狀態:
(TraditionalForm 用傳統的數學排版形式顯示.)
In[1]:= |
TraditionalForm[HoldForm[Limit[1/x, x -> Infinity]]] |
Out[1]= |
 |
2.11 導數
用命令 D 計算導數:
In[1]:= |
 D[x^6, x] |
Out[1]= |
 |
或者使用角分符號:
In[2]:= |
 Sin'[x] |
Out[2]= |
 |
對用戶定義的函數求導:
In[1]:= |

f[x_] := x^2 + 2 x + 1; f'[x] |
Out[1]= |
 |
繪制導數:
In[2]:= |
 Plot[{f[x], f'[x]}, {x, -3, 3}] |
Out[2]= |
 |
還可以多次求導:
In[1]:= |
 D[x^6, {x, 3}] |
Out[1]= |
 |
或者多次使用 ' 符號:
In[2]:= |
 Sin''[x] |
Out[2]= |
 |
和前面討論過的主題一樣,也可以通過自然語言輸入得到微積分公式:
In[1]:= |
 product rule formula |
Out[1]= |
 |
2.12 積分
用 Integrate 計算積分:
In[1]:= |
 Integrate[8 x^4, x] |
Out[1]= |
 |
或輸入 ESC+intt+ESC
得到一個可填充的數學表達式:
(如果想了解更多關於可填充表達式的信息,請參閱數學排版顯示.)
In[2]:= |
 \[Integral]8 x^4 \[DifferentialD]x |
Out[2]= |
 |
對於定積分,輸入 ESC+dintt+ESC
並指定上下限:
In[1]:= |
\!\( \*SubsuperscriptBox[\(\[Integral]\), \(0\), \(\[Pi]\)]\(Sin[ x] \[DifferentialD]x\)\) |
Out[1]= |
 |
用 NIntegrate 來得到數值近似:
In[2]:= |

NIntegrate[x^3 Sin[x] + 2 Log[3 x]^2, {x, 0, Pi}] |
Out[2]= |
 |
2.13 序列、求和與級數
在 Wolfram 語言中,用列表表示整數序列.
用 Table 來定義一個簡單的序列:
In[1]:= |
 Table[x^2, {x, 1, 7}] |
Out[1]= |
 |
系統內置有大家熟知的序列:
In[2]:= |
 Table[Fibonacci[x], {x, 1, 7}] |
Out[2]= |
 |
用 RecurrenceTable 定義遞歸序列:
(注意 {x,min,max} 表示法的使用.)
In[1]:= |

RecurrenceTable[{a[x] == 2 a[x - 1], a[1] == 1}, a, {x, 1, 8}] |
Out[1]= |
 |
計算序列的 Total:
In[2]:= |
 Total[%] |
Out[2]= |
 |
根據母函數計算序列的 Sum:
In[1]:= |
 Sum[i (i + 1), {i, 1, 10}] |
Out[1]= |
 |
用 ESC+sumt+ESC
得到可填充的排版形式:
In[2]:= |

\!\( \*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(10\)]\(i \((i + 1)\)\)\) |
Out[2]= |
 |
可以進行不定求和與多重求和計算:
In[3]:= |

\!\( \*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(n\)]\( \*UnderoverscriptBox[\(\[Sum]\), \(j = 1\), \(n\)]i\ j\)\) |
Out[3]= |
 |
計算序列的母函數:
In[1]:= |
 FindSequenceFunction[{2, 4, 6, 8}, n] |
Out[1]= |
 |
生成幾乎任意內置函數的組合的冪級數近似:
In[1]:= |
 Series[Exp[x^2], {x, 0, 8}] |
Out[1]= |
 |
O[x]9 表示省略掉的更高次數的項;用 Normal 來截斷這些項:
In[2]:= |
 Normal[%] |
Out[2]= |
 |
給定一個未知或未定義的函數,Series 返回用導數表示的冪級數:
In[3]:= |
 Series[2 f[x] - 3, {x, 0, 3}] |
Out[3]= |
 |
系統可自動化簡收斂級數:
In[1]:= |
 \!\( \*UnderoverscriptBox[\(\[Sum]\), \(n = 0\), \(\[Infinity]\)] \*SuperscriptBox[\(0.5\), \(n\)]\) |
Out[1]= |
 |
2.14 更多二維繪圖
用 ParametricPlot 來繪制一組參數方程:
In[1]:= |
 ParametricPlot[{2 Cos[t] - Cos[2 t], 2 Sin[t] - Sin[2 t]}, {t, 0, 2 Pi}] |
Out[1]= |
 |
用多個變量繪制函數的 ContourPlot:
In[1]:= |
 ContourPlot[Sqrt[x^2 + y^2], {x, -1, 1}, {y, -1, 1}] |
Out[1]= |
 |
用 DensityPlot 繪制連續形式的圖:
In[2]:= |
 DensityPlot[Sqrt[x^2 + y^2], {x, -1, 1}, {y, -1, 1}] |
Out[2]= |
 |
2.15 三維繪圖
Plot3D 可繪制三維的笛卡爾曲線或曲面:
In[1]:= |
 Plot3D[x^2 - y^2 , {x, -3, 3}, {y, -3, 3}] |
Out[1]= |
 |
用 ParametricPlot3D 繪制三維空間曲線:
In[2]:= |

ParametricPlot3D[{Sin[u], Cos[u], u/10}, {u, 0, 20}] |
Out[2]= |
 |
如果想在球面坐標系中繪圖,用 SphericalPlot3D:
In[3]:= |

SphericalPlot3D[Sin[\[Theta]], {\[Theta], 0, Pi}, {\[Phi], 0, 2 Pi}] |
Out[3]= |
 |
RevolutionPlot3D 通過繞軸旋轉一個表達式構建曲面:
In[1]:= |
 RevolutionPlot3D[x^4 - x^2, {x, -1, 1}] |
Out[1]= |
 |
2.16 多變量微積分
D 可用於求偏導數,只需指定對哪個或哪些變量求導:
In[1]:= |
 D[x^3 z + 2 y^2 x + y z^3, y, z] |
Out[1]= |
 |
或使用 ∂
符號:
(鍵入 ESC+pd+ESC
可以輸入 ∂
,CTRL+-
產生下標.)
In[2]:= |

\!\( \*SubscriptBox[\(\[PartialD]\), \(x, y\)]\(( \*SuperscriptBox[\(x\), \(2\)] - 2 x\ y + x\ y\ z)\)\) |
Out[2]= |
 |
多重積分與單個積分的符號是一樣的:
(鍵入 ESC+int+ESC
可得到 ∫
,用 ESC+dd+ESC
得到
.)
In[1]:= |

\[Integral]\[Integral]\[Integral](x^2 + y^2 + z^2) \[DifferentialD]y \[DifferentialD]x \[DifferentialD]z |
Out[1]= |
 |
符號式結果常常相當復雜:
In[2]:= |

\!\( \*SubsuperscriptBox[\(\[Integral]\), \(-1\), \(1\)]\( \*SubsuperscriptBox[\(\[Integral]\), \(-2\), \(x\)]\((x\ Sin[ \*SuperscriptBox[\(y\), \(2\)]] + y\ Cos[ \*SuperscriptBox[\(x\), \(2\)]])\) \[DifferentialD]y \ \[DifferentialD]x\)\) |
Out[2]= |
 |
這種情況下,總可以通過使用 N 命令得到近似結果:
In[3]:= |
 N[%, 5] |
Out[3]= |
 |
2.17 矢量分析與可視化
在 Wolfram 語言中,用長度為 n 的列表表示 n 維矢量.
計算兩個矢量的點積:
In[1]:= |
 {1, 2, 3}.{a, b, c} |
Out[1]= |
 |
輸入 ESC+cross+ESC
得到叉乘符號:
In[2]:= |
 {1, 2, c}\[Cross]{a, b, c} |
Out[2]= |
 |
計算矢量的模:
In[1]:= |
 Norm[{1, 1, 1}] |
Out[1]= |
 |
求矢量在 x 軸上的投影:
In[2]:= |
 Projection[{8, 6, 7}, {1, 0, 0}] |
Out[2]= |
 |
求兩個矢量的夾角:
In[3]:= |
 VectorAngle[{1, 0}, {0, 1}] |
Out[3]= |
 |
計算矢量的梯度:
(用 ESC+grad+ESC
輸入 ∇
符號.)
In[1]:= |

\!\( \*SubscriptBox[\(\[Del]\), \({x, y}\)]\({ \*SuperscriptBox[\(x\), \(2\)] + y, x + \*SuperscriptBox[\(y\), \(2\)]}\)\) |
Out[1]= |
 |
計算向量場的散度或旋度:
In[2]:= |

Div[{f[x, y, z], g[x, y, z], h[x, y, z]}, {x, y, z}] |
Out[2]= |
 |
Wolfram 語言擁有適合於可視化向量場的二維和三維函數:
In[1]:= |
 VectorPlot[{y, -x}, {x, -3, 3}, {y, -3, 3}] |
Out[1]= |
 |
In[2]:= |

VectorPlot3D[{y, -x, z}, {x, -3, 3}, {y, -3, 3}, {z, -3, 3}] |
Out[2]= |
 |
在切片曲面上繪制向量場:
In[3]:= |

SliceVectorPlot3D[{y, -x, z}, "CenterPlanes", {x, -2, 2}, {y, -2, 2}, {z, -2, 2}] |
Out[3]= |
 |
2.18 微分方程
Wolfram 語言可以求解常微分方程、偏微分方程和時滯微分方程 (ODE、PDE 和 DDE).
DSolveValue 接受微分方程並返回通解:
(C[1] 表示積分常數.)
In[1]:= |
 sol = DSolveValue[y'[x] + y[x] == x, y[x], x] |
Out[1]= |
 |
用 /. 替換常數:
In[2]:= |
 sol /. C[1] -> 1 |
Out[2]= |
 |
或為特解加上條件:
In[3]:= |

DSolveValue[{y'[x] + y[x] == x, y[0] == -1}, y[x], x] |
Out[3]= |
 |
NDSolveValue 可求出數值解:
In[1]:= |

NDSolveValue[{y'[x] == Cos[x^2], y[0] == 0}, y[x], {x, -5, 5}] |
Out[1]= |
 |
可直接繪制 InterpolatingFunction:
In[2]:= |
 Plot[%, {x, -5, 5}] |
Out[2]= |
 |
如果想要求解微分方程組,把所有方程和條件都放在列表中:
(注意:換行符沒有任何影響.)
In[1]:= |
{xsol, ysol} = NDSolveValue[ {x'[t] == -y[t] - x[t]^2, y'[t] == 2 x[t] - y[t]^3, x[0] == y[0] == 1}, {x, y}, {t, 20}] |
Out[1]= |
 |
用參數圖可視化解:
In[2]:= |
 ParametricPlot[{xsol[t], ysol[t]}, {t, 0, 20}] |
Out[2]= |
 |
2.19 復分析
虛部單位
表示為 I:
In[1]:= |
 I^2 |
Out[1]= |
 |
許多運算可以自動處理復數:
In[2]:= |
 (1 + I) (2 - 3 I) |
Out[2]= |
 |
展開復數表達式:
In[1]:= |
 ComplexExpand[Sin[x + I y]] |
Out[1]= |
 |
在指數形式和三角函數形式之間轉換表達式:
In[2]:= |
 ExpToTrig[E^(I x)] |
Out[2]= |
 |
In[3]:= |
 TrigToExp[%] |
Out[3]= |
 |
輸入 ESC+co+ESC
可得到 Conjugate 符號:
In[1]:= |
 (3 + 2 I)\[Conjugate] |
Out[1]= |
 |
提取表達式的實部和虛部:
In[2]:= |
 ReIm[3 + 2 I] |
Out[2]= |
 |
或求絕對值和輻角:
In[3]:= |
 AbsArg[(1 + I)] |
Out[3]= |
 |
用 ParametricPlot 繪制保角映射:
In[1]:= |

ParametricPlot[ReIm[E^(I \[Omega])], {\[Omega], 0, 2 \[Pi]}] |
Out[1]= |
 |
在 PolarPlot 中使用 AbsArg:
In[2]:= |

PolarPlot[AbsArg[E^(I \[Omega])], {\[Omega], 0, \[Pi]}] |
Out[2]= |
 |
用 DensityPlot 可視化復分量:
In[3]:= |

DensityPlot[Im[ArcSin[(x + I y)^2]], {x, -2, 2}, {y, -2, 2}] |
Out[3]= |
 |
2.20 矩陣與線性代數
Wolfram 語言用列表的列表表示矩陣:
In[1]:= |
 {{1, 2}, {3, 4}} |
輸入一個表格,用 CTRL+ ENTER
輸入行,用 CTRL+ ,
輸入列:
In[2]:= |
 { {a, b}, {c, d} } |
Out[2]= |
 |
MatrixForm 將輸出顯示為一個矩陣:
In[3]:= |
 MatrixForm[{{a, b}, {c, d}}] |
Out[3]= |
 |
可以用迭代函數構建矩陣:
In[1]:= |
 Table[x + y, {x, 1, 3}, {y, 0, 2}] |
Out[1]= |
 |
或導入表示矩陣的數據:
In[2]:= |
 Import["data.csv"] |
Out[2]= |
 |
IdentityMatrix、DiagonalMatrix 和其他類似命令為內置符號.
標准的矩陣運算對元素進行操作:
In[1]:= |
 {1, 2, 3} {a, b, c} |
Out[1]= |
 |
計算兩個矩陣的點積:
In[2]:= |
 {{1, 2}, {3, 4}}.{{a, b}, {c, d}} |
Out[2]= |
 |
求行列式:
In[3]:= |
 Det[{{a, b}, {c, d}}] |
Out[3]= |
 |
獲取矩陣的逆:
In[4]:= |
 Inverse[{{1, 1}, {0, 1}}] |
Out[4]= |
 |
用 LinearSolve 求解線性系統:
In[1]:= |
 LinearSolve[{{1, 1}, {0, 1}}, {x, y}] |
Out[1]= |
 |
還有用於最小化和矩陣分解的函數.
2.21 離散數學
進行基本的數論運算,如因子分解:
In[1]:= |
 FactorInteger[30] |
Out[1]= |
 |
求任意兩個整數的最大公約數(或最小公倍數 ):
In[2]:= |
 GCD[24, 60] |
Out[2]= |
 |
顯示第 4 個質數:
In[1]:= |
 Prime[4] |
Out[1]= |
 |
判斷一個數是否是質數:
In[2]:= |
 PrimeQ[%] |
Out[2]= |
 |
也可以進行互質判定:
In[3]:= |
 CoprimeQ[51, 15] |
Out[3]= |
 |
用 Mod 函數求余數:
In[1]:= |
 Mod[17, 5] |
Out[1]= |
 |
獲取一個列表所有可能的排列:
In[1]:= |
 Permutations[{a, b, c}] |
Out[1]= |
 |
用不相交 Cycles 對列表應用 Permute:
(Cycles 接受列表的列表作為參數.)
In[2]:= |

Permute[{a, b, c, d}, Cycles[{{2, 4}, {1, 3}}]] |
Out[2]= |
 |
求置換階數:
In[3]:= |
 PermutationOrder[Cycles[{{2, 4}, {1, 3}}]] |
Out[3]= |
 |
根據邊的列表生成 Graph:
(用 ESC+ue+ESC
輸入 UndirectedEdge,或用 ESC+de+ESC
輸入 DirectedEdge.)
In[1]:= |

Graph[{1 <-> 2, 2 \[DirectedEdge] 3, 3 \[DirectedEdge] 4, 4 <-> 1, 3 \[DirectedEdge] 1, 2 \[DirectedEdge] 2}, VertexLabels -> All] |
Out[1]= |
 |
求兩個頂點間最短的路徑:
In[2]:= |
 FindShortestPath[%, 3, 2] |
Out[2]= |
 |
用自然語言輸入了解眾所周知的圖:
In[3]:= |
 pappus graph image |
Out[3]= |
 |
2.22 概率
Wolfram 語言含有范圍廣泛的概率函數,以及幾百個符號分布.
用數學符號計算階乘:
In[1]:= |
 5! |
Out[1]= |
 |
對於組合,可使用 Binomial:
In[2]:= |
 Binomial[4, 3] |
Out[2]= |
 |
計算二項分布的概率:
(鍵入 ESC+dist+ESC
可得到
符號.)
In[1]:= |
Probability[x == 1, x \[Distributed] BinomialDistribution[1, 1/2]] |
Out[1]= |
 |
計算多項式的期望:
In[2]:= |
Expectation[2 x + 3, x \[Distributed] NormalDistribution[]] |
Out[2]= |
 |
獲取正態分布的符號式 PDF:
In[1]:= |
 PDF[NormalDistribution[0, 1], x] |
Out[1]= |
 |
對結果繪圖:
In[2]:= |
 Plot[%, {x, -5, 5}, Filling -> Axis] |
Out[2]= |
 |
自由格式輸入可用來計算現實世界事件的概率:
In[1]:= |
 birthday problem 18 people |
Out[1]= |
 |
2.23 統計
在 Wolfram 語言中,統計函數可接受列表或符號分布作為參數:
計算一組數字的均值:
In[1]:= |
 Mean[{1, 2, 4, 5}] |
Out[1]= |
 |
求多個列表的相關:
In[2]:= |
 Correlation[{1, 3, 5}, {6, 4, 2}] |
Out[2]= |
 |
求泊松分布的標准差:
In[3]:= |
 StandardDeviation[PoissonDistribution[2]] |
Out[3]= |
 |
計算一組符號的矩:
In[1]:= |
 Moment[{x, y, z}, 2] |
Out[1]= |
 |
獲取分布的矩母函數:
(鍵入 ESC+m+ESC
可得到 μ
,或鍵入 ESC+s+ESC
得到 σ
.)
In[2]:= |
 MomentGeneratingFunction[NormalDistribution[\[Mu], \[Sigma]], t] |
Out[2]= |
 |
用 RandomVariate 產生統計數據:
(用 //Short 來得到輸出的簡短總結.)
In[1]:= |

RandomVariate[NormalDistribution[0, 1], {500, 2}] // Short |
Out[1]= |
 |
可視化所得數據:
In[2]:= |
 Histogram3D[%] |
Out[2]= |
 |
2.24 繪制數據與最佳擬合曲線
用 ListPlot 繪制數據點:
In[1]:= |
 ListPlot[{1, 3, 4, 7, 9, 15}] |
Out[1]= |
 |
或用圖表顯示信息:
In[2]:= |
 BarChart[{1, 2, 3, 4, 5}] |
Out[2]= |
 |
有專門的函數繪制時間序列、金融數據,還有許多其他繪圖函數.
自動對多個數據集添加不同的顏色以示區分:
In[1]:= |

ListLinePlot[{{1, 2, 3, 4, 5}, {1, 3, 7, 10, 17}}] |
Out[1]= |
 |
|
|
通過使用如 PlotTheme 這樣的選項可以改變繪圖的樣式和外觀.
用 Fit 命令找到最佳擬合曲線:
({1,x,x2} 表示 x 的二次擬合.)
In[1]:= |
 Fit[{2, 3, 5, 7, 11, 13}, {1, x, x^2}, x] |
Out[1]= |
 |
用 Show 將曲線與數據點相比較:
In[2]:= |
 Show[{Plot[%, {x, 1, 6}], ListPlot[{2, 3, 5, 7, 11, 13}]}] |
Out[2]= |
 |
2.25 群論
SymmetricGroup、AlternatingGroup、DihedralGroup 和許多其他已命名群屬於內置符號.
獲取群的元素列表:
In[1]:= |
 GroupElements[SymmetricGroup[2]] |
Out[1]= |
 |
確定群的生成元:
In[2]:= |
 GroupGenerators[SymmetricGroup[3]] |
Out[2]= |
 |
用兩個生成元創建一個置換群:
In[1]:= |

PermutationGroup[{Cycles[{{3, 1, 2}}], Cycles[{{2, 5, 6}}]}] |
計算階數:
In[2]:= |
 GroupOrder[%] |
Out[2]= |
 |
顯示群的乘法表:
In[1]:= |
 TableForm[GroupMultiplicationTable[DihedralGroup[2]], TableHeadings -> Automatic] |
Out[1]= |
 |
用 Cayley 圖可視化:
In[2]:= |
 CayleyGraph[DihedralGroup[2]] |
Out[2]= |
 |
2.26 數學難題
Wolfram 語言是解決極具挑戰性的數學難題和游戲的絕佳平台. 一旦明白其中的原理,用它來做研究就會得心應手.
假設你想在 100 萬以內找出與 100 萬沒有公因子的正整數的個數.
那就從用 CoprimeQ 把前 100 萬個正整數與 100 萬相比開始.
In[1]:= |
 CoprimeQ[Range[1000000], 1000000] // Short |
Out[1]= |
 |
通過用 Nothing 替換結果為 False 的項,自動將其移除:
In[2]:= |
 % /. False -> Nothing // Short |
Out[2]= |
 |
然后計算所得列表的長度:
In[3]:= |
 Length[%] |
Out[3]= |
 |
把這些步驟放在一條命令中:
In[4]:= |

Length[CoprimeQ[Range[1000000], 1000000] /. False -> Nothing] |
Out[4]= |
 |
符號表達式經常能給出直接解. 給定一個正整數 k,你能找出計算 1k+2k+...+nk 的和的公式嗎?
k=2 時的解:
In[1]:= |

\!\( \*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(n\)] \*SuperscriptBox[\(i\), \(2\)]\) |
Out[1]= |
 |
通用解是第 n 個階數為 −
k 的調和數:
In[2]:= |

\!\( \*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(n\)] \*SuperscriptBox[\(i\), \(k\)]\) |
|
|
Out[2]= |
 |
利用內置圖形可以很容易地可視化幾何問題. 來看下面的圖形:
In[1]:= |

Labeled[Graphics[ shape = {Rectangle[], Rectangle[{0, 1}], Rectangle[{1, 0}]}], n] |
Out[1]= |
 |
對於給定的基底長度 n,可不可能用類似的基底長度為 1 的形狀來填充這個圖形?
n=2 時的解:
In[2]:= |

Graphics[{ Scale[shape, 2, {0, 0}], {Yellow, shape}, {Green, Translate[shape, {1, 1}]}, {Blue, Translate[Rotate[shape, -90 \[Degree]], {0, 2}]}, {Red, Translate[Rotate[shape, 90 \[Degree]], {2, 0}]} }] |
Out[2]= |
 |
n=3 時的解:
In[3]:= |

Graphics[{ Scale[shape, 3, {0, 0}], {Orange, shape}, {Magenta, Translate[Rotate[shape, -90 \[Degree]], {0, 2}]}, {Green, Translate[shape, {1, 1}]}, {Red, Translate[Rotate[shape, 90 \[Degree]], {2, 0}]}, {Black, Translate[shape, {0, 4}]}, {Blue, Translate[Rotate[shape, 180 \[Degree]], {1, 4}]}, {Gray, Translate[shape, {2, 2}]}, {Purple, Translate[Rotate[shape, -90 \[Degree]], {4, 1}]}, {Yellow, Translate[Rotate[shape, 90 \[Degree]], {4, 0}]} }] |
Out[3]= |
 |
可以通過自然語言輸入獲取有名的游戲、難題和謎題:
In[1]:= |
 Tower of Hanoi 2 disk solution |
Out[1]= |
 |
2.27 交互模型
通過 Manipulate 命令可以交互式地實時查看改變參數會發生什么:
In[1]:= |

Manipulate[Plot[Sin[f x], {x, -3, 3}, Filling -> Axis], {f, 1, 5}] |
Out[1]= |
 |
一個單獨的 Manipulate 命令中可以有多個控件,Wolfram 語言將自動選擇控件最合適的布局:
In[1]:= |

Manipulate[Plot[Sin[f*x + p], {x, -3, 3}, Filling -> fill, PlotStyle -> color], {f, 1, 5}, {p, 3, 9}, {fill, {Bottom, Top, Axis}}, {color, Red}] |
Out[1]= |
 |
Wolfram 語言中的任意表達式都可被操控,包括非圖形表達式:
In[1]:= |
 Manipulate[Expand[(a + b)^n], {n, 1, 20, 1}] |
Out[1]= |
 |
2.28 數學排版顯示
用鍵盤快捷鍵(如 CTRL+/
可用於分數的輸入)插入可填充的排版表達式:
(點擊方框突出顯示並填充,或按下 TAB
在各方框間移動.)

這是輸入指數 (CTRL+6
)、下標 (CTRL+-
) 和其他常見表達式的簡單方法.
在筆記本中按下 ESC 鍵得到
符號,可用在鍵盤快捷輸入形式
(在文檔中常記為 ESC
+alias+ESC
)中.
鍵入正確的別名,當右側的
輸入完成后,表達式就會發生改變:
(偏微分 “partial derivative” 的別名是 “pd”.)

產生求和、積分和其他高級表達式的方法為:
(定積分 “definite integral” 的別名是 “dintt”.)

許多希臘字母和其他特殊字符也使用這種形式.
在桌面版的筆記本中,可以選擇面板菜單中的“數學助手”查看可用的排版形式.
點擊面板上的按鈕即可在鼠標所在處插入一個可填充表達式:

使用 TraditionalForm 命令以傳統數學符號顯示任意表達式:
In[1]:= |
 TraditionalForm[(y + 3)^2/((y - 2) (y + 5))] |
Out[1]= |
 |
用 SHIFT+CMD+T
(SHIFT+ALT+T
)把現有單元轉換成 TraditionalForm:
(TraditionalForm 形式的表達式仍然是可計算的.)
In[2]:= |
 Limit[(x^2 - 1)/(x - 1), x -> 0] |
In[3]:= |

\!\(\*UnderscriptBox[\(lim\), \(x \[Rule] 0\)]\)( x^2 - 1)/(x - 1) |
Out[3]= |
 |
2.29 筆記本文檔
可以在桌面或網頁上使用 Wolfram 筆記本,它成功地把文字、圖形、界面等與計算融合在一起:

筆記本是按單元組織的,並由右邊的方括號指定,
雙擊單元方括號打開或關閉單元組,
在單元間點擊可以獲取水平插入條,以便創建一個新的單元;
拷貝、粘貼、刪除任何單元集合等.
選中任何單元集合並按住 SHIFT+ENTER
對輸入進行計算.
在筆記本中可以加上標題、章節或文本單元:

把筆記本轉換成幻燈片也是易如反掌:

與 Wolfram 語言的其他內容一樣,文檔也是可被程序化改變的符號表達式.
2.30 雲部署
CloudDeploy 可把對象部署到 Wolfram Cloud.
創建一個有正弦波圖片的網頁:
In[1]:= |
 CloudDeploy[Plot[Sin[x], {x, 0, 50}]] |
[Out1]=

部署一個動態界面:
In[1]:= |

CloudDeploy[Manipulate[Plot[Sin[f x], {x, 0, 2 Pi}], {f, 1, 10}]] |
[Out1]=

無論是否是動態部署,從筆記本部署的內容都會保留其樣式.
用 CloudDeploy[Delayed[...]] 部署表達式,每次被請求時都對其重新進行計算.