Mathematica——能與MATLAB媲美的強大計算工具
提到計算,大家馬上聯想到的可能是使用計算器和Excel表格。實際上,對於更加複雜的工程計算、程式設計和作圖需求,目前最流行的兩大軟體是MATLAB和Mathematica。它們均在大學教學、學術界和工業界發揮著重要作用。MATLAB更加適合工程應用,Mathematica更加適合數學分析。
Mathematica是由美國的沃爾夫勒姆(Wolfram)研究公司開發的計算軟體,於1988年問世,在數值計算、符號運算、數學繪圖和動畫顯示等方面具有強大能力。Mathematica作為一種互動式計算工具,能夠智慧化理解用戶輸入的英文計算命令,使用方便。它作為一種程式語言,語法規則簡單,語句精煉,能夠使用較少語句完成複雜計算和公式推導等任務。使用者可以選擇單命令對話方式或批次程式方式進行計算。
Mathematica內置大量函數,例如Abs[x]表示x的絕對值,Random[]表示產生[0, 1]區間上的亂數,Factor[expr]表示對expr進行因式分解,Plot[f[x], {x, xmin, xmax}]表示对函数f作圖。它可以求解方程、方程組和不等式,例如使用Solve[x2-2x+1==0, x] 命令求解方程中的未知數x。它可以求導數,例如使用D[f, x1, x2, x3] 命令能夠求f關於x1、x2、x3的偏導數。它可以求積分,例如使用Integrate[f, {x, a, b}]命令能夠求函數f相對於x在x=a到x=b的範圍內的積分值。它還可以求解常微分方程和偏微分方程,例如使用DSolve[{x’’[t]-3x’[t]+8y’[t]+4y[t]==0, x’[t]-2y’[t]+7x[t]==3 Exp[t]}, {x[t], y[t]}, t]的命令能夠求解引數為t的常微分方程組。從以上幾個例子可以看出,Mathematica的計算方式是使用大量內置函數命令,非常便於計算和公式推導,免去了使用者查找演算法並使用FORTRAN或C語言自己程式設計的麻煩。
Mathematica與MATLAB在很多計算、繪圖和程式設計的功能上類似。它們之間的區別可以歸納為以下幾點,各有優劣。
- MATLAB在軟體語言規則、程式設計便利性和程式調試方面比Mathematica更加方便易用。
- MATLAB包括各種工具包,例如信號處理工具包、優化工具包、神經網路工具包、控制系統工具包、樣條工具包、符號數學工具包、影像處理工具包、統計工具包等。
- 由於Mathematica提供一種稱為“Notebook”的使用者介面,格式靈活友好,因此用戶能夠很容易地將計算結果直接存成彙報演講稿格式的檔,在這方面比MATLAB更加方便。
關於Mathematica的使用方法,本文從網上精選出一個詳細的視頻指南和一個講座示例,建議讀者觀看。掌握Mathematica的關鍵是熟悉其語法規則。以下總結它的20條重要語法規則。
- 启动软件後,出现Notebook窗口。输入用In[ ]表示,输出用Out[ ]表示,按“Shift+Enter”鍵運行計算。
- 用戶在Notebook界面下,使用“?”或“??”可查询函数的定义和用法,获取帮助信息。如果使用两个问号“??”,则帮助信息会更详细。例如,“?Plot*”给出所有以“Plot”开头的命令。
- 完成计算后,点击File->Exit菜单退出。如果文件未存盘,系统将提示用户存盘,文件名以“.nb”作为后缀,称为Notebook文件。需要再次使用存盘的文件时,可以点击打开。
- Mathematica 严格区分大小写。內置函数的首字母須大寫。當函数名由几个单词构成时,每个单词的首写字母必须大写,例如:求局部极小值函数FindMinimum[f[x], {x, x0]。
- 用戶自定义变量须以小写字母开头,后跟数字和字母的组合,长度不限。
- 特殊字元:
Pi 表示圓周率。
E表示自然常數。
Degree表示角度轉換為弧度的常數,等於Pi/180。
I表示虛數單位,其值為-1的平方根。
- 变量赋值规则:
x=a表示將變數x的值設為a。
x=y=b表示將變數x和y的值均設為b。
x=.或Clear[x]表示清除變數x的值。
Remove[f]表示將f從系統中清除。
- 變數關係規則:
當xy中間沒有空格時,視為變數xy。
當x y中間有一個空格時,視為x乘y。
3x表示3乘x。
x3表示變數x3。
- 函数名和自变量参数之间用分隔符[ ]表示,而不是用数学书上常用的圆括号“( )”表示。
- 變數的清單值和範圍用大括弧{ }表示。
- 關於數學表达式的输入,Mathematica允许用户使用以下两种格式。形如x/(1+7x)+y/(x-2)的称为一维格式。形如下式的使用工具栏输入的格式称为二维格式:。
- 函數的展開與分解:
Expand[expr]表示將expr展開。
Factor[expr]表示對expr做因式分解。
Simplify[expr]表示將expr化簡成精簡的式子。
FullSimplify[expr]表示Mathematica會嘗試更多的化簡公式,將expr化為更精簡的式子。
- 常用數學函數:
Sin[x], Cos[x], Tan[x], Cot[x], Sec[x], Csc[x]表示三角函數,其引數的單位為弧度。
Sinh[x], Cosh[x], Tanh[x]表示雙曲函數。
ArcSin[x], ArcCos[x], ArcTan[x]表示反三角函數。
Sqrt[x]表示根號。
Exp[x]表示指數。
Log[x]表示自然對數。Log[a, x]表示以a為底的對數。
Abs[x]表示絕對值。
Round[x]表示最接近x的整數。
Floor[x]表示小於或等於x的最大整數。
Ceiling[x]表示大於或等於x的最小整數。
Max[a, b, c, …]和Min[a, b, c, …]分別表示a、b、c、…的極大值和極小值。
- 關係運算子:
a==b表示等於。
a!=b表示不等於。
a>b表示大於。
a>=b表示大於等於。
a<b表示小於。
a<=b表示小於等於。
- 基本運算法則:
a^b表示冪次方。
a+b+c表示加法。
2+6I表示複數形式。
Conjugate[a+bI]表示共軛複數。
Re[z]和Im[z]分別表示複數z的實數和虛數部分。Abs[z]表示複數z的大小或模數(Modulus)。Arg[z]表示複數z的幅角(Argument)。
- 求和與求積法則:
Sum[f, {i, imin, imax}]表示求和。
Sum[f, {i, imin, imax, di}]表示求數列之和,引數i以di遞增。
Product[f, {i, imin, imax}]表示求積。
Product[f, {i, imin, imax, di}]表示求數列之積,引數i以di遞增。
- 微分法則:
D[f, x]表示將函數f相對於x進行微分。
D[f, x1, x2, …]表示將函數f相對於x1、x2、…進行微分。
D[f, {x, n}]表示將函數f相對於x進行n次微分。
D[f, x, NonConstants->{y, z, …}]表示對函數f相對於x進行微分,並將y、z、…視為x的函數。
- 積分法則:
Integrate[f, x]表示將函數f相對於x進行不定積分。
Integrate[f, {x, xmin, xmax}]表示將函數f相對於x進行定積分。
Integrate[f, {x, xmin, xmax}, {y, ymin, ymax}]表示將函數f相對於x和y進行定積分。
- 方程式求解法則:
Solve[lhs==rhs, x]表示求解方程式lhs==rhs,x是引數。
Nsolve[lhs==rhs, x]表示求方程式lhs==rhs的數值解。
Solve[{lhs1==rhs1, lhs2==rhs2, …}, {x, y, …}]表示求解方程組, x和y等是引數。
NSolve[{lhs1==rhs1, lhs2==rhs2, …}, {x, y, …}]表示求解方程組的數值解。
FindRoot[lhs==rhs, {x, x0}]表示由初始點x0求方程lhs==rhs的根。
- 作图函數主要包括Plot、Plot3D、ParametricPlot、ParametricPlot3D、PolarPlot、ContourPlot、ContourPlot3D、RevolutionPlot3D、SphericalPlot3D、DensityPlot、DensityPlot3D、RegionPlot、RegionPlot3D、ListPlot、ListPlot3D、ListContourPlot、ListContourPlot3D、ListContourPlot3D、ListPointPlot3D、ListDensityPlot、ListDensityPlot3D。統計圖作圖函數主要包括Histogram、Histogram3D、DensityHistogram、SmoothHistogram3D等。