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

正文內(nèi)容

maple程序設(shè)計(jì)(參考版)

2025-03-07 18:38本頁(yè)面
  

【正文】 true 169 type({x[1],x[2]},Variables)。 ???b~1 7 擴(kuò)展 Maple命令 雖然編寫程序可以滿足各種不同的需要,但是有時(shí)候 , 根據(jù)需要擴(kuò)展 Maple 原有命令可以事半功倍,事實(shí)上, Maple 更大的特點(diǎn)提供了一種“平臺(tái)” . 在大多數(shù)現(xiàn)代編程語(yǔ)言中 , 都支持自定義的數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)類型 , Maple 也具有這樣的功能 , 只需將一個(gè)結(jié)構(gòu)類型賦值給 `type/TypeName`, TypeName 就可以作為一個(gè)類型使用了 . 這樣 , 對(duì)于結(jié)構(gòu)本身只需要寫一次 , 減少了出錯(cuò)的可能性 , 也減少了工作量 . `type/Variables`:={name,list(name),set(name)}。b39。=c,x)。 := x ???b~ 1 subs(39。”括起來(lái) ), Maple 將不能識(shí)別 , 因?yàn)榫幾g程序認(rèn)為輸入的是全局變量 . assume(b0)。 false 在這一小節(jié)中 , 我們引入了令人費(fèi)解的“越界”的局部變量 . 而實(shí)際上 , 可能在以前的學(xué)習(xí)中就已經(jīng)碰到過(guò)這樣的問(wèn)題 . 已經(jīng)學(xué)習(xí)過(guò)的 assume命令 , 它將一個(gè)變量賦予另一個(gè)有確定范圍的變量 — 新的變量只是在原來(lái)的變量后面加上一個(gè)“ ~” . 這個(gè)具有波浪線的變量就是一個(gè)“越界”的局部變量 — 如果在交互式環(huán)境中輸入它 (注意:需要用一對(duì)反向撇號(hào)“ 39。 eqn。 := eqn ??????a a 2 a another_a:=remove(xeval(x=a),lhs(eqn))。 1 同名變量的最大用途在于可以用來(lái)寫出一串通常用 Maple 很難得到的表達(dá)式 . 舉例來(lái)說(shuō) , Maple 會(huì)自動(dòng)地把表達(dá)式 a+a代簡(jiǎn)成 2a, 要得到表達(dá)式 a+a=2a是一件不容易的事 . 現(xiàn)在 , 我們可以利用上面的子程序 make_a 來(lái)輕松地寫出這樣的式子 . a+make_a()=2*a。 := test { },a a 每 次調(diào)用程序 make_a 生成的同名變量 , 是互不相同的 , 而且 , 它們和全局變量 a也不相同 . 注意: Maple 并不是只依據(jù)變量名來(lái)區(qū)別變量的 . 在交互式環(huán)境中鍵入變量 a時(shí) , Maple 認(rèn)為它是全局變量 . 所以 , 可以用上面的同名變量集合 test 中很容易地找到全局變量 . member(a,test,num)。 檢查所產(chǎn)生的變量是否相同 , 可以根據(jù)中間元素的唯一性 (自動(dòng)刪除相同的元素 ). test:={a,a,a}。 a。 := f p r o c ( ) e n d p r o cx ^x 2 op(f)。 := h 45 H(x,y,z)。 H:=shift(h)。=eval(f),xF(x+1,args[2..1]))。 subs(39。 166 : = h ?? ?( ), ,x y z y z 2x hh(x,y,z)。 := hh ???x ( )h ,?? ?x 1 a r g s . . 2 1 hh(x,y)。 : = s h i f t ?? ?::f p r o c e d u r e ?? ?x ( )f ,?? ?x 1 a r g s . . 2 1 shift(sin)。 := h ???( ),x y x y shift(h)。 shift(sin)。 unapply(f(x+1),x)。 ?? ?x ( )( )?? ?x x ???x 1 %(1)。 : = s h if t ?? ?::f p r o c e d u r e ?? ?x ( )f ?? ?x 1 shift(sin)。od。 : = Ne w t on ?? ?( )?? ?x x ?? ?x ?? ?x 2 ( )c os x?? ?x ?? ?2 x ( )s i n x x0:=。 end: 由于輸入?yún)?shù)是一個(gè)程序 , 就不需要再顯式地指出自變量了 , 我們用 D運(yùn)算符求它的導(dǎo)函數(shù) , 并且作運(yùn)算 . 這里 , (xx)表示恒等函數(shù) xxf ?)( . 從這里 , 我們也可以知道 , 在 Maple 中 , 不僅代數(shù)表達(dá)式可以進(jìn)行運(yùn)算 , 具有相同自變量的函數(shù) 也可以相互進(jìn)行運(yùn)算 . 利用上面的程序求解超越方程 0cos2 ?? xx : g:=xx^2cos(x)。od。 := N e w t o n ?? ?x ???x ???x 2 x???1 1x 然后我們利用已經(jīng)得到的迭代遞推函數(shù) Newton, 可以用來(lái)求解這個(gè)超越方程: x0:=。 end: expr:=x2*sqrt(x)。 interation:=xexpr/diff(expr,x)。 t a b le ( [ , , , ] )?? ?0 0 ?? ?1 1 ?? ?2 1 ?? ?3 2 Maple 也可以自動(dòng)刪除子程序的記憶表 , 如果我們子程序定義時(shí)聲明 system 選項(xiàng) , 系統(tǒng)將會(huì)在回收無(wú)用內(nèi)存時(shí)將記憶表刪除 , 就如同大多數(shù)系統(tǒng)內(nèi)部子程序一樣 . 對(duì)于記憶表的使用范圍 , 一般地 , 它只適用于對(duì)于確定的參數(shù)具有確定的結(jié)果的程序 , 而對(duì)于那些結(jié)果不確定的程序 , 比如用到環(huán)境變量、全局變量 , 或者時(shí)間函數(shù)等的程序 , 就不能使用 , 否則將會(huì)導(dǎo)致錯(cuò)誤的結(jié)果 . 163 5 返回子程序的子程序 在所有的子程序中 , 編寫返回值為一個(gè)子程序的程序所遇到的困難也許是最 多的了 . 編寫這樣的程序 , 需要對(duì) Maple 的各種變量的求值規(guī)則、有效語(yǔ)句有透徹的理解 . Maple 一些內(nèi)部子程序就有這樣的機(jī)制 , 比如隨機(jī)函數(shù) rand, 返回的就是一個(gè)子程序 , 它會(huì)在給定的范圍內(nèi)隨機(jī)地取值 . 下面以牛頓迭代法和函數(shù)的平移為例說(shuō)明這種程序設(shè)計(jì)技巧。 := T tab le( [ ])???2 2 再將相應(yīng)的項(xiàng)刪除掉 , 則又回復(fù)原來(lái)的記憶表: T[2]:=evaln(T[2])。 3 5 4 2 2 4 8 4 8 1 7 9 2 6 1 9 1 5 0 7 5 由于程序 F的代碼很短,很容易忘記對(duì)初始條件賦初值,這樣會(huì)導(dǎo)致永不終止的遞歸,從而產(chǎn)生死 循環(huán) . 因此,程序 Fibonacci較 F要好一些 . (3) 在記憶表中刪除項(xiàng) 記憶表是映射表的一種 , 可以方便地在其中添加或者刪除特定的項(xiàng) , 和一般變量一樣 , 刪除一個(gè)表項(xiàng)只需要將其名稱用 evaln 賦給它本身就行了 . 假設(shè) , 因?yàn)檩斎脲e(cuò)誤 , 我們?cè)谇懊嬉粋€(gè)程序中加入了一個(gè)錯(cuò)誤的項(xiàng): Fibonacci(2):=2。F(1):=1。 F(n1)+F(n2)。還有一點(diǎn), remember 選項(xiàng)與表、陣列、向量不能混用,因?yàn)?remember無(wú)法注意到表中元素的變化。 2 op(4,eval(Fibonacci))。 Fibonacci(n1)+Fibonacci(n2)。下面再建立一個(gè) Fibonacci子程序: Fibonacci:=proc(n::nonnegint) option remember。 end: end: U:=uniform(cos(2)..sin(1)): Digits:=4: seq(U(),i=1..10)。 161 f:= rand(intrange)。 [ ], , , ,1 2 4 8 16 在上面的程序中 , 我們?cè)谧映绦蛑卸x了另一個(gè)子程序 : yy/v, 這個(gè)子程序中有一個(gè)變量 v, Maple根據(jù)有效域的范圍 , 認(rèn)為它就是外面的子程序 nest中的同名變量 v. 那么這是一個(gè)全局變量還是一個(gè)局部變量?顯然兩者都不是 , 因?yàn)榘焉厦娴睦又械膬?nèi)部子程序的 v 聲明成 local或者 global, 都無(wú)法達(dá)到我們的目的 . 那么 , Maple究竟是怎么樣來(lái)判斷一個(gè)變量的作用域呢?首先 , 它自里向外 , 一層一層地尋找顯式地用 local、 global聲明的同名變量 , 或者是子程序 的參數(shù) . 如果找到了 , 它就將其綁定在外層的同名變量之上 , 實(shí)際上就是將兩個(gè)變量視為同一 , 就像上面例子中的情況 . 如果沒(méi)有找到 , 就遵循下面的原則:如果變量位于賦值運(yùn)算符“ :=”的左邊 , 就視其為局部變量 , 否則均認(rèn)為它是全局變量 . 再看下面一個(gè)實(shí)例: uniform:= proc(r::constant..constant) proc() local intrange, f。 map(yy/v,x)。 160 10 可以看出 , 從子程序 g 中返回時(shí) , Digits 又被自動(dòng)地設(shè)成了原來(lái)的值 (10). 如果你需要自己定義一些具有這樣的特性的環(huán)境變量 , 也十分簡(jiǎn)單 —Maple會(huì)把一切以 _Env開(kāi)始的變量認(rèn)作是環(huán)境 變量 . 4 嵌套子程序和記憶表 嵌套子程序 很多情況下 , 可以在一個(gè)子程序的內(nèi)部定義另一個(gè)子程序 . 實(shí)際上 , 我們?cè)趯戇@樣的程序時(shí)常常沒(méi)有意識(shí)到它是嵌套子程序 . 用于對(duì)每一個(gè)元素操作的 map命令在嵌套程序設(shè)計(jì)中很有用 . 比如 , 編寫一個(gè)子程序 , 它返回有序表中的每一個(gè)元素都將被第一個(gè)元素除的結(jié)果 . nest:=proc(x::list) local v。 , E n ter in g f . D ig it s is 10 , N o w D ig its h as b ec o m e 20 g()。 print(Back in g from f, Digits is, Digits)。 print(Now Digits is, Digits)。 end: g:=proc() print(Entering g. Digits is, Digits)。 Digits:=20。 A t t h e b e g in n in g , [ % ] is 159 ,N o w [% ] is ???d 1 可以看出 , 盡管在子程序內(nèi)部 , 局部變量 a僅進(jìn)行一層求值 , 但指代 a+1的同上操作符卻進(jìn)行了完全求值 , 得到 d+1 的結(jié)果 . 環(huán)境變量 所謂環(huán)境變量就是從一個(gè)程序退出時(shí)系統(tǒng)自動(dòng)設(shè)置的全局變量。 print(Now [%] is,%)。 c:=d。 a:=b。 := q q 不管在交互式環(huán)境下還是在程序中 , Maple 對(duì)于每一個(gè)全局變量都進(jìn)行完全求值 , 除非它是數(shù)組、映射表或者子程序 . 對(duì)于數(shù)組、映射表和子程序 , Maple 采用賦值鏈中的上一名稱來(lái)求值 . 除了上面這些特殊數(shù)據(jù)對(duì)象及下面一個(gè)特例外 , 總結(jié)起來(lái) , Maple 對(duì)于子程序的參數(shù)進(jìn)行 0 層求值 , 對(duì)于局部變量進(jìn)行 1 層求值 , 而對(duì)于全局變量 , 則進(jìn)行完全求值 . 對(duì)于上面說(shuō)的求值規(guī)則 , 在 Maple 中還有個(gè)特例 , 就是“同上 ”操作符“%”需要引起注意 . 就其作用來(lái)說(shuō) , 它應(yīng)該屬于局部變量 . 在進(jìn)入一個(gè)子程序時(shí) , Maple 會(huì)自動(dòng)地把該子程序中的%設(shè)置成 NULL(空 ). 但是 , 對(duì)于這個(gè)“局部變量” , Maple 不遵循上面的規(guī)則 , 無(wú)論在那兒都會(huì)將其完全求值 . 我們下面通過(guò)一個(gè)例子說(shuō)明它在子程序中的求值機(jī)制: f:=proc() local a,b,c,d。)。 end: sqrt1(d,39。 b2 因?yàn)檫@次調(diào)用是在程序內(nèi)部 , 所以只進(jìn)行第一層求值 , 進(jìn)入 sqrt1 的參數(shù)值為 b. Maple 對(duì)于子程序的參數(shù) , 都只在調(diào)用之前進(jìn)行一次求值 , 而在子程序內(nèi)部出現(xiàn)的地方都用這次求值的結(jié)果替換 , 而不再重新進(jìn)行求值 . 如前所述之 sqrt1: sqrt1:=proc(x::anything,y::name) y:=x^2。 sqrt1(a,ans)。 a:=b。 c2 ans。ans39。 d2 ans。 ???b 1 這是因?yàn)?a 和 b 都是局部變量 , Maple 對(duì)于子程序中的局部變量只進(jìn)行一層的求值 . 下面 , 我們針對(duì)子程序中的不同的變量 , 系統(tǒng)介紹其求值機(jī)制 . 參數(shù) 子程序中的參數(shù) , 就是那些在 proc( )的括號(hào)中的變量 . 參數(shù)是一類特殊的變量 , 在調(diào)用子程序時(shí) , 會(huì)把它們替換成實(shí)際的參數(shù) . sqrt1:=proc(x::anything,y::name) y:=x^2。 a+1。 a:=b。 3 子程序求值 在 Maple 子程序中的語(yǔ)句 , 求值的方式和交互環(huán)境中的求值有所不同 , 這在某種程度上是為了提高子程序的執(zhí)行效率而考慮的 . 在交互式環(huán)境中 , Maple 對(duì)于一般的變量和表達(dá)式都進(jìn)行完全求值 (除了數(shù)組、映射表等數(shù)據(jù)結(jié)構(gòu)外 ). 比如先將 b 賦給 a, 再將 c賦給 b, 則最終 a 的值也指向 c.
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1