版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Gauss系統(tǒng)介紹目錄1. 系統(tǒng)初步 2. 矩陣介紹 3. 矩陣運(yùn)算及其它運(yùn)算 4. Gauss程序控制 5. 過(guò)程與模塊化程序設(shè)計(jì) 6. 文件輸入輸出 7. Gauss圖形簡(jiǎn)介 8. 重要函數(shù)及語(yǔ)句分類(lèi)參考 Gauss系統(tǒng)是Aptech Systems公司出品的一個(gè)矩陣語(yǔ)言軟件包,它可以十分方便地編制矩陣計(jì)算程序,并內(nèi)建了許多矩陣運(yùn)算、概率統(tǒng)計(jì)函數(shù),還可以繪制印刷質(zhì)量的圖形。它可以在命令行交互計(jì)算,也可以編程計(jì)算,編程時(shí)具有通常的分支、循環(huán)、模塊化子程序等功能,并以矩陣為基本運(yùn)算單位。利用附加的模塊可以進(jìn)行經(jīng)濟(jì)財(cái)務(wù)分析、統(tǒng)計(jì)分析等等。我們主要用它來(lái)編制統(tǒng)計(jì)計(jì)算、模擬程序。它進(jìn)行矩陣運(yùn)算時(shí)速度
2、很快,甚至比編譯的C代碼還要快,這是因?yàn)樗捎昧藘?yōu)化的矩陣計(jì)算內(nèi)核。 Gauss系統(tǒng)有微機(jī)版本,也可以運(yùn)行于工作站等高檔機(jī)型。這里以DOS版Gauss v2.2為例說(shuō)明。 系統(tǒng)初步 在安裝好Gauss系統(tǒng)后,一般用一個(gè)批命令進(jìn)入Gauss系統(tǒng),比如說(shuō)是G0.BAT。進(jìn)入系統(tǒng)后,出現(xiàn)一個(gè)命令行的界面,命令提示為“”形狀。在命令提示下可以輸入Gauss語(yǔ)句。用Alt+H可以啟動(dòng)幫助系統(tǒng),在幫助系統(tǒng)內(nèi)按H鍵后輸入問(wèn)號(hào)然后回車(chē)可以得到一個(gè)幫助菜單。 為了退出Gauss系統(tǒng),可以在命令行發(fā)布SYSTEM命令,或者按ESC鍵并回答Y。 Gauss的基本計(jì)算單位是矩陣。定義標(biāo)量、向量、矩陣用等號(hào)賦值即可。例
3、如, a = 15.2;b1 = 1 2 3;b2 = 1, 2, 3;c = 1 2 3, 4 5 6, 7 8 9;name=My first Gauss program分別定義了標(biāo)量a、行向量b1、列向量b2、矩陣c、字符串標(biāo)量name。矩陣定義中一行的元素間用空格分隔,各列用逗號(hào)分隔。字符串兩邊用雙撇號(hào)包圍,不能用單撇號(hào)。 Gauss中除了字符串常量外不區(qū)分大小寫(xiě),所以變量名既可以用大寫(xiě),也可以用小寫(xiě)。語(yǔ)句以分號(hào)結(jié)束,但在命令行界面可以省略分號(hào)。 要顯示定義的變量的值,在命令行界面下只要鍵入變量名就可以顯示其值,例如 c 1.0000000 2.0000000 3.0000000 4.
4、0000000 5.0000000 6.0000000 7.0000000 8.0000000 9.0000000 顯示變量值的正規(guī)方法是使用PRINT語(yǔ)句,如“print c;”。 PRINT語(yǔ)句可以輸出幾項(xiàng),各項(xiàng)之間用空格分開(kāi),所以PRINT語(yǔ)句中如果有表達(dá)式,表達(dá)式中一定不能有空格。例如: print A = a b1 = b1A = 15.200000 b1 = 1.0000000 2.0000000 3.0000000有一些函數(shù)可以生成常見(jiàn)的向量和矩陣。 SEQA(start, step, length)可以產(chǎn)生從start開(kāi)始,按step遞增,長(zhǎng)度為length的等差數(shù)列列向量,如
5、seqa(1,2,4)產(chǎn)生元素為1、3、5、7的列向量。 SEQM(start, rate, length)可以產(chǎn)生從start開(kāi)始,每次乘以rate的長(zhǎng)度為length的等比數(shù)列列向量。 ZEROS(n,m)產(chǎn)生n行m列的元素全為零的矩陣。 ONES(n,m)產(chǎn)生n行m列的元素全為1的矩陣。 RNDU(n,m)產(chǎn)生n行m列的元素服從(0,1)均勻分布的偽隨機(jī)數(shù)矩陣。 RNDN(n,m)產(chǎn)生n行m列的元素服從標(biāo)準(zhǔn)正態(tài)分布的偽隨機(jī)數(shù)矩陣。 EYE(n)產(chǎn)生n階單位陣。 為了從鍵盤(pán)輸入一個(gè)矩陣,使用函數(shù)CON(n,m),其中n和m分別是要輸入的行數(shù)和列數(shù)。輸入時(shí)用空格、回車(chē)、逗號(hào)分隔輸入的數(shù)值。例
6、如:c2 = con(2,3)? 1 2 3 4? 5 6c21.0000000 2.0000000 3.00000004.0000000 5.0000000 6.0000000要輸入字符串,一般用如“s= CONS;PRINT;”的方法,其中s是用來(lái)存放輸入的字符串的變量。 矩陣可以直接進(jìn)行通常的矩陣運(yùn)算。例如, c1=1 2 3, 4 5 6; c2=3 2 1, 7 6 5; c3=c1+c2; c3;4.0000000 4.0000000 4.000000011.000000 11.000000 11.000000c4=1 2, 3 4;c5=c4*c3;c5;26.000000 26
7、.000000 26.00000056.000000 56.000000 56.000000矩陣X的轉(zhuǎn)置可以用X表示。 兩個(gè)矩陣X和Y橫向并接用XY表示。 矩陣X和Y縱向并接用X|Y表示。 為了解方程A X = B,只要寫(xiě)X = B/A即可,當(dāng)A為滿秩方陣時(shí)即聯(lián)立線性方程組求解, 當(dāng)A的行數(shù)大于列數(shù)時(shí)求的是最小二乘解。 矩陣與標(biāo)量可以進(jìn)行加減乘除運(yùn)算。 除了可以使用命令行界面直接輸入并運(yùn)行Gauss語(yǔ)句, 我們還可以編輯一個(gè)程序文件并運(yùn)行這個(gè)程序文件??梢灶A(yù)先編輯好一個(gè)程序文件,比如TEST.GSP,里面有如下程序行:x=1 2 3;y=4,5,6;print x y;把這個(gè)文件放在Gauss
8、的當(dāng)前目錄下,在Gauss命令行用RUN TEST.GSP命令就可以運(yùn)行這個(gè)程序文件。事實(shí)上, Gauss提供了一個(gè)內(nèi)建的程序編輯器,比如,在命令行用EDIT TEST.GSP就可以打開(kāi)TEST.GSP到Gauss的內(nèi)部編輯器中,如果原來(lái)沒(méi)有這個(gè)文件將生成一個(gè)新文件。編輯完畢按Alt+X出現(xiàn)一個(gè)選單,選W可以保存文件但不執(zhí)行,選R可以保存并運(yùn)行程序,并且運(yùn)行時(shí)帶有調(diào)試信息,可以顯示出錯(cuò)行號(hào)。在運(yùn)行了一個(gè)程序后按Ctrl+F1鍵就可以之間調(diào)入剛剛執(zhí)行的程序進(jìn)行修改。 矩陣介紹 Gauss系統(tǒng)提供了一個(gè)完整的以矩陣為基本運(yùn)算單位的程序設(shè)計(jì)語(yǔ)言。 Gauss是一種解釋性語(yǔ)言,但因?yàn)樗拿恳粋€(gè)操作都是
9、對(duì)矩陣進(jìn)行的,所以運(yùn)行速度很快。自己寫(xiě)程序時(shí)要盡量利用矩陣運(yùn)算而應(yīng)避免使用循環(huán)對(duì)單個(gè)元素運(yùn)算。 Gauss有矩陣和字符串兩種數(shù)據(jù)類(lèi)型。變量類(lèi)型不需要預(yù)先說(shuō)明。數(shù)據(jù)類(lèi)型、元素個(gè)數(shù)、矩陣形狀可以在運(yùn)行時(shí)改變??梢杂肈ECLARE語(yǔ)句聲明數(shù)據(jù)類(lèi)型。矩陣元素允許為字符串,字符矩陣的元素最多存儲(chǔ)8個(gè)字符。 Gauss的矩陣是按行存儲(chǔ)的。矩陣元素都以IEEE 8字節(jié)雙精度浮點(diǎn)數(shù)格式存在內(nèi)存中,稱為“長(zhǎng)實(shí)數(shù)”,有效位數(shù)有1516位,絕對(duì)值范圍在4.19E-307到1.67E308。 Gauss計(jì)算由表達(dá)式完成。表達(dá)式是用運(yùn)算符連接起來(lái)的常數(shù)、矩陣、字符串、函數(shù)或過(guò)程調(diào)用。 Gauss程序由語(yǔ)句構(gòu)成,語(yǔ)句以分
10、號(hào)結(jié)尾。 上一節(jié)我們已經(jīng)看到了矩陣賦值的一些辦法。矩陣賦值還有一些靈活的方法,如: let x2,2 = 1 2 3 4;結(jié)果得到方陣x,第一行為1 2,第二行為3 4。 let x2,3 = 1;結(jié)果得到一個(gè)元素全為1的2行3列方陣。 let x2,3;結(jié)果得到一個(gè)元素全為0的2行3列方陣。 LET語(yǔ)句用來(lái)對(duì)矩陣賦值,但右邊只能是一些常數(shù)而不能是計(jì)算表達(dá)式。為了計(jì)算,省略LET并用和|連接行列,例如: x (1/3) (1+1/4) | 3 4;用RESHAPE函數(shù)可以改變一個(gè)矩陣的形狀。例如, x = reshape(seqa(1,1,12), 3, 4);把原始的列向量改成了3行4列矩陣
11、:1.0000000 2.0000000 3.0000000 4.00000005.0000000 6.0000000 7.0000000 8.00000009.0000000 10.000000 11.000000 12.000000可以很方便地得到矩陣的子陣。例如, x2,3為第2行第三列元素, x1, .為x的第一行, x., 2為x的第二列, x1 3,2 4為x的第1、3行和第2、4列組成的子陣(注意方括號(hào)中不允許有多余的空格): x1 3,2 4;2.0000000 4.000000010.000000 12.000000下標(biāo)可以用冒號(hào)表示一個(gè)范圍,比如 x1 3,2:4;2.00
12、00000 3.0000000 4.000000010.000000 11.000000 12.000000矩陣運(yùn)算及其它運(yùn)算 Gauss提供了豐富的運(yùn)算符來(lái)進(jìn)行矩陣運(yùn)算和字符串操作。矩陣運(yùn)算除了一般線性代數(shù)中的運(yùn)算外還有一些針對(duì)元素的運(yùn)算,為此定義兩個(gè)矩陣X和Y是元素匹配(ExE conformable)的,如果X和Y為圖 1情況之一。 元素運(yùn)算為對(duì)應(yīng)行、列元素的運(yùn)算,如果行、列中只有一項(xiàng)是匹配的則只對(duì)這一項(xiàng)匹配運(yùn)算,例如:上面的各運(yùn)算交換后仍是匹配的。 Gauss的矩陣運(yùn)算包括: +加法。要求兩矩陣元素匹配。 減法。要求兩矩陣元素匹配。 *矩陣乘法或數(shù)乘。要求為mk陣乘以kn陣,或者兩矩陣
13、之一為標(biāo)量。 /標(biāo)量除或解線性方程組或最小二乘。 x = b / A中如果A和b均為標(biāo)量則為標(biāo)量除法;如果A和b之一為標(biāo)量則x為元素與標(biāo)量分別相處得到的矩陣。如果A為方陣, b為與A階數(shù)相同的列向量,則b / A用三角分解方法解線性方程組A x = b。如果A非方陣,與b行數(shù)相同,則求最小二乘解。 %求余數(shù)運(yùn)算。要求兩矩陣元素匹配。對(duì)非整數(shù)先四舍五入。 !階乘。比如y= x!對(duì)x的每個(gè)元素求階乘。非整數(shù)先四舍五入。 .*元素間乘積。要求兩矩陣元素匹配。 ./元素間相除。要求兩矩陣元素匹配。 元素間乘方。當(dāng)?shù)讛?shù)為負(fù)數(shù)時(shí)指數(shù)必須取整數(shù)。 .與“”等價(jià)。 .*. Kronecker積。 z = x
14、.*. y使x的每個(gè)元素的位置擴(kuò)大為此元素乘以y的結(jié)果。比如 *水平直積。計(jì)算x * y, x與y必須有相同行數(shù),結(jié)果行數(shù)不變而列數(shù)為x的列數(shù)與y的列數(shù)的乘積。比如 轉(zhuǎn)置。 x為x的轉(zhuǎn)置。 |垂直連接。比如 水平連接。比如 Gauss提供的比較運(yùn)算符包括: .= 或 .EQ兩矩陣元素間相等的比較,要求兩矩陣元素相配,比較結(jié)果為元素取01值的矩陣。 ./= 或 .NE 或 .$/= 兩矩陣元素間不等的比較。 . 或 .LT 或 .$ 兩矩陣元素間小于關(guān)系比較。 .= 或 .LE 或 .$ 或 .GT 或 .$G 兩矩陣元素間大于關(guān)系比較。 .= 或 .GE 或 .$= 兩矩陣元素間大于等于關(guān)系比
15、較。 如果上面的比較算符中沒(méi)有點(diǎn)則比較結(jié)果為標(biāo)量結(jié)果,用于比較兩個(gè)標(biāo)量,如果比較兩個(gè)矩陣,則元素間所有比較結(jié)果都為真時(shí)才為真,否則為假。 Gauss提供的邏輯運(yùn)算符有: NOT x x的否。 x AND y x和y都成立時(shí)才為真。 x OR y x和y只要有一個(gè)為真則結(jié)果為真。 x XOR y x和y的異或。 x EQV y x和y的等價(jià)。 上面的邏輯運(yùn)算為標(biāo)量運(yùn)算, x和y應(yīng)為標(biāo)量。邏輯運(yùn)算也可以在兩個(gè)矩陣的元素之間進(jìn)行,只要在運(yùn)算符前加點(diǎn),如 .AND, .OR。 其它運(yùn)算符還有: 賦值:如y=x1; 逗號(hào):用作分隔符,比如 clear x, y, z;y = x3,5y=momentd(
16、x,d); 句點(diǎn):在下標(biāo)處代表“所有行”或“所有列”,例如 y=x.,5; /* 表示x的第5列所有行的元素組成的列向量 */ 空格:用來(lái)分開(kāi)下標(biāo),例如: y=x1 3 5, 3 7; 冒號(hào):在下標(biāo)處表示連續(xù)的下標(biāo)范圍,如: y=x1:5,.; /* x的第一到第五行 */ &:取過(guò)程指針。 $+:字符串連接。 x $+ y當(dāng)x是字符串時(shí)結(jié)果為x和y連接的結(jié)果,當(dāng)x是字符矩陣時(shí)結(jié)果為連接的字符矩陣。 :字符串宏替換。例如: dset = olsdat;vnames = age,pay,sex;create f1 = dset with vname, 0, 2;結(jié)果等效于在create語(yǔ)句中直接
17、寫(xiě)入字符串變量的值。 Gauss程序控制 由于采用了矩陣作為基本運(yùn)算單元,所以Gauss程序經(jīng)常用順序結(jié)構(gòu)就可以完成任務(wù)。比如,要解方程組只要用以下四個(gè)語(yǔ)句:A = 2 3,3 7;b = 9,11;x = b/A;print x;結(jié)果得到:6.0000000-1.0000000但是,對(duì)于比較復(fù)雜的問(wèn)題,我們不可避免地要使用分支、循環(huán)等運(yùn)算結(jié)構(gòu)。 Gauss提供了這些程序控制結(jié)構(gòu),但是我們?cè)俅翁嵝炎x者, Gauss是一個(gè)基于矩陣的語(yǔ)言,我們應(yīng)該盡可能基于矩陣運(yùn)算去實(shí)現(xiàn)算法。 Gauss分支結(jié)構(gòu)使用IF-ELSEIF-ELSE-ENDIF結(jié)構(gòu),格式為:IF 標(biāo)量表達(dá)式;(語(yǔ)句組)ELSEIF 標(biāo)
18、量表達(dá)式;(語(yǔ)句組)ELSE;(語(yǔ)句組)ENDIF;其中各判斷條件應(yīng)為標(biāo)量表達(dá)式,不允許是矩陣。標(biāo)量值為非零時(shí)表示真值,為零時(shí)表示假值。 “語(yǔ)句組”可以是一個(gè)或多個(gè)語(yǔ)句,每個(gè)語(yǔ)句以分號(hào)結(jié)尾。注意Gauss的IF結(jié)構(gòu)不使用THEN關(guān)鍵字。 Gauss的循環(huán)結(jié)構(gòu)為DO WHILE和DO UNTIL結(jié)構(gòu),沒(méi)有計(jì)次循環(huán)結(jié)構(gòu)。格式為:DO WHILE 標(biāo)量表達(dá)式;(語(yǔ)句組)ENDO;和DO UNTIL 標(biāo)量表達(dá)式;(語(yǔ)句組)ENDO;要注意其結(jié)束語(yǔ)句是ENDO而不是ENDDO。為了從循環(huán)中退出可以用BREAK語(yǔ)句。在循環(huán)中執(zhí)行CONTINUE語(yǔ)句可以忽略循環(huán)體內(nèi)后面的語(yǔ)句而返回到判斷條件處繼續(xù)執(zhí)行。 G
19、auss也提供了GOTO語(yǔ)句,格式為:“GOTO 標(biāo)號(hào);”,其中標(biāo)號(hào)為一個(gè)普通的Gauss名字,在定義時(shí)尾隨一個(gè)冒號(hào),引用時(shí)不寫(xiě)冒號(hào),例如:goto errout;errout:Gauss可以在程序中加注釋?zhuān)?*和*/包圍,或用和包圍起來(lái)。 Gauss的符號(hào)名(變量名、過(guò)程名、標(biāo)號(hào)名等)要求由字母、數(shù)字、下劃線組成,第一個(gè)字符只能是字母或下劃線,最多8個(gè)字符。 為了在程序運(yùn)行時(shí)提供調(diào)試信息,可以在程序文件開(kāi)頭加上一個(gè)“#lineson;”語(yǔ)句。這樣出錯(cuò)時(shí)可以顯示出錯(cuò)的行號(hào)。 過(guò)程與模塊化程序設(shè)計(jì) 作為一個(gè)程序設(shè)計(jì)語(yǔ)言Gauss也提供了模塊化的過(guò)程,可以實(shí)現(xiàn)模塊化程序設(shè)計(jì)。過(guò)程中可以使用局部變
20、量,也可以引用外部的全局變量,并可以遞歸調(diào)用。 Gauss使用用戶自己編寫(xiě)的過(guò)程與使用內(nèi)部過(guò)程一樣方便。 Gauss提供了一種單行函數(shù)定義可以很方便地把一個(gè)公式定義為一個(gè)函數(shù),例如:fn area(r) = 2*pi*r*r;定義了面積函數(shù),調(diào)用時(shí)只要用如“a=area(4);”。 過(guò)程可以使用復(fù)雜的程序邏輯,可以返回零到多個(gè)值,定義格式如下:PROC 返回值個(gè)數(shù)過(guò)程名(參數(shù)1,參數(shù)2, ,參數(shù)N);LOCAL 語(yǔ)句;(語(yǔ)句組)RETP(表達(dá)式1, ,表達(dá)式N);ENDP;其中內(nèi)的內(nèi)容表示是可選的。當(dāng)返回值個(gè)數(shù)為1個(gè)時(shí)可以省略“返回值個(gè)數(shù)”的說(shuō)明。當(dāng)沒(méi)有參數(shù)時(shí)可以省略括號(hào)。沒(méi)有返回值時(shí)要說(shuō)明“
21、(0)= ”即返回值個(gè)數(shù)為0,可以省略RETP語(yǔ)句。過(guò)程的調(diào)用格式為:返回值1, ,返回值N= 過(guò)程名(參數(shù)1,參數(shù)2, ,參數(shù)N);或CALL 過(guò)程名(參數(shù)1,參數(shù)2, ,參數(shù)N);使用CALL語(yǔ)句時(shí)無(wú)返回值或者忽略返回值。 例如,下面的過(guò)程計(jì)算回歸分析:/* regress* Input:* x - design matrix* y - dependent variable* Output:* b - regression coefficients* sd - standard deviation* t - t variable for every coefficient*/PROC (3
22、)=regress(x, y);LOCAL xxi, b, ymxb, sse, sd, t;xxi = invpd(xx);b = xxi*(xy);ymxb = y - x*b;sse = ymxb*ymxb/(rows(x)-cols(x);sd = sqrt(diag(sse*xxi);t = b ./ sd;retp(b, sd, t);ENDP;調(diào)用可用如b, sd, t = regress(x, y);或call regress(x, y);使用CALL調(diào)用時(shí)忽略返回值。 在過(guò)程內(nèi)使用的變量是局部變量,必須用LOCALS語(yǔ)句說(shuō)明,對(duì)變量不必說(shuō)明類(lèi)型,對(duì)過(guò)程名應(yīng)說(shuō)明為PROC,單行
23、函數(shù)說(shuō)明為FN,例如:locals x, y, f:proc, g:fn;其中x,y是變量, f是過(guò)程, g是單行函數(shù)。 過(guò)程內(nèi)可以使用全局變量,有兩種全局變量,一種是所有在主程序中使用的變量(即在所有過(guò)程外部定義的變量),例如:g_x = 1;call sub1;proc (0)=sub1;print in sub1;print global g_x = g_x;endp;結(jié)果為:in sub1global g_x = 1.0000000我們注意到,這種用法很方便,但是也不利于程序調(diào)試(數(shù)據(jù)隱藏不夠)。使用Gauss變較大的程序可能出現(xiàn)的一個(gè)問(wèn)題就是在過(guò)程中無(wú)意中使用了主程序中的變量名而造成
24、不易發(fā)現(xiàn)的錯(cuò)誤。 另一種全局變量在過(guò)程中使用DECLARE語(yǔ)句來(lái)聲明,聲明的變量可以在其它過(guò)程中使用。例如:call sub1;proc (0)=sub1;declare g_x != 0;g_x = 1;call sub2;endp;proc (0)=sub2;print in sub2;print global g_x = g_x;endp;DECLARE語(yǔ)句中的!=表示賦初值,并且不論變量是否已初始化。如果改成?=則表示原來(lái)未初始化則按給定值初始化,如果已經(jīng)初始化則不動(dòng)。如果改成=則表示如果未初始化則初始化,如果已初始化則為重復(fù)定義錯(cuò)誤。不寫(xiě)初值表示=0初始化。 過(guò)程也可以作為參數(shù)傳遞給
25、另一個(gè)過(guò)程,例如我們有一個(gè)二分法解方程的過(guò)程binsolv:proc binsolv(&f, a, b, ascend);/* f(x)是一個(gè)單調(diào)函數(shù),* f(a)和f(b)符號(hào)相反,* ascend=1表示增函數(shù),* =0表示減函數(shù)* 解c應(yīng)該在a和b之間* 返回解.*/local f:proc, a, b, ascend;local c, tol;tol=1E-6;if(ascend);do until (b-a0); /* x應(yīng)該在c的左邊 */b=c;else;a=c;endif;endo;else;do until (b-a0); /* x應(yīng)該在c的右邊 */a=c;else;b=c
26、;endif;endo;endif;retp(c);endp;例如,我們要求函數(shù)f(x)= x2在0到5之間的解,可以用如下程序(寫(xiě)在上面的程序上面,或把上面的過(guò)程單獨(dú)存為文件BINSOLV.G放在GAUSS的搜索路徑中。 x = binsolv(&xsq, 0, 5, 1);print x;end;proc xsq(x);retp(x2 - 1);endp;但是,實(shí)際中我們要求解的函數(shù)經(jīng)常是不止一個(gè)參數(shù)的,比如我們想利用t分布的分布函數(shù)來(lái)求t分布的分位數(shù),但t分布函數(shù)有第二個(gè)參數(shù)即自由度。這樣的問(wèn)題需要定義一個(gè)輔助函數(shù),這個(gè)輔助函數(shù)只有一個(gè)自變量,自由度通過(guò)全局變量來(lái)傳送。例如,下面的程序演
27、示了如何調(diào)用binsolv過(guò)程編寫(xiě)一個(gè)求t分布分位數(shù)的過(guò)程以及示例:q = con(1,1);x = tinv(q, 10);print tinv q x;end;proc tinv(q, n);/* tinv計(jì)算n個(gè)自由度的t分布的q分位數(shù)*/declare tinv_n != 0;declare tinv_q1 != 0;tinv_n = n;tinv_q1 = 1-q;retp(binsolv(&futil, -10, 10, 0);endp;proc futil(x);retp(cdftc(x, tinv_n)-tinv_q1);endp;其中定義了輔助性的函數(shù)futil,它依賴于函數(shù)
28、tinv中定義的兩個(gè)全局變量tinv_n和tinv_q1。因?yàn)镚auss中沒(méi)有給t分布函數(shù)而只是給了t分布的尾概率函數(shù)(即1減分布函數(shù)),所以我們?cè)趂util中給的方程是解尾概率等于1q。 甚至可以把過(guò)程指針組合成一個(gè)向量,例如:procvev = &f1 &f2 &f3 f4;proc g(x, i);local f;f = procveci;local f:proc;retp(f(x);endp;Gauss提供了很方便的模塊化功能,其中一種是可以把一個(gè)過(guò)程放在一個(gè)單獨(dú)的與過(guò)程同名并用.G作為擴(kuò)展名的文件中,則程序執(zhí)行時(shí)如果找不到某個(gè)過(guò)程自動(dòng)查找與過(guò)程同名的.G文件??梢远x一個(gè)GAUSSP
29、ATH環(huán)境變量來(lái)設(shè)置從哪些地方尋找過(guò)程。還可以把多個(gè)過(guò)程組合為一個(gè)“庫(kù)文件”,一般為.ARC文件,并在一個(gè).LIB文件中加以說(shuō)明,可以參考Gauss系統(tǒng)附帶的gauss.lib等文件。 Gauss可以把程序編譯成字節(jié)碼形式以加速運(yùn)行。在命令行狀態(tài)用COMPILE 文件名;命令可以把一個(gè)文件中的程序編譯為字節(jié)碼,結(jié)果存在“文件名.GCC”(Gauss v2.1)或“文件名.G32”(Gauss v2.2)中。 文件輸入輸出 Gauss可以很容易地讀寫(xiě)文本文件,也可以使用專(zhuān)用二進(jìn)制格式的Gauss數(shù)據(jù)集。這里我們只講文本文件的讀寫(xiě)。 可以用LOAD語(yǔ)句讀入一個(gè)用空格或逗號(hào)分隔數(shù)據(jù)項(xiàng)的文本文件,格式
30、為:LOAD 向量名文件名;或LOAD 矩陣名行數(shù),列數(shù) 文件名;第一種格式讀入所有數(shù)據(jù)到一個(gè)向量,適用于未知數(shù)據(jù)個(gè)數(shù)的情況,第二種格式讀入給定的行、列數(shù)的數(shù)據(jù)項(xiàng)到一個(gè)矩陣。例如:file1 = c:gaussdat1.txt;load x=file1;n = rows(x)/5;if int(n) eq n;x = reshape(x, n, 5);elses;errorlog Read Error;end;endif;上程序從一個(gè)文件中讀入一個(gè)5列的矩陣,行數(shù)未知。注意文件名是直接寫(xiě)的,比如讀入當(dāng)前目錄下的dat2.txt只要用:load x=dat2.txt;所以如果文件名存在變量中就要
31、使用宏替換。文件名字符串中的反斜杠要用兩個(gè)。 ERRORLOG語(yǔ)句在錯(cuò)誤記錄文件中寫(xiě)入一個(gè)字符串。 END語(yǔ)句結(jié)束程序運(yùn)行。 如果已知行數(shù),則可以用如:load x100,5=dat2.txt;在一個(gè)文件中可以放置多個(gè)項(xiàng),比如,我們?cè)谖募癲at3.txt”中放置了樣本個(gè)數(shù)n、n行3列個(gè)樣本觀測(cè)、檢驗(yàn)水平alpha,就可以用如下程序分別讀入:load inf=dat3.txt;n=inf1;x = reshape(inf2:3*n+1, n, 3);alpha=inf3*n+2;print n x alpha;要寫(xiě)一個(gè)文本文件也很簡(jiǎn)單,只要用OUTPUT FILE=文件名 RESET;語(yǔ)句就可
32、以打開(kāi)一個(gè)文件并從頭開(kāi)始寫(xiě),這時(shí)用PRINT語(yǔ)句輸出的結(jié)果在顯示到屏幕的同時(shí)被輸出到指定的文件。如果上面的RESET改為ON,則輸出是附加在指定文件末尾。為了關(guān)閉屏幕輸出,用SCREEN OFF;語(yǔ)句。再打開(kāi)用“SCREEN ON”語(yǔ)句。也可以暫時(shí)關(guān)閉文件輸出,用:OUTPUT OFF;語(yǔ)句?;謴?fù)用“OUTPUT ON”語(yǔ)句。 Gauss圖形簡(jiǎn)介 Gauss系統(tǒng)有很好的圖形功能,可以繪制印刷質(zhì)量的圖形,可以直接打印? ? 或存為HP-GL格式文件。可以精確規(guī)定圖形區(qū)域大小? ? 可以分窗口顯示。在使用繪圖過(guò)程之前要加兩個(gè)語(yǔ)句:library pgraph;graphset;為了畫(huà)連線圖,使用X
33、Y(x,y);例如x = seqa(0,1,101)*2*pi/100;y = (sin(x)+1)2;xy(x,y);圖形函數(shù)包括: BAR 條形圖 DRAW 用全局變量控制繪圖 HIST 直方圖 HISTP 百分比直方圖 HISTF 由頻度向量畫(huà)直方圖 LOGLOG 兩個(gè)坐標(biāo)軸都用對(duì)數(shù)刻度的二維圖 LOGX 只有X軸用對(duì)數(shù)刻度的二維圖 LOGY 只有Y軸用對(duì)數(shù)刻度的二維圖 POLAR 極坐標(biāo)系作圖 SURFACE 曲面圖 XY 二維圖(散點(diǎn)或曲線) XYZ 三維(曲線)圖 重要函數(shù)及語(yǔ)句分類(lèi)參考 1. 數(shù)學(xué)函數(shù) 一、一般函數(shù)ABS SQRT EXP LN(自然對(duì)數(shù)) LOG(x)(常用對(duì)數(shù)
34、)PI SIN COS TAN ARCSIN ARCCOS ATAN ATAN2 SINH COSH TANHBESSELJ(第一類(lèi)Bessel函數(shù)) BESSSELY(第二類(lèi)Bessel函數(shù)) GAMMA LNFACT(X)=LN(X!)二、微積分GRADP=HESSP=INTGRAT2=INTGRAT3=INTQUAD2=INTQUAD3=INTSIMP (用Simpson方法積分)三、線性代數(shù)1. 特征值分解EIGCG EIGCG2 EIGCH EIGCH2 EIGRG EIGRG2 EIGRS EIGRS2其中字母C代表復(fù)數(shù), R代表實(shí)數(shù), G表示通用, H表示Hermitian, S
35、表示對(duì)稱, 2表示加算特征向量。 2. 矩陣分解CHOL:Cholesky 分解,對(duì)正定陣x0分解x=yy, y為上三角陣CROUT, CROUTP:A=LU, L為上三角, U為下三角且主對(duì)角線元素都為1QR, QR1, QR2:A=QR, Q正交(酉), R為非奇異上三角SVD, SVD1, SVD2:奇異值分解NULL, NULL1, ORTH, ORTHGS:正交基計(jì)算INV, INVPD(用于對(duì)稱正定陣):求逆SOLPD:解Ax=b, A0/:解線性方程組或求最小二乘DET, DETL(已進(jìn)行矩陣分解后用), COND:行列式,條件數(shù)四、多項(xiàng)式運(yùn)算POLYROOT:求復(fù)根POLYEV
36、AL:計(jì)算多項(xiàng)式的函數(shù)值POLYMAKE:根據(jù)多項(xiàng)式的實(shí)根求系數(shù)POLYMULT:多項(xiàng)式乘法POLYINT:多項(xiàng)式差值POLYMAT:返回各階冪次的值POLYCHAR:特征多項(xiàng)式五、Fourier變換CFFT, CFFTI, DCFFT, DCFFTI, FFT, FFTI:帶I表示反變換,帶C表示復(fù)數(shù)序列輸入,帶D表示不用快速Fourier變換。 六、復(fù)數(shù)運(yùn)算COMPLEX, COMPLEX2:實(shí)型轉(zhuǎn)復(fù)型REAL, IMAG:取實(shí)部、虛部CMTRANS:共軛轉(zhuǎn)置CMADD, CMSUB, CMMULT, CMDIV:復(fù)矩陣加減乘除CMINV:復(fù)矩陣求逆CMSOLN:解復(fù)線性方程組七、統(tǒng)計(jì)函數(shù)
37、MEANC, MEDIAN, STDC:列均值、中位數(shù)、標(biāo)準(zhǔn)差MOMENT,VCX, VCM, CORRM, CORRVC, CORRX:計(jì)算矩陣的叉積陣、協(xié)方差陣、相關(guān)陣MOMENTD, OLS, OLSQR, OLSQR2:計(jì)算數(shù)據(jù)集的回歸八、統(tǒng)計(jì)分布CDFN(正態(tài)), CDFNC(正態(tài)上側(cè)), CDFBVN(二維正態(tài)), CDFTVN(三維正態(tài))PDFN(標(biāo)準(zhǔn)正態(tài)密度), ERF(為), ERFC(1ERF)CDFTC(t上側(cè)), CDFTNC(非中心t), CDFCHIC(上側(cè)), CDFCHINC(非中心)CDFFC(F上側(cè)), CDFFNC(非中心F)CDFGAM, CDFBETA
38、:Gamma分布和Beta分布函數(shù)九、序列SEQA(算術(shù)級(jí)數(shù)), SEQM(幾何級(jí)數(shù))RECSERCP(有乘運(yùn)算的遞歸序列), RECSERRC(有除運(yùn)算的遞歸序列)RECSERAR(自回歸遞歸序列), 十、精度控制BASE10(科學(xué)科學(xué)記數(shù)法), CEIL, FLOOR, ROUND, TRUNC, PRCSN2. 矩陣操作 一、矩陣生成EDITM(矩陣鍵盤(pán)錄入), LET(矩陣賦值)EYE(單位陣), ONES(全1矩陣), ZEROS(全零矩陣)二、讀/寫(xiě)矩陣LOADD(讀入數(shù)據(jù)集), LOAD或LOADM(讀入文本文件或矩陣文件中數(shù)據(jù))SAVE(保存矩陣、過(guò)程等), SAVED(存入數(shù)
39、據(jù)集)三、大小、序、范圍ROWS, COLS 求矩陣行數(shù)、列數(shù)ROWSF, COLSF 求打開(kāi)的數(shù)據(jù)集的行、列數(shù)MAXC, MAXINDC, MINC, MININDC 每列最大值,最大值所在行號(hào),最小值及所在行SUMC, PRODC 列的和、積CUMSUMC, CUMPRODC 列的累加、累乘RANKINDX 向量排序的秩得分向量COUNTS 向量落入各區(qū)間的頻數(shù)COUNTWTS 帶權(quán)重的頻數(shù)INDEXCAT 向量值落入某區(qū)間的下標(biāo)集合四、其他矩陣操作SUBMAT 按行、列取出子矩陣 RESHAPE 有已有矩陣產(chǎn)生形狀(行、列數(shù))不同的矩陣DELIF 有條件地刪去矩陣的某些行 SELIF 有
40、條件地保留行 TRIMR 去掉矩陣頂、底的若干行 EXCTSMPL 產(chǎn)生數(shù)據(jù)集的有放回的隨機(jī)子樣VEC 矩陣按列拉直 VECR 矩陣按行拉直 VECH 對(duì)稱陣上三角的行拉直 XPND 向量還原成對(duì)稱陣 DIAG 取矩陣主對(duì)角線 DIAGRV 替換矩陣主對(duì)角線LOWMAT, UPMAT, LOWMAT1, UPMAT1 從矩陣中取出下/上三角陣(其它處填0),帶1時(shí)主對(duì)角線置1UNION 向量并(兩向量中元素的并集) INTERSECT 交集 SETDIF 差集REV 矩陣行次序顛倒 ROTATER 行中元素推移排列(旋轉(zhuǎn)) SHIFTR 行元素左右平移并以規(guī)定值填充空出的位置3. 數(shù)據(jù)管理 一
41、、數(shù)據(jù)集LOADD 讀入小的數(shù)據(jù)集 SAVED 存小的數(shù)據(jù)集 用ATOG.EXE程序轉(zhuǎn)換大的數(shù)據(jù)文件CREATE 生成并打開(kāi)數(shù)據(jù)集 OPEN 打開(kāi)已有數(shù)據(jù)集 READR 讀入一些行 WRITER 寫(xiě)出一些行 SEEKR 定位于數(shù)據(jù)集某行 EOF 判斷是否數(shù)據(jù)集末尾 TYPEF 判斷數(shù)據(jù)集數(shù)據(jù)類(lèi)型(2, 4或8字節(jié)) CLOSE, CLOSEALL 關(guān)閉數(shù)據(jù)集二、數(shù)據(jù)集的變量名GETNAME 找到數(shù)據(jù)集中所有變量(列)的名字 INDICES 數(shù)據(jù)集的列號(hào)與變量名互求 INDICES2 類(lèi)似INDICES但區(qū)分自變量與因變量 VARTYPPE 由變量名決定數(shù)值型(1)還是字符型(0),數(shù)值型變量用
42、大寫(xiě)名字,字符型變量用小寫(xiě)名字SETVARS 把數(shù)據(jù)集中所有變量名引入并賦標(biāo)量零 MAKEVARS 從數(shù)據(jù)集中取出列成為向量 MERGEVARS 把列向量并成大的矩陣INDCV 從某字符向量找出某些短字符串的位置(下標(biāo)) INDNV 從數(shù)值型向量中找出某些數(shù)的位置三、數(shù)據(jù)變換CODE 按一系列判斷條件把向量?jī)?nèi)的數(shù)據(jù)離散化(變成分級(jí)數(shù)據(jù)) RECODE 類(lèi)似CODE,但若每一條件都不滿足時(shí)原數(shù)據(jù)值不變 SUBSCAT 用上升的分組區(qū)間來(lái)離散化向量的值 SUBSTUTE 與RECODE類(lèi)似但對(duì)矩陣進(jìn)行ISMISS 判斷一個(gè)矩陣內(nèi)有無(wú)缺失值 SCALMISS 判斷一標(biāo)量是否取缺失值 MISS 把給定
43、值換成缺失值 MISSRV 把缺失值換成給定值 MISSEX 按判斷條件決定缺失值 PACKR 刪除包含缺失值的行 MSYM 確定缺失值的打印符號(hào)DUMMY, DUMMYBR, DUMMYDN 由整值列向量生成01設(shè)計(jì)陣,每個(gè)數(shù)對(duì)應(yīng)1所在的列號(hào)四、排序與合并SORTC 矩陣按數(shù)值列排序 SORTHC 堆法排序 SORTIND 按數(shù)值向量排序后的序號(hào)向量SSORTCC, SORTHCC 矩陣按字符列排序 SORTINDC 字符向量的排序序號(hào)向量SORTMC 矩陣按多個(gè)列排序(數(shù)字、字符型)UNIQUE 從向量中刪除重復(fù)項(xiàng) UNIQINDX 向量排序后無(wú)重復(fù)的序號(hào),數(shù)值型、字符型均可INTRLEA
44、VE 兩個(gè)小的按同一變量排好序的數(shù)據(jù)集行交疊地組成大的有序數(shù)據(jù)集MERGEBY 兩個(gè)小的有同一變量且按此變量排好序的數(shù)據(jù)集行并接得到的大的數(shù)據(jù)集4. 程序控制 一、開(kāi)始及結(jié)束END, PAUSE(暫停指定的時(shí)間), RUN, STOP, SYSTEM(退出到DOS) END(停止運(yùn)行并關(guān)閉所有打開(kāi)的文件, STOP不關(guān)閉)二、分支IF ELSEIF ELSE ENDIFGOTO, POP(彈出GOTO的變量)三、循環(huán)DO WHILE ENDODO UNTIL ENDOBREAK, CONTINUE四、子程序GOSUB, POP(彈出GOSUB的參數(shù)), RETURN五、過(guò)程PROC, LOCAL, RETP, ENDP六、庫(kù)LIBRARY(列出活動(dòng)庫(kù)文件表) DECLARE(編譯時(shí)初始化變量) EXTERNAL(外部符號(hào)引用說(shuō)明)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《酒店新員工培訓(xùn)》課件
- 《教育本質(zhì)》課件
- 《詞類(lèi)句子成分》課件
- 急性風(fēng)濕熱的健康宣教
- 兒童牙病的健康宣教
- 垂體性閉經(jīng)的健康宣教
- 孕期水樣分泌物的健康宣教
- 《例解決問(wèn)題》課件
- 武漢大學(xué)金融工程學(xué)課件-金融工程
- 腎上腺髓質(zhì)增生的臨床護(hù)理
- 2024內(nèi)蒙古財(cái)經(jīng)大學(xué)輔導(dǎo)員公開(kāi)招聘(列編招聘)3人及歷年高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 車(chē)站信號(hào)工高級(jí)題庫(kù)
- 2024兒童青少年抑郁治療與康復(fù)痛點(diǎn)調(diào)研報(bào)告
- 云南省保山市(2024年-2025年小學(xué)三年級(jí)語(yǔ)文)人教版期末考試(上學(xué)期)試卷(含答案)
- 2024年全國(guó)職業(yè)院校技能大賽高職組(智能節(jié)水系統(tǒng)設(shè)計(jì)與安裝賽項(xiàng))考試題庫(kù)-下(多選、判斷題)
- 在奉獻(xiàn)中成就精彩人生 課件-2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)上冊(cè)
- 郵輪運(yùn)營(yíng)管理 課件 第七章 郵輪安全管理的全面解析
- 公園保潔服務(wù)投標(biāo)方案
- 2024年高考英語(yǔ)作文預(yù)測(cè):倡議書(shū)(附答案解析)
- 安徽省2023-2024學(xué)年七年級(jí)上學(xué)期期末數(shù)學(xué)試題(原卷版)
- 2024年人教版八年級(jí)生物(上冊(cè))期末試卷及答案(各版本)
評(píng)論
0/150
提交評(píng)論