Maple與Mathematica在基本方面是類似的_第1頁
Maple與Mathematica在基本方面是類似的_第2頁
Maple與Mathematica在基本方面是類似的_第3頁
Maple與Mathematica在基本方面是類似的_第4頁
Maple與Mathematica在基本方面是類似的_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、第四章 Maple 簡介Maple與Mathematica在基本方面是類似的,也各有特點. 它們是集符號計算、數(shù)值處理、二維與三維作圖等功能于一體的軟件中最流行的兩大軟件. 在這一章中,我們將簡單介紹Maple的一些基本方面. 下面的介紹以Maple7版本為基礎. Maple公司的網(wǎng)址是:http:/www. maplesoft. com第一節(jié) Maple 概述Maple是由加拿大滑鐵盧(Waterloo)大學的一些研究者開始探討設計的. 至今已經(jīng)陸續(xù)推出了七個版本. 它的幫助系統(tǒng)貼近使用者,幾乎每條指令都有仔細的說明和范例. 一、主要功能 Maple的主要功能包括計算功能(符號計算、數(shù)值處理

2、、二維與三維作圖)和編輯功能等兩方面,與Mathematica 4. 0比起來,Maple接受中文輸入,這為我們編寫中文課件或做中文注釋提供了方便. Maple的基本運作是交互式的:使用者鍵入指令(問題),Maple返回解答或其他信息. 整個系統(tǒng)包括兩個主要部分:界面(interface)與內(nèi)核(kernel). 為了適應使用的各方面要求而又提高計算機的運行效率,Maple有許多需要時由用戶加載的程序包. 三、安裝、啟動與退出Maple的安裝、啟動和退出與Mathematica是類似的. 我們這里僅討論圖形界面. 1. 軟件的安裝Maple 7對微機配置的要求是: 操作系統(tǒng)Windows 95

3、或Windows NT 4. 0以上版 內(nèi)存32MB以上 CPUPentium 90以上 硬盤60MB以上安裝步驟是: (1) 將軟件光盤插入光驅(qū)中,然后用鼠標點擊“我的電腦”圖標; (2) 在光驅(qū)目錄下找到Maple目錄,將其打開; (3) 用鼠標雙擊應用文件setup. exe的圖標,就會出現(xiàn)下面的對話框:圖1-1點擊Next按鈕就出現(xiàn)要求用戶輸入序列號(Serial Number)的對話框:圖1-2在輸入序列號之后,點擊Next按鈕,在后面依次出現(xiàn)的每個對話框中,繼續(xù)點擊其中的Next按鈕,就可最終完成Maple 7的安裝. 2. 軟件的啟動與退出在Windows的開始菜單的程序菜單中選

4、取Maple 7中的Maple 7就可啟動軟件. 也就是,開始-程序- Maple 7- Maple 7. 退出Maple 7,只需要在File菜單中選取Exit即可. 三、界面簡介在啟動了Maple之后,就出現(xiàn)下面的運作界面:圖1-3其中的空白部分就是Maple的一個工作區(qū)(Worksheet). 在工作區(qū)上輸入各種算式或指令末尾以分號“;”結(jié)尾,然后打回車鍵Return,Maple就運行你的輸入,然后返回運算結(jié)果. 例如:輸入2+2后,在工作區(qū)上看到的是:> 2+2;為了節(jié)省篇幅,如果可能,我們將上面的結(jié)果寫成:> 2+2; 四、基本操作1. 基本操作在Maple中加、減、乘、

5、除和乘方的符號與Mathematica所使用的符號+、-、*、/ 和是一樣的. 所不同的是,Mathematica中關于乘法的其他約定在這里無效. 如果要在運算過程中加注釋,只要用符號“#”起始就行了,例如:> 2+b; #求和,別忘了分號“;”! 2. 變量與函數(shù)與Mathematica不同,Maple本身定義的函數(shù)的第一個字母并不大寫,而且函數(shù)的變量不是用方括號,而是用圓括號(). 例如:sin x和cos x就分別記為:sin(x)和cos(x). Maple用方括號“”來定義表(list),用花括號“”來定義集合. 與Mathematica一樣,Maple中變量的第一個字符也必須

