?? mathematica講座 ----徐安農教授 .txt
字號:
Mathematica
Mathematica
http://www.quzhi.net/chinese/mathe/mathematica/mathematica_index.htm
http://www.quzhi.net/chinese/mathe/mathematica/study/study.htm
mathlab
lindo;lingo
------------------------
MATHEMATICA講座 ----徐安農教授
Posted on 2005-08-20 07:53 darcyxp 閱讀(405) 評論(4) 收藏
MATHEMATICA講座第一講
1 數的運算
算例
378/123
N[378/123,6] (*取小數點后6位的近似值*)
Pi^2
E^(-1)
100!
N[Pi,100]
N[I^(-I)]
2 常用數學函數
Sqrt[ ]平方根, Exp[ ]指數函數, Log[ ] 對數函數,
Sin[ ] 正弦函數, Cos[ ] 余弦函數,
Tan[ ] 正切函數, Cot[ ] 余切函數,
Sec[ ] 正割函數, Csc[ ] 余割函數,
ArcSin[ ] 反正弦函數, ArcCos[ ] 反余弦函數,
ArcTan[ ] 反正切函數, ArcCot[ ] 反余切函數,
ArcSec[ ] 反正割函數, ArcCsc[ ] 反余割函數,
Sinh[ ] 雙曲正弦, Cosh[ ] 雙曲余弦,
Tanh[ ] 雙曲正切, Coth[ ] 雙曲余切,
Sech[ ] 雙曲正割, Csch[ ] 雙曲余割,
ArcSinh[ ]反雙曲正弦, ArcCosh[ ]反雙曲余弦,
ArcTanh[ ]反雙曲正切, ...
算例
Sin[N[Sqrt[3],50]]
3 其它函數
! 階乘
Mod[n,m] n取模m的結,
Quoti ent[n,m] n除以m的商的整數部分
GCD[n,m]LCM[n,m] n和m的最大公約數和最小公約數
Round[ ] 距離近似數x最近的整數
Floor[ ] 不大于x的最大整數
算例
100!
Quoti ent[10,3]
GCD[105,30]
Round[-1.234]
Floor[-1.234]
4 變量的賦值與替換
算例
f1=x^2+3 x+1 (*將表達式賦給變量f1*)
f1/.x->3 (*求f1當x=3時的值f1(3)*)
f1/.x->x+1 (*在f1中用x+1替換x得到f1(x+1)*)
f1=. (*取消變量f1的定義*)
f1/.x->3 (*此時已經得不到所想的結果f1(3)*)
5 多項式計算
Expand[p] (* 多項式展開*)
Factor[p] (*多項式因式分解*)
算例
p1=x^3-6x^2+11x-6
p2=(x-1)*(x-2)*(x-3)
Factor[p1]
Expand[p2]
MATHEMATICA講座第二講
一元函數的圖形
一 命令語句
Plot[表達式,{變量,下限,上限},可選項]
Plot[{表達式,表達式,...},{變量,下限,上限},可選項]
二 可選參數項
第一類參數
1. PlotRange->{y1,y2} 指定作圖縱座標范圍為(y1,y2)
默認值為Atuomatic或指定 All
執行算例
Plot[Tan[x],{x,-2Pi,2Pi}]
Plot[Tan[x],{x,-2Pi,2Pi},PlotRange->{-10,10}]
Plot[Exp[-x^2]*Sin[6x],{x,-2,2},PlotRange->{-0.5,0.5}]
Plot[Exp[-x^2]*Sin[6x],{x,-2,2},PlotRange->All]
2.AspectRatio->Automatic 按實際比例作圖
默認值為Atuomatic=0.618:1
執行算例
Plot[Sqrt[1-x^2],{x,-1.5,1.5}]
Plot[Sqrt[1-x^2],{x,-1.5,1.5}, AspectRatio->Automatic]
3. Axes->Automatic 畫坐標軸自動確定位置
Axes->None 不畫坐標軸
Axes->{x0,y0} 指定坐標原點在(x0,y0)處
執行算例
Plot[Cos[x],{x,-2Pi,2Pi}]
Plot[Cos[x],{x,-2Pi,2Pi},Axes->None]
Plot[Cos[x],{x,-2Pi,2Pi},Axes->{1,2}]
4 AxesLabel->None 不說明坐標軸的標記
AxesLabel->{x,y} 指定橫軸為x縱軸為y
AxesLabel->{u,v} 指定橫軸為u縱軸為v
執行算例
Plot[Sin[x]/x,{x,-10,10},AxesLabel->None]
Plot[Sin[x]/x,{x,-10,10},AxesLabel->{x,y}]
Plot[Sin[x]/x,{x,-10,10},AxesLabel->{時間T,電流I}]
5. Ticks->{i,j} 規定坐標軸上的刻度位置
Ticks->{t1,t2,t3,...}
執行算例
Plot[{ArcSin[x],ArcCos[x]},{x,-1,1},
PlotStyle->{{RGBColor[0,1,1],Thickness[0.01]},
{RGBColor[1,0,1],Dashing[{0.05,0.05}]}}]
第二類 參數
1.DisplayFunction->Identity 只生成圖形現在不顯示
執行算例
Plot[{Sin[Tan[x]]-Tan[Sin[x]]},{x,1,2},
DisplayFunction->Identity]
Plot[{Sin[Tan[x]]-Tan[Sin[x]]},{x,-2,2}]
2. PlotPoints->50 指定計算函數值的取點數為 50
執行算例
Plot[{Sin[Tan[x]]-Tan[Sin[x]]},{x,-2,2},PlotPoints->50]
3. MaxBend 說明曲線的折線在相鄰兩段之間的最大折角
執行算例
4. PlotDivision 說明取點的限度
執行算例
5.PlotStyle->Thickness[t] 描述線寬
PlotStyle->GrayLevel[i] 描述灰度
PlotStyle->RGBColor[r,g,b] 描述顏色
PlotStyle->Dashing[{d1,d2,...}] 描述虛線的畫法
PlotStyle->PointSize[0.03] 描述點的大小
執行算例
Plot[{Sin[x],Sin[2x],Sin[3x]},{x,0,2Pi},
PlotStyle->{RGBColor[1,0,0],RGBColor[0,1,0],
RGBColor[0,0,1]}]
Plot[Sin[1/x],{x,-1,1}]
Plot[Sqrt[1+x^2],{x,-6,6},PlotStyle->Dashing[{0.02,0.01}]]
Plot[Sin[Cos[Sin[x]]],{x,-Pi,Pi}]
Plot[(Tan[Sin[x]]-Sin[Tan[x]])/x^2,{x,-5,5}]
Plot[{E^x,ArcTan[x],E^ArcTan[x]},{x,-5,5},PlotPoints->100]
三 圖形的重新顯示,組合,存儲和輸出
Show[t] 重新顯示
Show[t1,t2,...,tn] 將幾個圖形合在一起
執行算例
f1=Plot[x,{x,0.1,2},PlotRange->{0,2}]
f2=Plot[1/x,{x,0.1,2},PlotRange->{0,3}]
f3=ParametricPlot[{2,t},{t,0,2}]
Show[f1,f2,f3]
Display["filename",圖形]保存圖形到文件中存為Postsceipt
格式
Hardcopy[圖形] 將圖形送去打印
四 二維參數圖形
ParametricPlot[{x(t),y(t)},{t,下限,上限},可選項]
執行算例
ParametricPlot[{Sin[t],Cos[t]},{t,0,2*Pi},
AspectRatio->Automatic]
ParametricPlot[{Sin[2*t],Cos[3*t]},{t,0,2*Pi},
AspectRatio->Automatic]
y1=ParametricPlot[{Cos[t]^3,Sin[t]^3},{t,0,2*Pi},
AspectRatio->Automatic]
y2=ParametricPlot[{Cos[t],Sin[t]},{t,0,2*Pi},
AspectRatio->Automatic]
Show[y1,y2]
z1=ParametricPlot[{t-Sin[t],1-Cos[t]},{t,0,2*Pi},
AspectRatio->Automatic]
五 極坐標圖形
執行算例
r[t_]:=(3Cos[t]^2-1)/2
ParametricPlot[{r[t] Cos[t],r[t] Sin[t]},{t,0,2Pi}, AspectRatio->Automatic]
r[t_]:=2(1-Cos[t])
ParametricPlot[{r[t] Cos[t],r[t] Sin[t]},{t,0,2Pi},
AspectRatio->Automatic]
r[t_]:=2Sin[3t]
ParametricPlot[{r[t] Cos[t],r[t] Sin[t]},{t,0,2Pi},
AspectRatio->Automatic]
r[t_]:=Cos[2*t]
ParametricPlot[{r[t] Cos[t],r[t] Sin[t]},{t,0,2Pi},
AspectRatio->Automatic]
r[t_]:=0.5*t
ParametricPlot[{r[t] Cos[t],r[t] Sin[t]},{t,0,2Pi},
AspectRatio->Automatic]
r[t_]:=Exp[t/3]
ParametricPlot[{r[t] Cos[t],r[t] Sin[t]},{t,0,2Pi},
AspectRatio->Automatic]
r[t_]:=Cos[8*t]
ParametricPlot[{r[t] Cos[t],r[t] Sin[t]},{t,0,2Pi},
AspectRatio->Automatic]
六 動畫制作
<<Graphics\Animatio.m 調入動畫制作軟件包
Animate[圖形,{自變量,下限,上限}],{參變量,下限,上限,步長}]
執行算例
<<Graphics\Animatio.m
Animate[Plot[Sin[x+t*Pi],{x,0,10Pi}],{t,0,5/3,1/3}]
Table[k, 100]
MATHEMATICA講座第三講
三維作圖
一 命令語句
Plot3D[函數表達式,,,{變量,上限,下限},{可選項}]
Plot3D[{函數表達式,著色表達式},{變量,上限,下限},
{變量,上限,下限},{可選項}]
二 可選參數項
1 PlotRange,說明要求的圖形顯示范圍
2 PlotLabel,說明圖的名稱標注
3 AspectRatio,說明整個圖的高度比
4 Boxed:說明是否給圖形加一個立體框
5 BoxRation:說明圖形立體框在三個方向的長度比
6 ViewPoints:在將三維圖形投射到平面上時使用的觀察點.
7 Mesh:說明在曲線上是否畫網格
8 HiddenSurface:曲面被擋住的部分是否隱掉
9 Shading:在曲面上是否涂陰影
10 lightScources:設置照明光源
11 Lighting:說明是否打開已經設置的光源
12 AmbienLight:漫射光設置.默認值是黑色,用GrayLevel[0]表示
13 ClipFill:作出的圖形中被切掉的那些部分用什么方法填充
14 Axes:說明是否畫坐標軸以及把坐標軸中心放在什么地方
15 Ticks:規定坐標軸上刻度的位置
執行算例
1 默認情形
Plot3D[x^2+y^2,{x,-1,1},{y,-1,1}]
2 適當選取X,Y,Z軸的比例關系
Plot3D[x^2+y^2,{x,-1,1},{y,-1,1},BoxRatios->{1,1,1.5}]
3 不加陰影的情形
Plot3D[x^2+y^2,{x,-1,1},{y,-1,1},
BoxRatios->{1,1,1.5},
Shading->False]
4 不打開照明的情形
Plot3D[x^2+y^2,{x,-1,1},{y,-1,1},
BoxRatios->{1,1,1.5},
Lighting->False]
5 不設網格的情形
Plot3D[x^2+y^2,{x,-1,1},{y,-1,1},
BoxRatios->{1,1,1.5},
Boxed->False,
Axes->False,
Mesh->False]
-SurfaceGraphics-
6 用參數方式圖形更合乎實際情形
ParametricPlot3D[{函數表達式},{變量,上限,下限},
{可選項}]
ParametricPlot3D[{v Sin[u],v Cos[u],v^2},
{v,0,1},{u,0,2Pi},
BoxRatios->{1,1,1}]
ParametricPlot3D[{u,u^2,t},{u,-1,1},{t,0,1},
PlotPoints->25,Lighting->True,
ViewPoint->{2,-1,1}]
7 視點的選擇
Plot3D[Cos[Sqrt[x^2+y^2]],{x,-10,10},{y,-10,10},
PlotPoints->25,Lighting->True,
ViewPoint->{1,1,2}]
Plot3D[Cos[Sqrt[x^2+y^2]],{x,-10,10},{y,-10,10},
PlotPoints->25,Lighting->True,
ViewPoint->{0,0,1}]
Plot3D[Cos[Sqrt[x^2+y^2]],{x,-10,10},{y,-10,10},
PlotPoints->25,Lighting->True,
ViewPoint->{0,1,2}]
ParametricPlot3D[{u^2,u,v},
{v,0,2},{u,-2,2},
BoxRatios->{1,1,0.6},ViewPoint->{1,3,1},Shading->True]
8 將多個曲面放在一張圖上
Z1=Plot3D[x*y,{x,0,1},{y,0,1}]
Z2=ParametricPlot3D[{u,u,t},{u,0,1},{t,0,1},
PlotPoints->25,Lighting->True]
Z3=ParametricPlot3D[{1,u,t},{u,-1,1},{t,0,1},
PlotPoints->25,Lighting->True]
Show[Z1,Z2,Z3,BoxRatios->{1,1,1},
ViewPoint->{1,1,1},Shading->False]
9 動畫制作
<<Graphics\Animatio.m
Animate[ParametricPlot3D[{u,u^2,t},{u,-1,1},{t,0,1},
PlotPoints->25,Lighting->True,
ViewPoint->{Cos[2*Pi*t],Sin[2*Pi*t],1}],
{t,0,1,1/6}]
波紋面動畫演示
注意:此演示需要較大內存,耐心等待。
<<Graphics\Animatio.m
u[x_,y_,t_]:=Sum[(32*(1+Cos[n*Pi])*(1-Cos[m*Pi])*Sin[n*Pi*x]*Sin[m*Pi*y]*Cos[Sqrt[m^2+n^2]*Pi*t])/(m^2*n^2*Pi^2),
{m,1,4},{n,1,4}]
Animate[Plot3D[u[x,y,t],{x,0,1},{y,0,1},PlotRange->{-8,8}],{t,0,1.75,0.25}]
10 等值線圖和密度圖
例1 逢山開路問題
要在一山區修建公路,首先測得一些地點的高程,數據見下表 *)
A={{370,470,550,600,670,690,670,620,580,450,400,300,100,150,250},
{510,620,730,800,850,870,850,780,720,650,500,200,300,350,320},
{650,760,880,970,1020,1050,1020,830,800,700,300,500,550,480,350},
{740,880,1080,1130,1250,1280,1230,1040,900,500,700,780,750,650,550},
{830,980,1180,1320,1450,1420,1400,1300,700,900,850,840,380,780,750},
{880,1060,1230,1390,1500,1500,1400,900,1100,1060,950,870,900,930,950},
{910,1090,1270,1500,1200,1100,1350,1450,1200,1150,1010,880,1000,1050,1100},
{950,1190,1370,1500,1200,1100,1550,1600,1550,1380,1070,900,1050,1150,1200},
{1430,1450,1460,1500,1550,1600,1550,1600,1600,1600,1550,1500,1500,1550,1550},
{1420,1430,1450,1480,1500,1550,1510,1430,1300,1200,980,850,750,550,500},
{1380,1410,1430,1450,1470,1320,1280,1200,1080,940,780,620,460,370,350},
{1370,1390,1410,1430,1440,1140,1110,1050,950,820,690,540,380,300,210},
{1350,1370,1390,1400,1410,960,940,880,800,690,570,430,290,210,150}};
(*下面作三維地形圖*)
ListPlot3D[A/400]
(*增加一些可選項*)
ListPlot3D[A/400,HiddenSurface->False,Boxed->False]
(*下面作等值線圖*)
ListContourPlot[A/400]
(*下面作密度圖*)
ListDensityPlot[A/400]
例2 二元函數的等值線圖和密度圖
Plot3D[Sin[x^2+y^2],{x,0,Pi},{y,0,Pi}]
ContourPlot[Sin[x^2+y^2],{x,0,Pi},{y,0,Pi}]
DensityPlot[Sin[x^2+y^2],{x,0,2Pi},{y,0,2Pi}]
MATHEMATICA講座第四講
方程求解
一. 代數方程求解
Solve[f[x]==0,x] (*一個方程求解*)
Solve[{f1[x,y]==0,f2[x,y]==0},{x,y}]
N[%]給出數值解
執行算例
Solve[x^4-x^3-6x^2+1==0,x]
N[%]
執行算例
Solve[{x-2y==0,x^2-y==1},{x,y}] (*方程組求解*)
執行算例
Solve[a*x^2+b*x+c==0,x]
(*請注意,能夠求出公式解的情況是很少的,比如五次以上的代數
方程就已經沒有公式解了。*)
執行算例
Solve[x^5+5x^3-3==0,x]
N[%]
二.求超越方程的近似解
FindRoot[f[x]==0,{x,x0}] 求方程f(x)=0在x0附近的根
執行算例
f=Sin[x]Exp[2x]-Cos[x]
FindRoot[f==0,{x,0.5}]
MATHEMATICA講座第五講
微積分運算
一. 極限
Limit[函數表達式,x->x0]
執行算例
Plot[Sin[x]/x,{x,-10,10}]
Limit[Sin[x]/x,x->0]
執行算例
Plot[Sqrt[x^2+3x]-x,{x,0,100}]
Limit[Sqrt[x^2+3x]-x,x->Infinity]//N
有的時侯Mathematica會求不出極限
Limit[(1+1/x)^x,x->infinity]
如果改寫成下面的形式,則可以求出極限值
Limit[(1+x)^(1/x),x->0]
用下面的方式計算的更快
Exp[Limit[(1/x)Log[1+x],x->0]]
二. 微分
D[f[x],x]
D[f[x,y],y]
D[f[x],{x,n}]
執行算例
D[x^3+3x^2-5x+1,x]
D[Sin[x]*Exp[x y],y]
FindMinimum[f[x],{x,x0}](*求函數的極值*)
執行算例
L[x_]:=Exp[-x^2/2]
FindMinimum[-L[x],{x,0}]
三.不定積分與定積分
Integrate[f[x],x] 求不定積分
Integrate[f[x],{x,a,b}] 求定積分
NIntegrate[f[x],{x,a,b}] 求數值積分
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -