Mathematica函數及使用方法
一、運算符及特殊符號
Line1; 執行Line,不顯示結果
Line1, line2 順次執行Line1,2,並顯示結果
?name 關於系統變數name的資訊
??name 關於系統變數name的全部資訊
!command 執行Dos命令
n! N的階乘
!!filename 顯示檔內容
< Expr>> filename 打開文件寫
Expr>>>filename 打開文件從文件末寫
() 結合率
[] 函數
{} 一個表
<*Math Fun*> 在c語言中使用math的函數
(* Note *) 程式的注釋
#n 第n個參數
## 所有參數
rule& 把rule作用於後面的式子
% 前一次的輸出
%% 倒數第二次的輸出
%n 第n個輸出
var::note 變數var的注釋
"Astring " 字串
Context ` 上下文
a + b 加
a - b 減
a*b 或 a b 乘
a / b 除
a ^ b 乘方
base ^^ num 以base為進位的數
lhs && rhs 且
lhs || rhs 或
!lha 非
++,-- 自加1,自減1
+=,-=,*=,/= 同C語言
>,<,>=,<=,==,!= 邏輯判斷(同c)
lhs = rhs 立即賦值
lhs := rhs 建立動態賦值
lhs :>rhs 建立替換規則
lhs ->rhs 建立替換規則
expr // f unname 相當於filename[expr]
expr /. rule 將規則rule取代於expr ( /. =ReplaceAll )
expr //. rule 將規則rule不斷取代於expr直到不變為止
param_ 名為param的一個任意運算式(形式變數)
param__ 名為param的任意多個任意運算式(形式變數)
_ 這個意思是說 "哪些東西"的意思,在Mathematica裡面表示any expression。
__ 就是any sequence
? 有點類似條件,在Mathematica中表示pattern test
_? 符合我後面指定的條件的所有運算式
—————————————————————————————————————
二、系統常數
Pi 3.1415....的無限精度數值
E 2.17828...的無限精度數值
Catalan 0.915966..卡塔蘭常數
EulerGamma 0.5772....高斯常數
GoldenRatio 1.61803...黃金分割數
Degree Pi/180角度弧度換算
I 複數單位
Infinity 無窮大
-Infinity 負無窮大
ComplexInfinity 複無窮大
Indeterminate 不定式
—————————————————————————————————————
三、代數計算
Expand[expr] 展開運算式
Factor[expr] 因數展開運算式
Simplify[expr] 化簡運算式
FullSimplify[expr] 將特殊函數等也進行化簡
PowerExpand[expr] 展開所有的冪次形式
ComplexExpand[expr,{x1,x2...}] 按複數實部虛部展開
FunctionExpand[expr] 化簡expr中的特殊函數
Collect[expr, x] 合併同次項
Collect[expr, {x1,x2,...}] 合併x1,x2,...的同次項
Together[expr] 通分
Apart[expr] 部分分式展開
Apart[expr, var] 對var的部分分式展開
Cancel[expr] 約分
ExpandAll[expr] 展開運算式
ExpandAll[expr, patt] 展開運算式
FactorTerms[poly] 提出共有的數字因數
FactorTerms[poly, x] 提出與x無關的數字因數
FactorTerms[poly, {x1,x2...}] 提出與xi無關的數字因數
Coefficient[expr, form] 多項式expr中form的係數
Coefficient[expr, form, n] 多項式expr中form^n的係數
Exponent[expr, form] 運算式expr中form的最高指數
Numerator[expr] 運算式expr的分子
Denominator[expr] 運算式expr的分母
ExpandNumerator[expr] 展開expr的分子部分
ExpandDenominator[expr] 展開expr的分母部分
TrigExpand[expr] 展開運算式中的三角函數
TrigFactor[expr] 給出運算式中的三角函數因數
TrigFactorList[expr] 給出運算式中的三角函數因數的表
TrigReduce[expr] 對運算式中的三角函數化簡
TrigToExp[expr] 三角到指數的轉化
ExpToTrig[expr] 指數到三角的轉化
RootReduce[expr]
ToRadicals[expr]
—————————————————————————————————————
四、解方程
Solve[eqns, vars] 從方程組eqns中解出vars
Solve[eqns, vars, elims] 從方程組eqns中削去變數elims,解出vars
DSolve[eqn, y, x] 解微分方程,其中y是x的函數
DSolve[{eqn1,eqn2,...},{y1,y2...},x] 解微分方程組,其中yi是x的函數
DSolve[eqn, y, {x1,x2...}] 解偏微分方程
Eliminate[eqns, vars] 把方程組eqns中變數vars約去
SolveAlways[eqns, vars] 給出等式成立的所有參數滿足的條件
Reduce[eqns, vars] 化簡並給出所有可能解的條件
LogicalExpand[expr] 用&&和||將邏輯運算式展開
InverseFunction[f] 求函數f的反(逆)函數
Root[f, k] 求多項式函數的第k個根
Roots[lhs==rhs, var] 得到多項式方程的所有根
—————————————————————————————————————
五、微積分函數
D[f, x] 求f[x]的微分
D[f, {x, n}] 求f[x]的n階微分
D[f,x1,x2..] 求f[x]對x1,x2...偏微分
Dt[f, x] 求f[x]的全微分df/dx
Dt[f] 求f[x]的全微分df
Dt[f, {x, n}] n階全微分df^n/dx^n
Dt[f,x1,x2..] 對x1,x2..的偏微分
Integrate[f, x] f[x] 對x在的不定積分
Integrate[f, {x, xmin, xmax}] f[x] 對x在區間(xmin,xmax)的定積分
Integrate[f, {x, xmin, xmax}, {y, ymin, ymax}] f[x,y]的二重積分
Limit[expr, x->x0] x趨近於x0時expr的極限
Residue[expr, {x,x0}] expr在x0處的留數
Series[f, {x, x0, n}] 給出f[x]在x0處的n冪級數展開
Series[f, {x, x0,nx}, {y, y0, ny}] 先對y冪級數展開,再對x
Normal[expr] 化簡並給出最常見的運算式
SeriesCoefficient[series, n] 給出級數中第n次項的係數
SeriesCoefficient[series, {n1,n2...}]
'或Derivative[n1,n2...] [f] 一階導數
InverseSeries[s, x] 給出逆函數的級數
ComposeSeries[serie1,serie2...] 給出兩個基數的組合
SeriesData[x,x0,{a0,a1,..},nmin,nmax,den] 表示一個在x0處x的冪級數,其中ai為係數
O[x]^n n階小量x^n
O[x, x0]^n n階小量(x-x0)^n
—————————————————————————————————————
八、數值函數
N[expr] 運算式的機器精度近似值
N[expr, n] 運算式的n位近似值,n為任意正整數
NSolve[lhs==rhs, var] 求方程數值解
NSolve[eqn, var, n] 求方程數值解,結果精度到n位
NDSolve[eqns, y, {x, xmin, xmax}] 微分方程數值解
NDSolve[eqns, {y1,y2,...}, {x, xmin, xmax}]
微分方程組數值解
FindRoot[lhs==rhs, {x,x0}] 以x0為初值,尋找方程數值解
FindRoot[lhs==rhs, {x, xstart, xmin, xmax}]
NSum[f, {i,imin,imax,di}] 數值求和,di為步長
NSum[f, {i,imin,imax,di}, {j,..},..] 多維函數求和
NProduct[f, {i, imin, imax, di}] 函數求積
NIntegrate[f, {x, xmin, xmax}] 函數數值積分
優化函數:
FindMinimum[f, {x,x0}] 以x0為初值,尋找函數最小值
FindMinimum[f, {x, xstart, xmin, xmax}]
ConstrainedMin[f,{inequ},{x,y,..}] inequ為線性不等式組,f為x,y..之線性函數,得到最小值及此時的x,y..取值
ConstrainedMax[f, {inequ}, {x, y,..}] 同上
LinearProgramming[c,m,b] 解線性組合c.x在m.x>=b&&x>=0約束下的最小值,x,b,c為向量,m為矩陣
LatticeReduce[{v1,v2...}] 向量組vi的極小無關組
資料處理:
Fit[data,funs,vars] 用指定函數組對資料進行最小二乘擬和data可以為{{x1,y1,..f1},{x2,y2,..f2}..} 多維的情況
emp: Fit[{10.22,12,3.2,9.9}, {1, x, x^2,Sin[x]}, x]
Interpolation[data] 對資料進行差值,data同上,另外還可以為{{x1,{f1,df11,df12}},{x2,{f2,.}..} 指定各階導數
InterpolationOrder 默認為3次,可修改
ListInterpolation[array] 對離散數據插值,array可為n維
ListInterpolation[array,{{xmin,xmax},{ymin,ymax},..}]
FunctionInterpolation[expr,{x,xmin,xmax}, {y,ymin,ymax},..] 以對應expr[xi,yi]的為資料進行插值
Fourier[list] 對複數資料進行傅氏變換
InverseFourier[list] 對複數資料進行傅氏逆變換
Min[{x1,x2...},{y1,y2,...}] 得到每個表中的最小值
Max[{x1,x2...},{y1,y2,...}] 得到每個表中的最大值
Select[list, crit] 將表中使得crit為True的元素選擇出來
Count[list, pattern] 將表中匹配模式pattern的元素的個數
Sort[list] 將表中元素按昇冪排列
Sort[list,p] 將表中元素按p[e1,e2]為True的順序比較list 的任兩個元素e1,e2,實際上Sort[list]中默認p=Greater
集合論:
Union[list1,list2..] 表listi的並集並排序
Intersection[list1,list2..] 表listi的交集並排序
Complement[listall,list1,list2...] 從全集listall中對listi的差集
—————————————————————————————————————
九、虛數函數
Re[expr] 複數運算式的實部
Im[expr] 複數運算式的虛部
Abs[expr] 複數運算式的模
Arg[expr] 複數運算式的輻角
Conjugate[expr] 複數運算式的共軛
—————————————————————————————————————
十、數的頭及模式及其他操作
Integer _ Integer 整數
Real _Real 實數
Complex _Complex 複數
Rational_Rational 有理數
(*注:模式用在函數參數傳遞中,如MyFun[Para1_Integer,Para2_Real]
規定傳入參數的類型,另外也可用來判斷If[Head[a]==Real,...]*)
IntegerDigits[n,b,len] 數字n以b近制的前len個碼元
RealDigits[x,b,len] 類上
FromDigits[list] IntegerDigits的反函數
Rationalize[x,dx] 把實數x有理化成有理數,誤差小於dx
Chop[expr, delta] 將expr中小於delta的部分去掉,dx默認為10^-10
Accuracy[x] 給出x小數部分位元數,對於Pi,E等為無限大
Precision[x] 給出x有效數字位數,對於Pi,E等為無限大
SetAccuracy[expr, n] 設置expr顯示時的小數部分位元數
SetPrecision[expr, n] 設置expr顯示時的有效數字位元數
—————————————————————————————————————
十一、區間函數
Interval[{min, max}] 區間[min, max](* Solve[3 x+2==Interval[{-2,5}],x]*)
IntervalMemberQ[interval, x] x 在區間內嗎?
IntervalMemberQ[interval1,interval2] 區間2在區間1內嗎?
IntervalUnion[intv1,intv2...] 區間的並
IntervalIntersection[intv1,intv2...] 區間的交
—————————————————————————————————————
十二、矩陣操作
a.b.c 或 Dot[a, b, c] 矩陣、向量、張量的點積
Inverse[m] 矩陣的逆
Transpose[list] 矩陣的轉置
Transpose[list,{n1,n2..}] 將矩陣list 第k行與第nk列交換
Det[m] 矩陣的行列式
Eigenvalues[m] 特徵值
Eigenvectors[m] 特徵向量
Eigensystem[m] 特徵系統,返回{eigvalues,eigvectors}
LinearSolve[m, b] 解線性方程組m.x==b
NullSpace[m] 矩陣m的零空間,即m.NullSpace[m]==零向量
RowReduce[m] m化簡為階梯矩陣
Minors[m, k] m的所有k*k階子矩陣的行列式的值(伴隨陣,好像是)
MatrixPower[mat, n] 矩陣mat自乘n次
Outer[f,list1,list2..] listi中各個元之間相互組合,並作為f的參數的到的矩陣
Outer[Times,list1,list2] 給出矩陣的外積
SingularValues[m] m的奇異值,結果為{u,w,v},
m=Conjugate[Transpose[u]].DiagonalMatrix[w].v
PseudoInverse[m] m的廣義逆
QRDecomposition[m] QR分解
SchurDecomposition[m] Schur分解
LUDecomposition[m] LU分解
—————————————————————————————————————
十三、表函數
(*“表”,我認為是Mathematica中最靈活的一種資料類型 *)
(*實際上表就是運算式,運算式也就是表,所以下面list==expr *)
(*一個表中元素的位置可以用於一個表來表示 *)
表的生成
{e1,e2,...} 一個表,元素可以為任意運算式,無窮嵌套
Table[expr,{imax}] 生成一個表,共imax個元素
Table[expr,{i, imax}] 生成一個表,共imax個元素expr[i]
Table[expr,{i,imin,imax},{j,jmin,jmax},..] 多維表
Range[imax] 簡單數表{1,2,..,imax}
Range[imin, imax, di] 以di為步長的數表
Array[f, n] 一維表,元素為f[i] (i從1到n)
Array[f,{n1,n2..}] 多維表,元素為f[i,j..] (各自從1到ni)
IdentityMatrix[n] n階單位陣
DiagonalMatrix[list] 對角陣
元素操作
Part[expr, i] 或expr[[i]] 第i個元素
expr[[-i]] 倒數第i個元
expr[[i,j,..]] 多維表的元
expr[[{i1,i2,..}] 返回由第i(n)的元素組成的子表
First[expr] 第一個元
Last[expr] 最後一個元
Head[expr] 函數頭,等於expr[[0]]
Extract[expr, list] 取出由表list制定位置上expr的元素值
Take[list, n] 取出表list前n個元組成的表
Take[list,{m,n}] 取出表list從m到n的元素組成的表
Drop[list, n] 去掉表list前n個元剩下的表,其他參數同上
Rest[expr] 去掉表list第一個元剩下的表
Select[list, crit] 把crit作用到每一個list的元上,為True的所有元組成的表
表的屬性
Length[expr] expr 第一曾元素的個數
Dimensions[expr] 表的維數返回{n1,n2..},expr為一個n1*n2...的陣
TensorRank[expr] 秩
Depth[expr] expr最大深度
Level[expr,n] 給出expr中第n層子運算式的列表
Count[list, pattern] 滿足模式的list中元的個數
MemberQ[list, form] list中是否有匹配form的元
FreeQ[expr, form] MemberQ的反函數
Position[expr, pattern] 表中匹配模式pattern的元素的位置列表
Cases[{e1,e2...},pattern] 匹配模式pattern的所有元素ei的表
表的操作
Append[expr, elem] 返回 在表expr的最後追加elem元後的表
Prepend[expr, elem] 返回 在表expr的最前添加elem元後的表
Insert[list, elem, n] 在第n元前插入elem
Insert[expr,elem,{i,j,..}] 在元素expr[[{i,j,..}]]前插入elem
Delete[expr, {i, j,..}] 刪除元素expr[[{i,j,..}]]後剩下的表
DeleteCases[expr,pattern] 刪除匹配pattern的所有元後剩下的表
ReplacePart[expr,new,n] 將expr的第n元替換為new
Sort[list] 返回list按順序排列的表
Reverse[expr] 把表expr倒過來
RotateLeft[expr, n] 把表expr迴圈左移n次
RotateRight[expr, n] 把表expr迴圈右移n次
Partition[list, n] 把list按每n各元為一個子表分割後再組成的大表
Flatten[list] 抹平所有子表後得到的一維大表
Flatten[list,n] 抹平到第n層
Split[list] 把相同的元組成一個子表,再合成的大表
FlattenAt[list, n] 把list[[n]]處的子表抹平
Permutations[list] 由list的元素組成的所有全排列的列表
Order[expr1,expr2] 如果expr1在expr2之前返回1,如果expr1在 expr2之後返回-1,如果expr1與expr2全等返回0
Signature[list] 把list通過兩兩交換得到標準順序所需的交換次數(排列數)
以上函數均為僅返回所需表而不改變原表
AppendTo[list,elem] 相當於list=Append[list,elem];
PrependTo[list,elem] 相當於list=Prepend[list,elem];
--—————————————————————————————————————
十四、繪圖函數
二維作圖
Plot[f,{x,xmin,xmax}] 一維函數f[x]在區間[xmin,xmax]上的函數曲線
Plot[{f1,f2..},{x,xmin,xmax}] 在一張圖上畫幾條曲線
ListPlot[{y1,y2,..}] 繪出由離散點對(n,yn)組成的圖
ListPlot[{{x1,y1},{x2,y2},..}] 繪出由離散點對(xn,yn)組成的圖
ParametricPlot[{fx,fy},{t,tmin,tmax}] 由參數方程在參數變化範圍內的曲線
ParametricPlot[{{fx,fy},{gx,gy},...},{t,tmin,tmax}] 在一張圖上畫多條參數曲線
選項:
PlotRange->{0,1} 作圖顯示的值域範圍
AspectRatio->1/GoldenRatio生 成圖形的縱橫比
PlotLabel ->label 標題文字
Axes ->{False,True} 分別制定是否畫x,y軸
AxesLabel->{xlabel,ylabel} x,y軸上的說明文字
Ticks->None,Automatic,fun 用什麼方式畫軸的刻度
AxesOrigin ->{x,y} 坐標軸原點位置
AxesStyle->{{xstyle}, {ystyle}} 設置軸線的線性顏色等屬性
Frame ->True,False 是否畫邊框
FrameLabel ->{xmlabel,ymlabel,xplabel,yplabel} 邊框四邊上的文字
FrameTicks 同Ticks 邊框上是否畫刻度
GridLines 同Ticks 圖上是否畫柵格線
FrameStyle ->{{xmstyle},{ymstyle} 設置邊框線的線性顏色等屬性
ListPlot[data,PlotJoined->True] 把離散點按順序連線
PlotSytle->{{style1},{style2},..} 曲線的線性顏色等屬性
PlotPoints->15 曲線取樣點,越大越細緻
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。