




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、i1.4.1 Ma the matica程序設計簡介(王積社)1.4.1.1 Mathematica 程序設計功能14111 模塊模塊,相當于C語言的子程序.即是把能夠實現一定的功能的一系列表 達式語句“集成”在一塊,稱之為一個模塊,從而使 Mathematica程序能更有效地工作,也使程序結構更 加清晰.另外,使用模塊,也可更 好地控制變量的屬性.一般情 況下,Mathematica假設所有 變量都為全局變量.實際上這 樣做可能會使程序不具有通用性 需要局部變量的功能,這需要用模塊來控制.Mathematica的模塊工作很簡單,在模塊中可定義它的局部變量,局部變量有唯一的名字,互不沖突,可有
2、效地保護模塊內外的每個變量的作用范圍常用模塊函數有:Module與Block,其格式見下表:Modulex,y,.,body具有局部變量x,y的模塊Modulex=xO,y=yO, body具有初始值的局部變量的模塊Blockx,y,. ,body運用局部值x,y,計算body,也可能在調用程序時陷入混亂狀態.于是就2Mathematica語句,多個語句之間用“;”間hp:= 1=10;Modulet, t = 8; PrinttPrinttBlockx=xO,y=yO, body 給 x,y,.賦初始值Body為執行體,包含合法的 隔,最后一個值為此模塊的值.分析下面的例子,注意區分Modu
3、le與Block的功能.輸入: t=10;Modulet,t=8;Pri nttPrin tt結果如右圖:可見模塊中的t為局部變量,它獨立于全局變量t (盡管模塊內部有語句“ t=8 ”且其Printt 輸出8,但是模塊外的Printt仍輸出10).再看Block例子,輸入:y=xA2+1Blockx=1,Pri nty計算結果如右圖:E局部變命說明ln1:- y xA2 * 1Block(x. 1Z PrintyJ1 + x2* A100% A 1|3可見在模塊Block中用局部變量x的值計算了全局變量y的值,于是如果希望把模塊中局部變量作為全局變 量使用時,可以用Block函數.然而在 M
4、odule中卻不能,見右圖結果:總之,Modulevars,body在執 行時要檢查模塊體 body,把其中出 現變量vats都看作是局部的;而infi:= y * xA2 + 1Modulex= l)r PrintyQut|1= 1 + XZl + x4Blockvats,body并不查看模塊體body的形式,而在整個計算Body的過程中, 只管使用vars的局部值.強調:在程序設計時,應該使程序中的各個部分盡可能地獨立,以使程序 易讀、易改、易維護,主要方法是設置具有一定作用域的變量,這就需要模 塊的功能.14112邏輯運算與:& exprl & expr2 & exprn計算expri,
5、直到其中有一個為假為止.或: | exprl | expr2 | exprn計算expri,直到其中有一個為真為止14113 一些特殊的賦值方式i+變量i加1i-變量i減1+i ,變量i先加1-i變量i先減1i+=dii加di-=dii減dx*=Cx乘以cx/=cx除以cx,y=y,x交換x和y值14114條件結構5常用的條件結構函數有:6If邏輯式,表達式1,表達式2 ,表達式3 lf邏輯式,表達式1 ,表達式2 lf邏輯表達式,表達式which條件1,表達式1,條件n,表達式nwhich條件1,表達式1,條件n,表達式n, Ture,表達式若邏輯式為真,則計算表達式1 ,否則計算表達式2
6、.若邏輯表達式非真非假,就計算表達式3若邏輯式為真,則計算表達式1 , 否則計算表達式2若邏輯式為真,則計算表達式, 否則此句值為空,相當于跳過此句.順次計算條件,計算對應的第一個為真的條 件的表達式的值,若條件都為假,則整個結 構的值為空順次計算條件,計算對應的第一個為真的條 件的表達式的值.若條件都為假,則計算最 后的表達式14115符號條件在Mathemahca中,有一種可能的情況就是所給出1 叩p If x =a, b的條件結果既不是真也不為假,請看右例:Out卩F If x = y, bln:- If i = YJbf c下面給出處理符號條件的函數.因x=x,故0Jt4- CMath
7、ematica給出結果為真:I眉:=If x = z, a, b0 jt 5= a14116循環結構1)Do循環.Do表達式,i,max增循環計算表達式,步長為從1增加到max7Do表達式,i,min,max,d循環計算表達式,步長為d,i從min增加到maxDo表達式, n 循環計算表達式n次Do表達式i., j.多重循環(前面的外重循環)2) While 與 For 循環在Mathematica程序中,Do是以結構方式進行循環的,然而有時你需要生成非結構循環,此時,運用函數 While和For是合適的.下面是 While和For函數的循環結構形式While條件,循環體只要條件為真,就重復計
8、算循環 體For初值,條件,修正循環變量, 循環體從初值開始,重復計算循環體和修正循環變量,直到條件假為止While是“當”循環,當條件滿足時,循環體一直進行,因此為了防止死 循環,在循環體中應包括命令能改變循環條件語句.While和For循環是在執行循環體前對循環條件進行測試,一旦測試結果8為假,就中止While和For循環.例:(1)用Do循環計算n!,輸入:m=1;n=10;Dom=m*k,k, n m計算結果見右圖.(2)用While循環計算n!,輸入:In 1S:= HL = 1;A = 10;Dom = mnOut 21= 3628800m=1; n=10;h 34- m 二 1;
9、IL = 10;Vhilen 0? JII = J) )I n-J) )IOutp7= 36288009Whil enO,m=m*n;n-inp8:= Form= 1; n = 1, ji i llf n+, m= *nmn計算結果見右圖.ir(3)用For循環計算n!,輸入:Form = 1; n 二 1, n 5, Break, k, 10計算結果為:t 1Dot = k; Print t ; Ift 5Z Break (k, 101126(2) 輸入:t=111Dot*二k;Pri ntt;lfk5,Co nti nue;t+=2,k,5計算結果為:I -i t -1Dot *= k;
10、Printt; Ifk5,Return5;t=xA3;Returnt-5)f10f2計算結果為:| I K J :- 0 f LxRe 1 m JL LJ J t - x ; : Ret Ui JL t)flf2Out 16)= 5ut(17)= 31.4.1.2 MATHEMATICS 設計中的幾個問題14121 程序的注釋為了增加程序的可讀性,常常需要在程序中加入一些用作解釋性的文字或與程 序執行無關的字符串,當我們用“(*注釋內容*)”將其括起來時,程序將不 執行它,并把它當作一個空格.14122程序執行的跟蹤12On名字:打開對這個函數或變量的跟蹤,對其每一次調用,它的參數,計算 結果
11、都將顯示.0n:打開對所有函數或變量的跟蹤.On Set:打開對賦值操作的跟蹤由于所有變量的值的改變都要通過它因此, 是最常用的跟蹤命令.*)Off:關閉跟蹤功能例如山訂N = 2工匸亡:On Kul 1 . Hqhu:”5: :ace : a, = 2. - Z - H空匸亡Out 二 214123程序調試的機制Mathematica中程序調試的機制比較復雜,初學者不議掌握,這里介紹兩種常用 的方法,其一是分段加注釋方法,把程序后面部分注釋,一段一段地調試,這種方法 需要讀者在實際中體會其二是用Trace.Trace的使用形式是Trace表達式,模式,這里的模式其過濾作用,得到的結 果是一個
12、表,表里留下的結果是表達式求值過程中與模式匹配的表達式,從中可以 找出求值過程中的錯誤,如用下面的輸入可以看到求值過程中的所有賦值: 例求解一元二次方程程序設計:13Modulev,w,a,b,c,Variabiesipoly給;v=Variablesxr1;出多項式 poly中獨立變量的列表w=xr1-xr2;(1)算法分析:設方程是ax3 bxdx2 e f (a - d = 0)的形式于是在執行程序時,需要分別輸入方程的兩邊(用表左邊,右邊保存輸 入結果),輸入后用一個模塊對所輸入的內容進行處理和求解,并把此模塊定義為 一個函數.模塊中,需要對方程進行整理、提取系數,再用求根公式進行求解
13、,然后返 回所求得結果.(2)程序框圖:定義解方程函數sxr_List 進入模塊定義局部變量 V:方程中的變量xW:整理后的方程表達式a: 二次項系數;b: 次項系數;c:常數項用函數Variables取出方程中的未知數x,賦予v整理方程:左邊-右邊,結果賦予w用函數Coefficient取出方程中二次項系數,賦予a 用函數Coefficient取出方程中一次項系數,賦予b 給w賦值0,得到常數項,賦予c用求根公式進行求解,并用Return函數返回所求得結果(3)程序設計:sxr_List:= (*輸入方程左邊,方程右邊*)? Coefficientexpr, form給出 了多項式expr中form的系數.?
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農副產品加工數字化轉型與創新模式-洞察闡釋
- 機器人驅動機理與傳動效率-洞察闡釋
- 基于用戶生成內容的用戶體驗優化與需求分析-洞察闡釋
- 鄭州澍青醫學高等專科學校《西方經濟學一》2023-2024學年第二學期期末試卷
- 內蒙古建筑職業技術學院《基礎俄語(三)》2023-2024學年第二學期期末試卷
- 貴州文化旅游職業學院《書法基礎1》2023-2024學年第二學期期末試卷
- 廣州康大職業技術學院《果樹學》2023-2024學年第二學期期末試卷
- 湖北生態工程職業技術學院《中國近代史文獻選讀》2023-2024學年第二學期期末試卷
- 貴州經貿職業技術學院《醫學綜合1(基礎到臨床)》2023-2024學年第二學期期末試卷
- 魔方題目大全圖片及答案
- 軍事博物館參觀感想專題培訓課件
- 徐凱文的心理創傷課:沖破內心的至暗時刻
- 西方看兵團:兵團國際形象的塑造
- 陶瓷廠通風除塵系統設計畢業設計論文
- GB/T 41837-2022溫泉服務溫泉水質要求
- GBZ(衛生) 49-2014職業性噪聲聾的診斷
- JJG 30-2012通用卡尺
- 2022年女性精致美學白皮書
- 文獻整理表格
- DBJ∕T 13-261-2017 福建省二次供水不銹鋼水池(箱)應用技術規程
- GB∕T 16422.3-2022 塑料 實驗室光源暴露試驗方法 第3部分:熒光紫外燈
評論
0/150
提交評論