6、是字母,其后可以有數(shù)字. 3. 工具欄(Palettes)的使用與Mathematica一樣,Maple也提供了工具欄,但數(shù)量上比Mathematica的少. 其調(diào)用步驟是:在菜單View中選Palettes,其后有符號(Symbol Palette)、表達式(Expression Palette)、矩陣(Matrix Palette)和向量(Vector Palette)等四個工具欄. 選取其中之一或全體都可以. 它們的使用方法與Mathematica中的相同. 4. 幫助系統(tǒng)的使用與Mathematica一樣,Maple的幫助系統(tǒng)也是很完善的. 形式上與Mathematica的有些區(qū)別.

7、基本內(nèi)容可以在工作區(qū)的help中找到. 大體上分為兩部分:(1)按內(nèi)容查詢;(2)索引查詢. 在具體查找某條指令的是用方式時,可以在工作區(qū)內(nèi)使用指令:“?指令名”來實現(xiàn). 第二節(jié) Maple 的簡單應用Maple的大部分運算與Mathematica是類似的. 我們這里基本上以與Mathematica比較的方式來介紹. 一、算術運算1. 數(shù)值表示和計算與Mathematica一樣,Maple中的數(shù)值也按通常的分類:整數(shù)、分數(shù)、實數(shù)(浮點小數(shù))和復數(shù). 也將數(shù)值分為精確數(shù)和近似數(shù)兩類. 與Mathematica中的指令Nexpr或Nexpr, n所對應的Maple指令是:evalf(expr) e

8、xpr 的計算結(jié)果含有機器的默認位的數(shù)字evalf(expr,n)expr 的計算結(jié)果含n位數(shù)字Digits察看數(shù)值的默認位數(shù)Digits:=n將數(shù)值的默認位數(shù)設定為nMaple對數(shù)字的默認位數(shù)是10位. 例如:> 2100; > evalf(2100); > evalf(Pi,100);注意,在輸出結(jié)果第一行末尾的反斜線“”表示與下面的數(shù)值連接 (Mathematica中也是這樣的). 2. 整數(shù)運算我們僅將Maple的指令和對應的Mathematica指令和功能放在下表中:MapleMathematica指令功能ifactor(n)FactorIntegern 將整數(shù)n分

9、解為素數(shù)的乘積igcd(m,n,k,)GCDm,n,k,¼ 求m,n,k,¼ 的最大公約數(shù)ilcm(m,n,k,)LCMm,n,k,¼ 求m,n,k,¼ 的最小公倍數(shù)ithprime(n)Primen 給出第n個素數(shù)isprime(n)PrimeQn 判定n是(True)否(False)為素數(shù)factorial(n)或n! Factorialn 或 n!計算n階階乘:n(n-1)¼21rand(m.n)RandomInteger,m,n隨機產(chǎn)生在m與n間的整數(shù)irem(m,n)Modm,n 計算m/n的余數(shù)iquo(m,n)Quotientm,

10、n 計算m/n的商Maple中沒有與Divisorsn相應的指令. 3. 內(nèi)部常數(shù)Maple中的內(nèi)部常數(shù)可以用指令constants;來查看:> constants; 與Mathematica相同,Pi和I分別表示圓周率和純虛數(shù). 但Maple中不使用專門的字母表示自然對數(shù)的底,如果使用它,就用exp(1). 角的單位度數(shù)是deg. 無窮大為infinity. 4. 實數(shù)和復數(shù)運算Maple將浮點小數(shù)化為分數(shù)的指令是:convert(x,rational)將實數(shù)(有理數(shù))x轉(zhuǎn)換為精確分數(shù)convert(x,rational,n)將實數(shù)(無理數(shù))x轉(zhuǎn)換為分子與分母非零數(shù)碼的個數(shù)和為n的分數(shù)

11、例子:> convert(0.44444,rational); > convert(evalf(Pi),rational,5); 表示復數(shù)的基本術語包括:實部,虛部,模長,幅角和共軛的. Maple的表示方式和術語與相應的Mathematica指令是類似的:z = a + b*I復數(shù)z的代數(shù)表示,a, b為實數(shù)Re(z)求復數(shù)z的實部Im(z)求復數(shù)z的虛部abs(z)求復數(shù)z的模長或絕對值argument(z)求復數(shù)z的幅角(在-和之間)conjugatez求復數(shù)z的共軛復數(shù)evalc(expr)完成表達式expr的復數(shù)運算二、函數(shù)運算在這部分中,將討論變量和定義函數(shù). 1. 變

