2012年12月16日 星期日

Mathematica函數及使用方法(1)

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                                                      曲線取樣點,越大越細緻
 

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。