Mathematica是一款強勁的數學分析型軟件,以符號計算見長。
下面我們就來認識一下各種基礎操作:
1,基礎運算操作
- 1.1運算符:Mathematica支持我們常見的運算符+ - * / ^ ! (加,減,乘,除,指數,階乘)。邏輯運算符&&與,||或,!非
- 1.2表達式:在Mathematica中可以直接將字母符號帶入運算,這在大部分的數學軟件中是不允許的,如x+y+y=x+2y(字母符號的運算)f=2x(定義一個含有字母的表達式)。
- 1.3書寫操作:主要有兩點①回車表示換行,Shift鍵與回車同時按下表示執行程序。②一個表達式以分號;結尾則不輸出結算結果,一行可以寫多個表達式,但是需要用分號分隔。
- 1.4百分號的用處:%表示上一次的計算結果。
- 1.5內建函數:Mathematica有很多強悍的內建函數,通常以大寫字母開頭,如常見的Sin[]正弦函數,Plot[]用於函數繪制,Expand[]用於多項式展開等。(注意Mathematica是區分大小寫的,所以在寫函數時一定注意開頭大寫,另外緊跟中括號,不要寫成小括號。認識並使用常見的內建函數是用好Mathematic的重要途徑,在后面會有更加詳細的介紹)
第一節基本知識的舉例如下:
2,常量和變量
- 2.1常量:在Mathematica中常量有整數,有理數,實數,復數和內置常數,特別要說的在附屬中,虛數單位用I(大寫的i)表示。內置的常數有Pi(圓周率),E(自然對數),Infinity(無限大)等組成。
- 2.1.1常數的轉換:這里常數的轉換指的是將數字轉化為有理數或者實數,這里就要用到兩個內建函數啦(還記得內建函數的知識嗎?見1.5)N[x,n]可以將x轉化為實數,精度位數為n其中n可以省略,Rationalize[x,dx]將x轉化為有理數,誤差小於dx
- 2.1.2 數的輸出:NumberForm[x,n]將x以n位精度的實數輸出,ScientificForm[x]將x以科學計數法的形式輸出
- 2.2變量:變量名是字母和數字的組合,其中不能以數字開頭,a12是合法的變量名,12a是不合法的變量名(在說變量名能不能用的時候,通常會用“合法”,“不合法”來表示,合法即這個名稱可以作為變量名,反之則不行)。在有乘法存在的時候有些人會把乘法和函數名弄錯,如x=2;y=3;之后很多人會將xy理解成乘積,實際x*y才是乘積,xy只是一個新的你沒賦值過的變量。
- 2.2.1變量的賦值:變量賦值用等號=來實現,絕大多數編程語言都是,批量賦值可以用大括號加等號{x,y}={1,2}這樣x,y就分別等於1或者2了。當你不使用變量是可以給變量一個空值用x=.來實現
- 2.2.2變量的替換:使用/.和->箭頭可以用來替換表達式中變量的數值(還記得什么是表達式么?看看1.2)執行(還記得怎么執行一個語句嗎?看看1.3①)f=2x只可以得到f=2x,再執行f/.x->2就可以得到4,也就是將式子中的x用2替換。多變量的時候用f/.{x->1,y->2}來用值替換變量。
- 2.2.3變量的刪除:Clear[]可以用於刪除一個變量,在Mathematic里面變量一旦定義就固定了,所以如果多次使用f這個字母可能出現問題,那么我們要定義新的f的時候就需要用Clear[f]將其刪除后再重新定義,這點很重要,尤其是在程序變量很多的時候。
3.函數,表和邏輯表達式
- 3.1函數分為自定義函數和內建函數,這里再列舉幾個常見的內建函數,如Log[],Round[]四舍五入,Max[]取最大值,Exp[]指數函數,Cos[]余弦。自定義函數的用法是f[x_]=表達式,如表達式可以是x^2,這里的自變量用x_表示,如果是多變量的函數就用f[x_,y_,z_]來表示。除了用等號來定義以外還可以用f[x_]:=表達式,即冒號加等號來定義函數叫做延遲定義,延遲定義的意思是你現在寫的只是一個式子,程序並不執行,等到你第一次調用該函數的時候系統才會真正定義(如果你看不懂延遲定義的話不要緊因為不重要,你只要知道冒號等號:=的含義和等號=都是可以定義函數的就可以了)。
- 3.1.1分段函數的定義:分段函數定義需要使用內建函數If[],如x大於等於0時函數值等於x,函數值小於x時等於x^2,那么我們就應該這樣書寫該函數f[x_]=If[x>=0,x=x,x=x ^2]。也可以用If實現多段函數的定義。
- 3.1.2函數調用,調用函數時,不需要像2.2.2那樣用替換實現,只需要用f[1]就可以給自變量x賦值了
- 3.1.3函數的顯示:為了直觀的展示函數的樣子我們用Plot[]繪圖功能對函數的樣子進行展示,首先我們要定義一個函數或者是一個表達式,用法是Plot[f[x],{x,min,max}]即展示函數f,自變量為x,x的最小值為min最大值為max。(Plot還有很多高級的用法,比如為坐標軸加標注等等,可以繪制出很多漂亮的圖形以及三維的圖形,這里不詳細描述,有需要可以尋找其他資料詳細了解)。
- 3.2表:將一些相互關聯的元素放在一起就是表,這並不是一個新的概念,2.2.1函數的賦值中{x,y}這樣的用法就是一個表,或者叫一個向量,也可以將表達式寫成一個表{x,x2,x3}針對表也有很多的操作,這里有個概念就可以了。
- 3.3邏輯表達式:除了數字之外,還有一部分變量用來刻畫邏輯,如判斷兩個變量是否相等的時候用 == 兩個等號進行判別,注意不要和賦值運算混淆。常見的有x==y如果x和y相等則返回True,如果不相等則返回False,還有x!=y不等於,x>y大於,x>=y大於等於等等。
4方程
前面說了很多Mathematica的基礎用法,有人會說這些用法大部分的編程語言都能見到,那么接下來我們就通過方程來展示下Mathematica的優越。
- 4.1方程的表示:以上我們講到了= 賦值和 = = 判斷相等這兩個符號(看看3.3)因為等號是賦值的,而我們通常將方程看為一個恆等式,其意義和賦值有一定的區別,所以我們這里用 == 來表示方程的恆等關系,如定義方程:x^2+2x+1==0
- 4.2方程的求解:解方程需要用到Mathematica的幾個內建函數,Slove[等式,{x}],Roots[等式,{x}],FindRoot[等式,{x,x0}],Mathematica總能對不高於4次的函數精確求解,其中Solve和Root用法相同,FindRoot針對解十分困難的方程時,我們通過圖像大致知道解的范圍,那么我們指定x0,程序會尋找在x0附近的一個解。
- 4.3解方程組,我們也可以用Solve解方程組的根,如Solve[{x+y= =0,x+2y= =6},{x,y}]
- 4.4求方程組的通解,在有變量表達式的方程求解時,Solve[]只能給出部分的解,為了得到各種情況的解我們用Reduce[]來實現,這段話可能說的比較模糊,我們看下面的例子:
5,微積分的常見操作
- 5.1求極限:極限Limit[表達式,x->x0]表示當x趨近於x0時表達式的極限,如何求x趨近於無限大時的極限呢?看看2.1。
- 5.2求微分:微分使用內建函數D[]實現,求f關於x的微分用D[f,x]表示,求f關於x的n階微分用D[f,{x,n}]表示,求f關於x1,x2的雙重偏微分用D[f,x1,x2]表示(D[]的功能非常強大,你可以嘗試用此實現鏈式法則求導)當f函數為單變量的時候求微分也就變成了求導數,用Dt[]函數,其效果和D[]一致
- 5.3求積分:積分使用函數Integerate[]實現,用法為Integrate[f,x]或者Integrate[f,{x,min,max}]前者計算函數f的不定積分,后者給出積分的上下限,計算函數的定積分。注意不是所有的函數都可以計算出不定積分或者定積分,也正因如此引出了數值積分的概念,數值積分使用指令NIntegrate[f,{x,min,max}]用數值計算的方法求得積分的近似值(這里開頭的兩個字母NI都是大寫)。如果說積分函數在給出的下限和上限之間有不連續的點,那么我們需要將點補全。
6.微分方程的求解
- 6.1微分方程求解:微分方程的求解使用Dsolve[]來完成,其中導數使用跑撇號’表示,n階導數用n個’表示,如求解y關於x的微分方程DSolve[{微分方程},y[x],x]。求解微分方程組的時候使用DSolve[{微分方程1,微分方程2},{y[x],z[x]},x],求解帶有初始條件的微分方程組DSolve[{微分方程,初始條件1,初始條件2},y[x],x]。
- 6.2微分方程的數值解:與積分一樣有的微分方程沒法給出准確解,所以使用數值方法逼近,NDSolvep[{微分方程,初始條件},y,{x,min,max}]用這個方法可以求得微分方程的數值解,方法類似。
- 6.3微分方程結果的展示:為了繪制微分方程我們需要用一個變量不如s表示問分方程的解,如:x關於y的微分方程s=DSolve[… …],之后使用Plot[y[x]/.s,{x,min,max}]