12、量在前面已經(jīng)討論了變量名的設定. 在Maple中變量的賦值方式是:變量 := 值,與Mathematica中的延遲方式相同. 符號%的用法與Mathematica中類似:%指上一步的運算結(jié)果%¼%(n個%)指前倒數(shù)第n步的運算結(jié)果指令assigned(x) 用于查看變量x是否被賦值,若被賦值,返回true, 否則false. 2. Maple的自定義函數(shù)許多Maple中的自定義函數(shù)與Mathematica的自定義函數(shù)是類似的,主要區(qū)別是函數(shù)名稱第一個字母不用大寫:例如,sin(x)、cos(x)、arctan(x). 為方便起見,將常用函數(shù)列在下表中:sin(x), cos(x),

13、tan(x), cot(x), sec(x), csc(x)三角函數(shù),x的單位是弧度sinh(x), cosh(x), tanh(x), coth(x), sech(x), csch(x)雙曲函數(shù)arcsin(x), arcos(x), arctan(x),arccot(x), arcsec(x), arccsc(x)反三角函數(shù)arcsinh(x), arccosh(x), arctanh(x), arccoth(x), arcsech(x), arccsch(x)反雙曲函數(shù)arctan(y,x)=argument(x+y*I) (在 與間取值)計算平面上點(x,y)得幅角sqrt(x)平方根

