freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

maple程序設計(已修改)

2025-03-19 18:38 本頁面
 

【正文】 137 第六章 Maple程序設計 前面 , 我們使用的是 Maple 的交互式命令環(huán)境 . 所謂交互式命令環(huán)境 , 就是一次輸入一條或幾條命令 , 然后按回車 , 這些命令就被執(zhí)行了 , 執(zhí)行的結果顯示在同一個可執(zhí)行塊中 . 對于大多數用戶來說 , 利用交互式命令環(huán)境解決問題已經足夠了 , 但如果要解決一系列同一類型的問題或者希望利用 Maple 編寫需要的解決特定問題的函數和程序 , 以期更加充分地利用 Maple 的強大功能 , 提高大規(guī)模問題的計算效率 , 掌握一定的程序設計是必要的 . 幸運的是 , Maple自身提供了一套編程工具 , 即 Maple語言 . Maple語言實際上是由 Maple 各種命令以及一些簡單的過程控制語句組成的 . 1編程基礎 所謂算子 , 是從一個抽象空間到另一個抽象空間的函數 . 在數學上算子的含義通常是函數到函數的映射 . 在 Maple 中 , 算子常用“箭頭”記號定義 (也稱箭頭操作符 ): f:=xa*x*exp(x)。 := f ???x a x e x g:=(x,y)a*x*y*exp(x^2+y^2)。 := g ?? ?( ),x y a x y e ( )?? ?x 2 y 2 另外 , 函數 unapply 也可以從表達式建立算子: unapply(x^2+1,x)。 ???x ???x2 1 unapply(x^2+y^2,x,y)。 ???( ),x y ???x 2 y 2 當我們依次把算子 f 作用到參數 0, a, x^2+a 時即可得平常意義上的函數值: f:=tt*sin(t)。 := f ???t t ( )sin t 138 f(0)。 0 f(a)。 a ( )sin a f(x^2+a)。 ( )???x 2 a ( )si n ???x 2 a 上述結果是函數作用的例子 . 而最后一個結果 )sin()( 22 axax ?? 實際上是算子 f與 算子 g:=tt^2+a 復合后再作用到參數 x的結果 . 從數學上講 , 作用與復合是不同的,它們產生的結果是有區(qū)別的 , 但在使用它們時 , 兩者還是有些重疊的 . 在 Maple 中 , 可以依賴于語法把它們區(qū)分開 : (1) 當復合兩個算子時 , 結果仍是算子 , 兩個算子的定義域必須是相容的; (2) 當把一個算子作用于一個參數 (參數必須在算子的定義域中 )時 , 結果是一個表達式 。 (3) 在 Maple 中,函數作用的語法是使用括號 ( ),如函數 f作用到參數 u寫作 f(u). 而復合算子的符號是 @,多重復合時使用符號 @@. 通過進一步的例子可以 清楚區(qū)分作用與復合的功能 : f 和 g 復合的結果是算子))((: tgftgf ?? ? , 而把這個算子作用到參數 x 得到表達式 f(g(x)). 例如 , )e x p (),s i n ( uugttf ?? ??? ?, 則 ))s in ( e x p (: ??? zzgf ? 是一個算子 , 而))s in ( e x p ()(( ??? xxgf 是一個表達式 , 因為 x 是一個實數 . 試比較下述兩例: D(g@f)。 ( )@( )( )D g f ( )D f D(g*h)。 ???( )D g h g ( )D h 另外一個應引起注意的問題是算子 (函數 )與表達式的異同,在第一章 中曾探討過函數與表達式的區(qū) 別,這里再通過幾個例子說明其中的微妙差異: f1:=x^2+1。 f2:=y^2+1。 := f1 ???x2 1 := f2 ???y2 1 139 f3:=f1+f2。 := f3 ??? ???x 2 2 y 2 再看下面的例子: g1:=xx^2+1。 g2:=yy^2+1。 := g1 ???x ???x 2 1 := g2 ???y ???y 2 1 g3:=g1+g2。 := g3 ???g1 g2 與前面例子不同的是,兩個算子 (函數 ) g1, g2相加的結果依然是函數名 g3,出現這個問題的主要原因是 g1 與 g2 分別為 x, y的函數, Maple 認為它們的定義域不相容 . 要得到與前例的結果,只需稍作改動: g3:=g1(x)+g2(y)。 := g3 ??? ???x 2 2 y 2 下面的 例子想說明生成 Maple 函數的兩種方式“箭頭操作符”及“ unapply”之間微妙的差異: x:=39。x39。: a:=1: b:=2: c:=3: a*x^2+b*x+c。 ??? ???x2 2 x 3 f:=unapply(a*x^2+b*x+c,x)。 := f ?? ?x ??? ???x 2 2 x 3 g:=xa*x^2+b*x+c。 := g ???x ??? ???a x 2 b x c 由此可見, f 中的 a,b,c 已經作了代換,而 g中則顯含 a,b,c。再看下面實驗: f(x)。 g(x)。 ??? ???x2 2 x 3 ??? ???x2 2 x 3 f 與 g兩者相同,再對其微分: D(f)。 D(g)。 140 ???x ???2 x 2 ???x ???2 a x b 再改變常數 c 的值,觀察 f 與 g的變化: c := 15。 := c 15 f(x)。 g(x)。 ??? ???x2 2 x 3 ??? ???x2 2 x 15 由此可見,在利用 Maple 進行函數研究時,對同一問題應該用不同方法加以校驗,而這一切的支撐是數學基礎! 編程初體驗 利用算子可以生成最簡單的函數 —單個語句的函數 , 但嚴格意義上講它并非程序設計 , 它所生成的數據對象是子程序 . 所謂子程序,簡單地說 , 就是一組預先編好的函數命令 , 我們由下面的簡單程序來看看 Maple 程序的結構: plus:=proc(x,y) x+y。 end。 這個程序只有 2個參數 , 在程序內部它 的名稱是 x, y, 這是 Maple最簡單的程序結構 , 僅僅在 proc( )和 end中間加上在計算中需要的一條或者多條命令即可 , Maple 會把最后一個語句的結果作為整個子程序的返回結果 , 這一點需要引起注意 . 再看下例: P:=proc(x,y) xy。 x*y。 x+y。 end: P(3,4)。 7 顯然 , 盡管程序 P 有三條計算命令,但返回的只是最后一個語句 x+y。的結果 . 要想輸出所有的計算結果,需要在程序中增加 print 語句 : P:=proc(x,y) print(xy)。 print(x*y)。 141 print(x+y)。 end: P(3,4)。 1 12 7 再看下面幾個例子: for i from 2 to 6 do expand((x+y)^i )。 od。 ??? ???x 2 2 x y y 2 ??? ??? ???x 3 3 x 2 y 3 x y 2 y 3 ??? ??? ??? ???x 4 4 x 3 y 6 x 2 y 2 4 x y 3 y 4 ?? ? ?? ? ?? ? ?? ? ?? ?x 5 5 x 4 y 10 x 3 y 2 10 x 2 y 3 5 x y 4 y 5 ?? ? ?? ? ?? ? ?? ? ?? ? ?? ?x 6 6 x 5 y 15 x 4 y 2 20 x 3 y 3 15 x 2 y 4 6 x y 5 y 6 F:=proc(n::integer) if n mod 12=0 then true else false fi end: F(123^123), F(1234567890^9)。 ,false true 從上面幾個簡單的例子可以看出 Maple 子程 序主要包含以下一些內容: (i) 把定義的子程序賦值給程序名 proame, 以后就可以用子程序名 proame 來調用程序; (ii) 子程序一律以 proc( )開頭 , 括號里是程序的輸入參數,如果括號中什么都沒有 , 表示這個子程序沒有任何輸入參數; (iii) 子程序中的每一個語句都用分號 (或冒號 )分開 (這一點不是主要的 , 程序設計時 , 在可能的時候 —過程當中的最后一個語句、 for循環(huán)、 if 語句中的最后一個語句省略終 142 結標點也是允許的 , 這并不是為了懶惰 , 而是因為在終結語句后面插入一個語句產生的影響要比僅僅執(zhí)行一個新語句產生的影 響大 ); (iv) 在定義完子程序之后 , Maple會顯示它對該子程序的解釋 (除非在 end后用冒號結束 ), 它的解釋和你的定義是等價的 , 但形式上不一定完全相同; (v) Maple 會自動地把除了參數以外的變量都作為局部變量 (local variable), 這就是說 , 它們僅僅在這個子程序的定義中有效 , 和子程序以外的任何同名變量無關 . 在定義了一個子程序以后 , 執(zhí)行它的方法和執(zhí)行任何 Maple 系統(tǒng)子程序一樣 —程序名再加上一對圓括號 ( ), 括號中包含要調用的參數 , 如果子程序沒有參數 , 括號也是不能省略的 . 除了上 面給出的程序設計方法外,在 Maple 中還可以直接由“ ” (箭頭 )生成程序 , 如下例: f:=xif x0 then x else x fi。 : = f p r o c ( ) e n d p r o cx o p t i o n 。,o p e r a to r a r r o w if t h e n e l s e e n d if?? ?0 x x ? x f(5),f(5)。 ,55 甚至于程序名也可以省略,這種情況通常會在使用函數 map 時遇到: map(xif x0 then x else x fi,[4,3,2,0,1])。 [ ], , , ,4 3 2 0 1 如果需要察看一個已經定義好的子程序的過程 , 用 eval命令 , 查看 Maple中源程序(如 factor 函數 )使用下述組合命令: interface(verboseproc=2)。 print(factor)。 再看一個更為有用的簡單程序:代數方程的參數解。該程序在代數方程 f(x,y)=0求解中使用了一個巧妙的代換 y=tx得到了方程的參數解 , 它的主要用途是用來畫圖、求積分、求微分和求級數 . 程序如下: parsolve:=proc(f,xy::{list(name),set(name)},t::name) local p,x,y。 x:=xy[1]。 y:=xy[2]。 p:={solve(subs(y=t*x,f),x)}minus{0}。 map((xi,u,xx,yy){xx=xi,yy=u*xi},p,t,x,y) end: 調用該程序可以方便求解: 143 parsolve(u^2+v^2=a^2,[u,v],t)。 { },{ },???u ? a???1 t 2 ???v ? t a???1 t 2 { },???u a???1 t 2 ???v t a???1 t 2 f:=randpoly([x,y],degree=3,sparse)。 : = f ? ?? ? ?? ? ?? ? ?? ? ?? ?53 x 85 x y 49 y 2 78 x 3 17 x y 2 72 y 3 parsolve(f,[x,y],t)。 ?? ?y 12 t ( )? ?? ? ?? ?49 t2 85 t ?? ? ?? ? ?? ?2 4 0 1 t 4 2 3 5 9 4 t 3 1 0 8 2 9 t 2 1 6 5 3 6?? ? ?? ?72 t 3 78 17 t 2 ,{{?? ?x 12 ? ?? ? ?? ?49 t2 85 t ?? ? ?? ? ?? ?2 4 0 1 t 4 2 3 5 9 4 t 3 1 0 8 2 9 t 2 1 6 5 3 6?? ? ?? ?72 t 3 78 17 t 2 } {,?? ?y 12 t ( )? ?? ? ?? ?49 t2 85 t ?? ? ?? ? ?? ?2 4 0 1 t 4 2 3 5 9 4 t 3 1 0 8 2 9 t 2 1 6 5 3 6?? ? ?? ?72 t 3 78 17 t 2 ,?? ?x 12 ? ?? ? ?? ?49 t 2 85 t ?? ? ?? ? ?? ?24 01 t 4 23 59 4 t 3 10 82 9 t 2 16 53 6?? ? ?? ?72 t 3 78 17 t 2 } } 局部變量和全局變量 Maple 中的全局變量 , 是指那些在交互式命令環(huán)境中定義和使用的變量 , 前面所使用的變量幾乎都屬于全局變量 . 而在
點擊復制文檔內容
環(huán)評公示相關推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1