Mathematica/簡單的運算
算術
[編輯]Mathematica最簡單的用法就是像計算器一樣輸入您的算式,然後按Shift+Enter。比如說我們在上一章里已經進行過的計算:[1]
In[1]:= 2 + 2 Out[1]= 4
和別的計算機語言一樣,Mathematica分別用+、-、*、/、^來表示加、減、乘、除、冪,用圓括號(和)來控制運算順序。此外,乘法也可以用空格表示:
In[2]:= 2 3 + 2 (1 + 2) Out[2]= 12
在Mathematica中,數的大小和精度是不受限制的[2],比如說我們可以計算100的階乘:
In[3]:= 100! Out[3]= 9332621544394415268169923885626670049071596826438162146859296389521759\ 9993229915608941463976156518286253697920827223758251185210916864000000\ 000000000000000000
Mathematica把不帶小數點的數都當成精確值。一般情況下,當您輸入的數字都是精確值時,輸出也將是精確值:
In[4]:= 1 + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1)))) Out[4]= 138
只要輸入的數當中有一個帶有小數點,比如說,把「1」改成「1.」,Mathematica就會把它當成近似值,這樣輸出的也將是近似值:
In[5]:= 1. + 1/(1 + 1/(1 + 1/(1 + 1/(1 + 1)))) Out[5]= 1.625
使用函數
[編輯]當我們要進行複雜一點的計算時,就要用到數學函數了。與我們平時寫數學公式的習慣不同,Mathematica中函數的自變量都括在方括號中,這樣是為了與控制運算順序的圓括號相區別。比如說計算4的算術平方根,就要用到表示平方根的函數Sqrt:
In[6]:= Sqrt[4] Out[6]= 2
同樣,我們也能計算2的算術平方根:
In[7]:= Sqrt[2] Out[7]= √2
這看起來有些奇怪,它好像什麼都沒算。事實上,我們前面已經說過,當您輸入的數字都是精確值時,輸出也將是精確值。根號2的精確值自然就是,而不是1.414。
Mathematica中大小寫是嚴格區分的,Mathematica內建的函數首字母都是大寫。除了一些一些常見的數學常數在Mathematica也用首字母是大寫的符號來表示,如Pi表示圓周率、E表示自然對數的底、I表示虛數單位。這都和我們平常寫數學公式的習慣不同。
In[8]:= Exp[Pi I] Out[8]= -1
這就是著名的歐拉恆等式,用平常的數學公式寫出來就是。
下表列出了一些常用的數學函數:
Sqrt[x] | 平方根() |
Exp[x] | 指數函數() |
Log[x] | 自然對數(;注意Mathematica中Log表示的是以e為底的對數) |
Log[b,x] | 以b為底的對數() |
Sin[x],Cos[x],Tan[x] | 三角函數(;注意Mathematica中角的單位都是弧度) |
ArcSin[x],ArcCos[x],ArcTan[x] | 反三角函數() |
Abs[x] | 絕對值() |
Round[x] | 取離x最近的整數[3](注意這個函數即使輸入的是近似值輸出也將是精確值) |
Mathematica內建的數學函數非常豐富,涉及到數學的各個不同領域。最新版本的Mathematica中數學函數的全表可以參見Mathematica幫助中的Mathematical Functions。
代數運算
[編輯]Mathematica是一個計算機代數系統,它的強項就是代數運算。 比如說,您可以(在沒有給a賦值的情況下)輸入a+a。在一般的計算機語言中,這樣輸入可能會導致錯誤,因為您沒有告訴計算機a是多少。但是,只要學過一點初等代數,我們不需要知道a的值也能知道a+a等於2a。在Mathematica中也是如此:
In[9]:= a + a Out[9]= 2 a
Mathematica中變量的符號不僅可以是英文字母,還可以是希臘字母,甚至別的符號,或者符號的組合:
In[10]:= 喵 + αβα + 喵 Out[10]= 2 喵 + αβα
複雜一點的代數運算就要用到與代數運算相關的Mathematica函數了。比如說,因式分解:
In[11]:= Factor[a^12 - b^12] Out[11]= (a - b) (a + b) (a2 + b2) (a2 - a b + b2) (a2 + a b + b2) (a4 - a2 b2 + b4)
與代數運算有關一個很有用的Mathematica函數是Simplify。事實上,Mathematica很懶,一般的式子它不會自動幫您化簡,只會做一下調整順序、合併同類項之類的工作。例如:
In[12]:= Sin[x]^2 + Cos[x]^2 Out[12]= Cos[x]2 + Sin[x]2
而Simplify則能夠幫我們化簡這些式子:
In[13]:= Simplify[Sin[x]^2 + Cos[x]^2] Out[13]= 1
Simplify有時不能把式子化到最簡。Mathematica提供了另一個函數FullSimplify,它化簡式子時運用的變換規則比Simplify更多,化簡能力比Simplify更強,但花的時間比Simplify要長。
輸出近似值
[編輯]前面說過,當您輸入的數字都是精確值時,輸出也將是精確的。如果我們希望Mathematica輸出的結果是近似值,可以在輸入的末尾加上//N:
In[14]:= Sqrt[2] // N Out[14]= 1.41421
「//N」這種奇怪的寫法其實是使用N這個函數時的另一種寫法[4],Sqrt[2]//N就相當於N[Sqrt[2]]:
In[15]:= N[Sqrt[2]] Out[15]= 1.41421
N是表示數值(也就是近似值)的函數。N[expr]表示表示expr的近似值,N[expr, n]表示expr的有n位精度的近似值。比如說,求圓周率的前100位:
In[16]:= N[Pi, 100] Out[16]= 3.14159265358979323846264338327950288419716939937510582097494459230781\ 6406286208998628034825342117068
Mathematica輸出的近似值的精度不受限制。
註記
[編輯]- ↑ 這裡為了排版的美觀,在數和運算符號間添加了空格,但輸入時不必添加,加上也不影響運算結果。但下面說的表示乘法的空格不能省略。
- ↑ 其實,這一說法並不准確,數的大小還是受到計算機本身的限制的,比如說Mathematica能算的最大的數一般在10323228429左右(12.1版中為1.605216761933662×101355718576299609),依計算機系統的不同而不同,這個「最大的數」的具體數值在Mathematica中用$MaxNumber表示。
- ↑ 當x等於n.5時取離x最近的偶數。注意這與我們通常的四捨五入不同,它採用的是四捨六入五留雙的規則。
- ↑ 類似的語法糖還有:Sqrt@2等價於Sqrt[2],3~Mod~2等價於Mod[3,2]。
Mathematica虛擬全書中的相關內容
[編輯]- Your First Mathematica Calculations
- Arithmetic
- Some Mathematical Functions
- Getting Used to Mathematica
- Arbitrary-Precision Calculations