14、函數(shù)exp(x), lnx指數(shù)函數(shù)和自然對數(shù)函數(shù)logb(x)以b為底的對數(shù)函數(shù)absx絕對值函數(shù)round(x)最接近x的整數(shù)rand ()12位的隨機數(shù)maxa,b,c,¼,mina,b,c,¼a, b, c, ¼ 中的最大(小)數(shù)floor(x)不大于x的最大整數(shù)ceil(x)不小于x的最小整數(shù)trunc(x)x靠近0的整數(shù)部分frac(x)x的分數(shù)部分(=x-trunc(x)signum(x)符號函數(shù)?函數(shù)名查看函數(shù)的定義3. 定義函數(shù)Maple定義函數(shù)的基本方式是:“函數(shù)名 := 變量 - > 變量的表達式”. 例如,定義函數(shù)f(x) = x2 +

15、 sin x:> f:= x->x2+sin(x); 另一種方式是,定義表達式p := x2 + sin x,然后使用指令:函數(shù)名 := unapply(p,x):> p:=x2+sin(x); > g:=unapply(p,x); > g(1); 分段函數(shù)的定義可以通過指令piecewise來實現(xiàn). 例如,定義函數(shù):> h1:=x->piecewise(x<-1,1,x<1,abs(x),2);查看結(jié)果:> h1(x);> h1(-2); h1(0);h1(2); 清除變量賦值和自定義函數(shù)的最簡單方法就是使用指令 變量名:=變

16、量名 或 函數(shù)名:= 函數(shù)名. 如果要清除所有的自定義變量和函數(shù),使用指令restart就可以了. 三、初等代數(shù)運算Maple關于初等代數(shù)的運算內(nèi)容與Mathematica的內(nèi)容是類似的,但運算指令有些區(qū)別. 下面做一個介紹. 1. 不同形式代數(shù)表達式之間的轉(zhuǎn)換下面是Maple的相關指令與Mathematica的一些指令的對照. 有些Mathematica的指令沒有相應的Maple指令,它們的功能有些可以通過Maple的其他指令來實現(xiàn):Maple指令Mathematica指令基本功能expand(expr)Expandexpr乘出expr的所有乘積和冪(簡稱展開)ExpandAllexpr把e

17、xpr的所有部分都展開factor(expr)Factorexpr將expr分解成因子的乘積Togetherexpr將expr的所有(被加)項通分Apartexpr將expr分解成具有簡單分母的項(的和)normal(expr)Cancelexpr消去分子和分母的公因子simplify(expr)Simplifyexpr做一系列變換使得expr具有最簡形式FullSimplifyexpr利用更多的化簡公式將expr化簡得更簡潔collect(expr, x)Collectexpr, x給出expr按照x方冪展開的形式FactorTermsexpr, x提取expr所有與x無關的因子有關的指令往

18、往還有參數(shù),指定執(zhí)行方式. 有興趣的讀者可以使用索引搜尋來查閱. 例如,搜尋指令simplify的可能參數(shù):圖2-1讀者可以自己去查看. 下面介紹有關有理化分母和部分分式的兩條指令:rationalize(expr)有理化根式分式的分母convert(f, parfrac, x)將f按x化為部分分式convert(f, parfrac, x, K)將f在K上按x化為部分分式看下面的例子. 對數(shù)值分式的有理化:> a:=(2+sqrt(2)/(2-sqrt(2); > rationalize(a); 對多項式分式的有理化:> b:=(x+y)/(x*y+sqrt(3)+sqrt

19、(7); > rationalize(b); 部分分式的例子:> p:=(x2+1)/(x3+x2+1); 化為部分分式(默認的是有理數(shù)域,因此沒有什么反應):> convert(p,parfrac,x); 在實數(shù)域:> convert(p,parfrac,x,real);在復數(shù)域:> convert(p,parfrac,x,complex);convert是Maple中非常有用的一條指令,讀者可以自己利用索引搜尋查看它的其他用法. 2. 解方程Maple中方程的寫法與我們的通常寫法一樣(例如一元二次方程在Maple中的寫法為:x2+x+1=0),這一點與Math

20、ematica是不同的. 求解指令與Mathematica的基本思想相同,記號上略有區(qū)別:solve(eqn, x)對方程eqn求解xsubs(x=soln, eqn)驗證解soln滿足方程eqnsolve(eqn1, eqn2, , x, y, )對未知數(shù)x, y, 求解方程組eqn1, eqn2, fsolve(eqn, x, a . b)對方程eqn在a與b之間求解x讀者可以嘗試使用這些指令來求解Mathematica中第四節(jié)第二段中的例題,看看有什么異同. 下面僅對指令subs的使用舉一個例子:> eqn2:=x2+3*x-8=0; > soln2:=solve(eqn2,

21、x);> subs(soln21,eqn2); > simplify(%); > simplify(subs(soln22,eqn2); 3. 解不等式Maple用指令solve解不等式,不等號為:<=(小于等于)、>=(大于等于)、<(小于)、>(大宇)和<>(不等于). 讀者可以使用這些Maple的指令求解Mathematica中第四節(jié)第三段中的不等式,并比較結(jié)果. 看一個例子:> solve(x3+4*x2-8*x+3<0,x);這表示解為兩個開區(qū)間. 四、微積分運算Maple對微積分運算的處理與Mathematica的處

22、理也很相近,但Maple有其獨到之處,比如,計算多元極限,積分的分部積分和變量替換方法. 這部分反映了人們在微積分符號計算方面的進步,不如人意的地方是存在的,這需要在軟件的使用過程中去發(fā)現(xiàn)和改進. 最后要說明的是,在Maple的指令中,如果將指令的第一個字母大寫,所得到的是相應的數(shù)學符號,而不是運算結(jié)果. 1. 極限運算Maple7計算極限的功能比Mathematica 4的要強,不僅能計算一部分多元極限,而且也不會犯Mathematica計算一元極限的一些錯誤. 計算極限指令的形式是:limitf(x), x = a 求表達式f(x)當x趨于a時的極限limitf(x), x=a, dir

23、求表達式f(x)當x沿方向dir趨于a時的極限limitf(x,y,),x=a,y=b求表達式f(x, y,)當x,y,分別趨于a、b,時的極限方向dir可取left(左極限)、right(右極限)、 real(實數(shù))、complex(復數(shù)). 看幾個例子. 符號函數(shù)在x=0時的極限:> limit(signum(x),x=0); Maple知道極限不存在,與Mathematica的結(jié)果比較一下. 看一個多元極限:> limit(x*y/(x2*y2),x=0,y=0); 再看下面的極限:> limit(exp(-1/x2),x=0); > limit(exp(-1/x

24、2),x=0,complex); 這個復極限不存在,Maple算不清楚,但Maple也不犯簡單的錯誤. 下面這些例子可以說明Maple計算極限的性能與Mathematica相比有獨到之處:> limit(n!/nn,n=infinity); > limit(n!)(1/n)/n,n=infinity); > limit(sum(-1)i/(2*i+1),i=0.x),x=infinity); 得到一個公式:> Limit(n!)(1/n)/n,n=infinity)=limit(n!)(1/n)/n,n=infinity); > Limit(Sum(-1)i/(2

25、*i+1),i=0.x),x=infinity)=limit(sum(-1)i/(2*i+1),i=0.x),x=infinity); 2. 求導運算Maple求導運算的基本指令是diff(用于表達式)和D(用于函數(shù)):diff(f(x), x)求f(x)對x的導數(shù)diff(f(x,y, ), x, y, )求f(x,y, )對x, y, 的導數(shù)diff(f(x), x$n)求f(x)對x的n階導數(shù)diff(f(x,y, ), x$m, y$n,)求f(x,y, )對x的 m階, 對y 的n階, 的導數(shù)D(f)求一元函數(shù)f的一階導函數(shù)D1, 2, (f)求多元函數(shù)f對第一個變量一次,第二個變量

