16

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在很多計算、繪圖和程式設計的功能上類似。它們之間的區別可以歸納為以下幾點,各有優劣。

  1. MATLAB在軟體語言規則、程式設計便利性和程式調試方面比Mathematica更加方便易用。
  2. MATLAB包括各種工具包,例如信號處理工具包、優化工具包、神經網路工具包、控制系統工具包、樣條工具包、符號數學工具包、影像處理工具包、統計工具包等。
  3. 由於Mathematica提供一種稱為“Notebook”的使用者介面,格式靈活友好,因此用戶能夠很容易地將計算結果直接存成彙報演講稿格式的檔,在這方面比MATLAB更加方便。

關於Mathematica的使用方法,本文從網上精選出一個詳細的視頻指南和一個講座示例,建議讀者觀看。掌握Mathematica的關鍵是熟悉其語法規則。以下總結它的20條重要語法規則

  1. 启动软件後,出现Notebook窗口。输入用In[ ]表示,输出用Out[ ]表示,按“Shift+Enter”鍵運行計算。
  2. 用戶在Notebook界面下,使用“?”或“??”可查询函数的定义和用法,获取帮助信息。如果使用两个问号“??”,则帮助信息会更详细。例如,“?Plot*”给出所有以“Plot”开头的命令。
  3. 完成计算后,点击File->Exit菜单退出。如果文件未存盘,系统将提示用户存盘,文件名以“.nb”作为后缀,称为Notebook文件。需要再次使用存盘的文件时,可以点击打开。
  4. Mathematica 严格区分大小写。內置函数的首字母須大寫。當函数名由几个单词构成时,每个单词的首写字母必须大写,例如:求局部极小值函数FindMinimum[f[x], {x, x0]。
  5. 用戶自定义变量须以小写字母开头,后跟数字和字母的组合,长度不限。
  6. 特殊字元:

Pi 表示圓周率。

E表示自然常數。

Degree表示角度轉換為弧度的常數,等於Pi/180。

I表示虛數單位,其值為-1的平方根。

  1. 变量赋值规则:

x=a表示將變數x的值設為a。

x=y=b表示將變數x和y的值均設為b。

x=.或Clear[x]表示清除變數x的值。

Remove[f]表示將f從系統中清除。

  1. 變數關係規則:

當xy中間沒有空格時,視為變數xy。

當x y中間有一個空格時,視為x乘y。

3x表示3乘x。

x3表示變數x3。

  1. 函数名和自变量参数之间用分隔符[ ]表示,而不是用数学书上常用的圆括号“( )”表示。
  2. 變數的清單值和範圍用大括弧{ }表示。
  3. 關於數學表达式的输入,Mathematica允许用户使用以下两种格式。形如x/(1+7x)+y/(x-2)的称为一维格式。形如下式的使用工具栏输入的格式称为二维格式:。
  4. 函數的展開與分解:

Expand[expr]表示將expr展開。

Factor[expr]表示對expr做因式分解。

Simplify[expr]表示將expr化簡成精簡的式子。

FullSimplify[expr]表示Mathematica會嘗試更多的化簡公式,將expr化為更精簡的式子。

  1. 常用數學函數:

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、…的極大值和極小值。

  1. 關係運算子:

a==b表示等於。

a!=b表示不等於。

a>b表示大於。

a>=b表示大於等於。

a<b表示小於。

a<=b表示小於等於。

  1. 基本運算法則:

a^b表示冪次方。

a+b+c表示加法。

2+6I表示複數形式。

Conjugate[a+bI]表示共軛複數。

Re[z]和Im[z]分別表示複數z的實數和虛數部分。Abs[z]表示複數z的大小或模數(Modulus)。Arg[z]表示複數z的幅角(Argument)。

  1. 求和與求積法則:

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遞增。

  1. 微分法則:

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的函數。

  1. 積分法則:

Integrate[f, x]表示將函數f相對於x進行不定積分。

Integrate[f, {x, xmin, xmax}]表示將函數f相對於x進行定積分。

Integrate[f, {x, xmin, xmax}, {y, ymin, ymax}]表示將函數f相對於x和y進行定積分。

  1. 方程式求解法則:

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的根。

  1. 作图函數主要包括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等。
X

請訂閱以繼續閱讀

關於科研寫作和學術出版的文章與學術資源,包括:

  • 820 +文章
  • 50+ 免費線上講座
  • 10+ 專家Podcast
  • 10+ 電子書
  • 10+ 檢查清單
  • 50+ 資訊圖
全球科研人調查

大學在研究和學術寫作中應該採取什麼立場?