26、一次,的導函數(shù)(Dn)(f)求一元函數(shù)f的n階導函數(shù)D1$m, 2$n, (f)求多元函數(shù)f對第一個變量m次,第二個變量n次,的導函數(shù)看幾個例子:> diff(x*exp(x),x); > diff(exp(x)*x,x$5); > Diff(exp(x)*x,x$5)=diff(exp(x)*x,x$5); > D(sin); > (D6)(sin); > g:=(x,y,z)->x*sin(y*z); > D1,2(g); > D3$2,1,2$3(g); 對于復合函數(shù)和隱函數(shù)的求導:fg函數(shù)f與g的復合函數(shù)implicitdiff(f

27、, y, x)求由方程f定義的隱函數(shù)y對x的導數(shù)implicitdiff(f, y, x1,.,xk)求由方程f定義的隱函數(shù)y對x1,.,xk的導數(shù)implicitdiff(f1,.,fm,y1,.,yn,u, x1,.,xk )求由方程f1,.,fm定義的隱函數(shù)y1,.,yn 中的某個u對x1,.,xk的導數(shù)implicitdiff(f1,.,fm,y1,.,yn,u1,.,ur, x1,.,xk)求由方程f1,.,fm 定義的隱函數(shù)y1,.,yn 中的某r個 u1,.,ur對x1,.,xk的導數(shù)看幾個例子. 復合函數(shù)的例子:> f:=x->x*sin(x2); > g:=

28、x->x*cos(x2); > (fg)(x); > D(fg); > D(fg)(x); 隱函數(shù)求導的例子:> f:=x2+y4=1; > implicitdiff(f,y,x); > implicitdiff(f,y,x$2); 把求導記號加上:> implicitdiff(f,y(x),y,x$2,notation = Diff);如果不加“notation = Diff”:> implicitdiff(f,y(x),y,x$2); 看一個復雜一點的例子:> g:=x*u-y*v=0; > h:=y*u+x*v=1; &g

29、t; implicitdiff(g,h,u(x,y),v(x,y),u,v,x,notation=Diff); > implicitdiff(g,h,u(x,y),v(x,y),u,v,x$2,y);3. 積分運算下面簡單介紹Maple的積分運算指令:int(expr, x)求expr對于x的不定積分int(expr, x=a.b, .)求expr對于x由a到b的定積分, 為選項changevar(s, f, u)對積分f作變量替換s, u為新的積分變量intparts(f, u)對積分f作分部積分, u為在udv中選擇的u與Mathematica一樣,Maple的積分運算功能是很強的,

30、大多數(shù)的常見積分(如果理論上有可行的算法),前兩條指令就夠了. 對于迭積分,只需要將它們套用幾次就可以了. 但對某些積分,前兩條指令不能給出結(jié)果,后兩條指令會有些幫助. 要使用后兩條指令,需要調(diào)用程序包:student. 調(diào)用程序包的指令是:with(程序包名). 對于前兩條指令看下面的例子:> int(int(x*sin(y),x),y);. > int(int(x*sin(y),x=1.2),y=0.Pi); 指令changevar(s, f, u)的用法:先加載程序包student:> with(student):> changevar(x=sin(t),Int(

31、sqrt(1-x2),x),t); > changevar(x=sin(t),Int(sqrt(1-x2),x=0.Pi/2),t);注意,在指令changevar(s, f, u)中的f是我們所討論的積分,我們這里使用Int(第一個字母大寫)而不是int,這樣我們可以看到變換后的情況. 比較一下?lián)Q過來之后的結(jié)果:> changevar(x=sin(t),int(sqrt(1-x2),x),t);> changevar(x=sin(t),int(sqrt(1-x2),x=0.Pi/2),t);分部積分指令intparts(f, u)的用法:先加載程序包student:>

32、 with(student):> intparts(Int(xn*exp(x),x),xn); 通常用指令int就能夠解決問題,在這種情況下,變量替換和分部積分就似乎沒有什么意義了. 可以說服我們的是,至少它們可以給出一些步驟. 在實際問題中,至少還有其他的情況,需要使用其他指令,例如,Maple的答案未必是我們所滿意的,甚至有時指令int給不出答案. 看下面的例子. > int(ln(sin(x)/sin(x)2,x);這顯然不是我們所要的. 為了使用分部積分,加載程序包student:> with(student):> intparts(int(ln(sin(x)/

33、sin(x)2,x),ln(sin(x);沒有什么改觀,將int換成Int:> intparts(Int(ln(sin(x)/sin(x)2,x),ln(sin(x);這樣一目了然. 將這一結(jié)果復制到下一行提示符后就有:> -ln(sin(x)*cos(x)/sin(x)-Int(-cos(x)2/sin(x)2,x)將其中的Int換成int,并在末尾加分號,然后打回車鍵就得到:> -ln(sin(x)*cos(x)/sin(x)-int(-cos(x)2/sin(x)2,x);下面是更有意思的一個例子:> int(x*ln(x/(1-x)/sqrt(1-x2),x);

34、 這表明Maple積分不出來. 但我們關于不定積分的知識告訴我們這個積分是可以用分部積分法積分出來的. 下面使用指令intparts(f, u). 加載程序包student:> with(student):> intparts(Int(x*ln(x/(1-x)/sqrt(1-x2),x),ln(x/(1-x);將這一結(jié)果復制到下一行提示符后就有:> -ln(x/(1-x)*sqrt(1-x2)-Int(-(1/(1-x)+x/(1-x)2)/x*(1-x)*(1-x2)(1/2),x)將其中的Int換成int,并在末尾加分號,然后打回車鍵就得到:> int(-(1/(1

35、-x)+x/(1-x)2)/x*(1-x)*(1-x2)(1/2),x);這一結(jié)果還可以化簡:> simplify(%); 這個積分,Mathematica是能夠積分出來的,形式有些不相同. 4. 級數(shù)Maple的求和和求積指令與Mathematica的近似的:sumf, k= m.n求和式Productf, k= m.n連乘式這兩條指令還有一些其他的選項,限于篇幅,這里不做進一步的介紹. 讀者可以利用索引搜尋查看相關的條目. 與Mathematica一樣,Maple能夠求函數(shù)帶皮亞諾(Peano)余項的冪級數(shù)展開式. 與Mathematica類似的基本指令是:series(expr,

36、x=a, n)求出表達式expr在a點次數(shù)至n的冪級數(shù)展開式convert(series,polynom)去除冪級數(shù)的余項而留下多項式Maple對n的預設值是6,a的預設值是0. 看下面的例子:> series(1/(1+x+x3),x); > convert(%,polynom); > series(sqrt(x)*tan(x),x); 其他的指令和設定可以查看幫助系統(tǒng)中的條目powerseries. 5. 微分方程Maple的求解微分方程的功能也是很強的. 在Maple幫助系統(tǒng)中的Differential Equations條目下有很多內(nèi)容,有興趣的讀者可去瀏覽一下. 常

37、用的求解微分方程程序包有兩個:DEtools和PDEtools. 下面是僅討論基本求解指令:dsolve(ode)求解常微分方程odedsolve(ode,ics, y(x), option)求解常微分方程ode滿足處置條件ics的解(option為選項)odeadvisor(ode)給出常微分方程ode類型和求解方法的建議看幾個例子:> dsolve(x*diff(y(x),x)+y(x)=x2); > dsolve(x*diff(y(x),x)+y(x)=x2,y(1)=1); 要使用指令odeadvisor,需要調(diào)用程序包DEtools:> with(DEtools):

38、> odeadvisor(diff(y(x),x)+x*y(x)=y(x)3); > dsolve(diff(y(x),x)+x*y(x)=y(x)3,Bernoulli,useInt); 下面在對高階方程中處置條件的寫法舉個例子:> ode0:=diff(y(x),x$3)+3*diff(y(x),x)-4*y(x)=0;> ict0:= y(0)=1, D(y)(0)=1, (D2)(y)(0)=1 ;> dsolve(ode0 union ict0); 五、線性代數(shù)運算對線性代數(shù)運算的處理,Maple與Mathematica有很大的差異. 我們這里所作的介紹

39、要比較前面其他部分的介紹詳細一些. 線性代數(shù)運算的指令大多放在程序包LinearAlgebra和linalg中. 這兩個程序包使用上有些區(qū)別. 表面上的區(qū)別是,LinearAlgebra中的指令第一個字母都大寫,而linalg中的指令的第一個字母小寫. 比起Mathematica來,Maple的線性代數(shù)運算功能有強大些. 不足之處是,在Maple中,矩陣和向量的輸入方法較多,運算符號也較多,重復之處不少. 我們這里只能討論程序包LinearAlgebra中的求解本科線性代數(shù)問題的基本內(nèi)容. 1. 向量和矩陣的輸入和運算我們先介紹程序包LinearAlgebra中的輸入方法和基本運算. 向量和矩

40、陣的輸入方法是:v := <a1, a2, , ak>定義k維列向量vv := <a1 | a2 | | ak>定義k維行向量vM:=<<a11, , ak1>|<a1n, , akn>>定義kn維矩陣MM:=Matrix(a11, , ak1, a1n, , akn)定義kn維矩陣M向量和矩陣的加法和乘法的指令:Add(U, V, a, b)計算向量或矩陣U和V的線性組合aU+bVMultiply(U,V)計算向量或矩陣U和V的乘積UV注意:線性代數(shù)的常識告訴我們:在加法指令Add中,U和V必須是同維數(shù)的,在乘法指令Multiply

41、中,U的列數(shù)要與V的行數(shù)相等. 除了下面約定外,Maple遵守這兩條規(guī)則. Maple對加法指令Add的約定是:如果U和V中有一個是方陣(例如是U),另一個是數(shù)值(例如V為數(shù)值c),則這個數(shù)值被Maple理解為同階單位矩陣的倍數(shù)(即cI). 對乘法指令Multiply的約定是:如果U和V中有一個是數(shù)值,Maple將其理解為通常的數(shù)乘(也叫純量乘法). 有了這兩條指令,矩陣和向量的加法、減法、數(shù)乘、矩陣乘法就都可以進行了. 看下面的例子. 先加載程序包LinearAlgebra:> with(LinearAlgebra):定義兩個33矩陣和三階向量:> M:=Matrix(1,2,3

42、,1,1,0,0,0,1); > N:=<<1,3,5>|<1,1,0>|<2,4,6>> > v0:=<1|1|1> > v1:=<1,1,-2> > v2:=<2,-2,0> 計算v1 - v2和M - N:> Add(v1,v2,1,-1); > Add(M,N,1,-1); 計算M與N的乘積MN和M與v1的乘積Mv1:> Multiply(M,N); > Multiply(M,v1); 獲得N的特征矩陣及3與M的數(shù)乘:> Add(N,lambda,1

43、,-1); > Multiply(3,M); 2. 向量的其他運算下面是向量間的其他運算指令:CrossProduct(U, V)計算兩個三維向量的叉積DotProduct(U, V)計算兩個相同維數(shù)向量的點積VectorAngle(U, V)計算兩個相同維數(shù)向量間的夾角VectorNorm(U, 2)計算向量U的歐氏長度下面的例子中繼續(xù)使用前面定義的向量. 求v1與v2的叉積、點積和夾角及v1的歐氏長度:> CrossProduct(v1,v2); > DotProduct(v1,v2); > VectorAngle(v1,v2); > VectorNorm(v

44、1,2); 3. 矩陣的其他運算下面是有關矩陣的其他運算指令:Determinant(A)計算方陣A的行列式Transpose(A)計算矩陣、向量或數(shù)值A的轉(zhuǎn)置Rank(A)計算矩陣A的秩MatrixInverse(A)計算方陣A的逆矩陣看幾個例子. 加載程序包LinearAlgebra:> with(LinearAlgebra):計算第一段中定義的矩陣M的行列式、秩、轉(zhuǎn)置和逆矩陣:> Determinant(M); > Rank(M); > Transpose(M); > MatrixInverse(M); 4. 求解線性方程組可以用于求解線性方程組的一些指令:

45、RowSpace(A)給出矩陣A的行空間的一個基ColumnSpace(A)給出矩陣A的列空間的一個基NullSpace(A)計算以A為系數(shù)矩陣的齊次方程解(零子空間)的基礎解系LinearSolve(A, B)求解線性方程組Ax=B看幾個例子. 加載程序包LinearAlgebra:> with(LinearAlgebra):計算第一段中定義的矩陣M的行空間和列空間:> RowSpace(M); > ColumnSpace(M); 定義矩陣C:> C:=<<1,2>|<3,6>|<2,4>> 計算C的零子空間:>

46、NullSpace(C); 求解線性方程組Cx=b:> LinearSolve(C,<3,4>);Error, (in LinearAlgebra:-LA_Main:-LinearSolve) inconsistent systemMaple的提示說明這是一個矛盾方程組,無解. 再看下一個:> LinearSolve(C,<1,2>); Maple給出這個方程組的通解,其中_t02和_t03是參數(shù). 5. 矩陣的特征值和特征根計算特征值和特征根的指令是:Eigenvalues(A)計算方陣A的特征值Eigenvectors(A)計算方陣A的特征向量看幾個例子

47、. 加載程序包LinearAlgebra:> with(LinearAlgebra):計算第一段中定義的矩陣M的特征值和特征向量:> Eigenvalues(M); > Eigenvectors(M); 求特征向量的結(jié)果中,第一個列向量給出M的特征值,后面的矩陣的列對應著相應的特征向量. 六、作圖Maple的作圖功能與Mathematica的作圖功能是較接近的. 要指出的是,Maple對平面幾何和立體幾何各有一個很好的程序包geometry和geom3d,它們能夠完成我們所熟悉的綜合幾何和解析幾何中的各種工作以及許多其他有趣的操作. 限于篇幅的關系,我們這里不作介紹,感興趣的

48、作者可以通過索引查詢了解這兩個程序包. 下面僅簡要地介紹函數(shù)圖象的繪制. 讀者可以將這部分的指令和選項與Mathematica的相關指令和選項作比較. 1. 二維作圖二維作圖指令是:plot(f, h, v,.)作函數(shù)f的圖象,h為自變量范圍,v為函數(shù)值范圍, 為選項其中選項(有關詳細說明請查閱:plot,options)如下:選項設置格式取值范圍說明adaptiveadaptive= true還有false自適應,取消axesaxes=normalframe, boxed, normal, none坐標軸設置,四種axesfontaxesfont=family,style,size參看plo

49、t,options設置刻度線標號字形colorcolor=n參看plot,color設置圖象顏色coordscoords=namepolar(極坐標),參看plotcoords選擇作圖所用坐標系discontdiscont=false還有true是否在間斷點用垂直線連接filledfilled=false還有true是否在圖象和x軸之間填充fontfont=family,style,size參看plot,options設置圖象中文字部分的字形labelslabels=x,y標記坐標軸labeldirectionslabeldirections=x,yhorizontal, vertical設置

50、坐標軸的方向labelfontlabelfont=family,style,size設置坐標軸標記的字形legendlegend=ss是元素與曲線條數(shù)相同的表假如圖例linestylelinestyle=11-4對應實線、點線、虛線和點劃線設置圖象線的類型numpointsnumpoints=50正整數(shù)設置作圖區(qū)間的分點數(shù)resolutionresolution=200正整數(shù)設置圖象的水平分辨率samplesample=x1,.,xk自變量的取值選定作圖是必須取得點scalingscaling=unconstrainedconstrained (1)x軸與y軸單位的比stylestyle=li

51、nepoint, 參看plot,options設置圖象點之間的連接方式symbolsymbol=pointbox, cross, circle設置圖象中點的類型symbolsizesymbolsize=10正整數(shù),單位:吋/72設置圖象中點的大小thicknessthickness=01, 2, 3設置圖象中線的厚度tickmarkstickmarks=m,n正整數(shù)或default設置圖象中坐標軸標號個數(shù)titletitle=”n”n用作題目中的換行作圖象標題titlefonttitlefontfamily,style,size參看plot,options設置圖象標題文字字形viewview=

52、x1.x2, y1.y2設置圖象坐標選取范圍xtickmarksxtickmarks=n正整數(shù)設置橫坐標軸標號個數(shù)在上表中,設置格式中的值(如果有的話)是Maple的預設值. 看幾個例子:> plot(signum(x-1),x=0.2);> plot(signum(x-1),x=0.2,discont=true);(圖2-2) (圖2-3) 圖2-2 圖2-3> plot(signum(x-1),x=0.2,filled=true); (圖2-4) 圖2-4 圖2-5> plot(sin(x),x=0.Pi,sample=0,Pi/4,Pi/2,3*Pi/4,Pi,adaptive=false); (圖2-5)Maple的參數(shù)方程作圖和極坐標作圖的指令很簡單:plot(x(t),y(t),t=a.b,h,v

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論