Gauss系统介绍目录1. 系统初步 2. 矩阵介绍 3. 矩阵运算及其它运算 4. Gauss程序控制 5. 过程与模块化程序设计 6. 文件输入输出 7. Gauss图形简介 8. 重要函数及语句分类参考 Gauss系统是Aptech Systems公司出品的一个矩阵语言软件包,它可以十分方便地编制矩阵计算程序,并内建了许多矩阵运算、概率统计函数,还可以绘制印刷质量的图形它可以在命令行交互计算,也可以编程计算,编程时具有通常的分支、循环、模块化子程序等功能,并以矩阵为基本运算单位利用附加的模块可以进行经济财务分析、统计分析等等我们主要用它来编制统计计算、模拟程序它进行矩阵运算时速度很快,甚至比编译的C代码还要快,这是因为它采用了优化的矩阵计算内核 Gauss系统有微机版本,也可以运行于工作站等高档机型这里以DOS版Gauss v2.2为例说明 系统初步 在安装好Gauss系统后,一般用一个批命令进入Gauss系统,比如说是G0.BAT进入系统后,出现一个命令行的界面,命令提示为“》”形状在命令提示下可以输入Gauss语句用Alt+H可以启动帮助系统,在帮助系统内按H键后输入问号然后回车可以得到一个帮助菜单。
为了退出Gauss系统,可以在命令行发布SYSTEM命令,或者按ESC键并回答Y Gauss的基本计算单位是矩阵定义标量、向量、矩阵用等号赋值即可例如, 》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"分别定义了标量a、行向量b1、列向量b2、矩阵c、字符串标量name矩阵定义中一行的元素间用空格分隔,各列用逗号分隔字符串两边用双撇号包围,不能用单撇号 Gauss中除了字符串常量外不区分大小写,所以变量名既可以用大写,也可以用小写语句以分号结束,但在命令行界面可以省略分号 要显示定义的变量的值,在命令行界面下只要键入变量名就可以显示其值,例如 》 c 1.0000000 2.0000000 3.0000000 4.0000000 5.0000000 6.0000000 7.0000000 8.0000000 9.0000000 显示变量值的正规方法是使用PRINT语句,如“print c;”。
PRINT语句可以输出几项,各项之间用空格分开,所以PRINT语句中如果有表达式,表达式中一定不能有空格例如:》 print "A = " a "b1 = " b1A = 15.200000 b1 = 1.0000000 2.0000000 3.0000000有一些函数可以生成常见的向量和矩阵 SEQA(start, step, length)可以产生从start开始,按step递增,长度为length的等差数列列向量,如seqa(1,2,4)产生元素为1、3、5、7的列向量 SEQM(start, rate, length)可以产生从start开始,每次乘以rate的长度为length的等比数列列向量 ZEROS(n,m)产生n行m列的元素全为零的矩阵 ONES(n,m)产生n行m列的元素全为1的矩阵 RNDU(n,m)产生n行m列的元素服从(0,1)均匀分布的伪随机数矩阵 RNDN(n,m)产生n行m列的元素服从标准正态分布的伪随机数矩阵 EYE(n)产生n阶单位阵 为了从键盘输入一个矩阵,使用函数CON(n,m),其中n和m分别是要输入的行数和列数输入时用空格、回车、逗号分隔输入的数值。
例如:》c2 = con(2,3)? 1 2 3 4? 5 6》c2 1.0000000 2.0000000 3.00000004.0000000 5.0000000 6.0000000要输入字符串,一般用如“s= CONS;PRINT;”的方法,其中s是用来存放输入的字符串的变量 矩阵可以直接进行通常的矩阵运算例如, 》 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.000000 26.00000056.000000 56.000000 56.000000矩阵X的转置可以用X表示 两个矩阵X和Y横向并接用X~Y表示 矩阵X和Y纵向并接用X|Y表示 为了解方程A X = B,只要写X = B/A即可,当A为满秩方阵时即联立线性方程组求解, 当A的行数大于列数时求的是最小二乘解 矩阵与标量可以进行加减乘除运算 除了可以使用命令行界面直接输入并运行Gauss语句, 我们还可以编辑一个程序文件并运行这个程序文件。
可以预先编辑好一个程序文件,比如TEST.GSP,里面有如下程序行:x={1 2 3};y={4,5,6};print x y;把这个文件放在Gauss的当前目录下,在Gauss命令行用》RUN TEST.GSP命令就可以运行这个程序文件事实上, Gauss提供了一个内建的程序编辑器,比如,在命令行用》EDIT TEST.GSP就可以打开TEST.GSP到Gauss的内部编辑器中,如果原来没有这个文件将生成一个新文件编辑完毕按Alt+X出现一个选单,选W可以保存文件但不执行,选R可以保存并运行程序,并且运行时带有调试信息,可以显示出错行号在运行了一个程序后按Ctrl+F1键就可以之间调入刚刚执行的程序进行修改 矩阵介绍 Gauss系统提供了一个完整的以矩阵为基本运算单位的程序设计语言 Gauss是一种解释性语言,但因为它的每一个操作都是对矩阵进行的,所以运行速度很快自己写程序时要尽量利用矩阵运算而应避免使用循环对单个元素运算 Gauss有矩阵和字符串两种数据类型变量类型不需要预先说明数据类型、元素个数、矩阵形状可以在运行时改变可以用DECLARE语句声明数据类型矩阵元素允许为字符串,字符矩阵的元素最多存储8个字符。
Gauss的矩阵是按行存储的矩阵元素都以IEEE 8字节双精度浮点数格式存在内存中,称为“长实数”,有效位数有15-16位,绝对值范围在4.19E-307到1.67E308 Gauss计算由表达式完成表达式是用运算符连接起来的常数、矩阵、字符串、函数或过程调用 Gauss程序由语句构成,语句以分号结尾 上一节我们已经看到了矩阵赋值的一些办法矩阵赋值还有一些灵活的方法,如:》 let x[2,2] = 1 2 3 4;结果得到方阵x,第一行为1 2,第二行为3 4 》 let x[2,3] = 1;结果得到一个元素全为1的2行3列方阵 》 let x[2,3];结果得到一个元素全为0的2行3列方阵 LET语句用来对矩阵赋值,但右边只能是一些常数而不能是计算表达式为了计算,省略LET并用~和|连接行列,例如:》 x = (1/3) ~ (1+1/4) | 3 ~ 4;用RESHAPE函数可以改变一个矩阵的形状例如, 》 x = reshape(seqa(1,1,12), 3, 4);把原始的列向量改成了3行4列矩阵:1.0000000 2.0000000 3.0000000 4.00000005.0000000 6.0000000 7.0000000 8.00000009.0000000 10.000000 11.000000 12.000000可以很方便地得到矩阵的子阵。
例如, x[2,3]为第2行第三列元素, x[1, .]为x的第一行, x[., 2]为x的第二列, x[1 3,2 4]为x的第1、3行和第2、4列组成的子阵(注意方括号中不允许有多余的空格):》 x[1 3,2 4];2.0000000 4.000000010.000000 12.000000下标可以用冒号表示一个范围,比如》 x[1 3,2:4];2.0000000 3.0000000 4.000000010.000000 11.000000 12.000000矩阵运算及其它运算 Gauss提供了丰富的运算符来进行矩阵运算和字符串操作矩阵运算除了一般线性代数中的运算外还有一些针对元素的运算,为此定义两个矩阵X和Y是元素匹配(ExE conformable)的,如果X和Y为图 1情况之一 元素运算为对应行、列元素的运算,如果行、列中只有一项是匹配的则只对这一项匹配运算,例如:上面的各运算交换后仍是匹配的 Gauss的矩阵运算包括: +加法要求两矩阵元素匹配 -减法要求两矩阵元素匹配 *矩阵乘法或数乘要求为mk阵乘以kn阵,或者两矩阵之一为标量 /标量除或解线性方程组或最小二乘。
x = b / A中如果A和b均为标量则为标量除法;如果A和b之一为标量则x为元素与标量分别相处得到的矩阵如果A为方阵, b为与A阶数相同的列向量,则b / A用三角分解方法解线性方程组A x = b如果A非方阵,与b行数相同,则求最小二乘解 %求余数运算要求两矩阵元素匹配对非整数先四舍五入 !阶乘比如y= x!对x的每个元素求阶乘非整数先四舍五入 .*元素间乘积要求两矩阵元素匹配 ./元素间相除要求两矩阵元素匹配 ^元素间乘方当底数为负数时指数必须取整数 .^与“^”等价 .*. Kronecker积 z = x .*. y使x的每个元素的位置扩大为此元素乘以y的结果比如 *~水平直积计算x *~ y, x与y必须有相同行数,结果行数不变而列数为x的列数与y的列数的乘积比如 转置 x为x的转置 |垂直连接比如 ~水平连接比如 Gauss提供的比较运算符包括: .== 或 .EQ两矩阵元素间相等的比较,要求两矩阵元素相配,比较结果为元素取0-1值的矩阵 ./= 或 .NE 或 .$/= 两矩阵元素间不等的比较 .< 或 .LT 或 .$< 两矩阵元素间小于关系比较。
.<= 或 .LE 或 .$<= 两矩阵元素间小于等于关系比较 .> 或 .GT 或 .$G 两矩阵元素间大于关系比较 .>= 或 .GE 或 .$>= 两矩阵元素间大于等于关系比较 如果上面的比较算符中没有点则比较结果为标量结果,用于比较两个标量,如果比较两个矩阵,则元素间所有比较结果都为真时才为真,否则为假 Gauss提供的逻辑运算符有: NOT x x的否 x AND y x和y都成立时才为真 x OR y x和y只要有一个为真则结果为真 x XOR y x和y的异或 x EQV y x和y的等价 上面的逻辑运算为标量运算, x和y应为标量逻辑运算也可以在两个矩阵的元素之间进行,只要在运算符前加点,如 .AND, .OR 其它运算符还有: 赋值:如y=x1; 逗号:用作分隔符,比如 clear x,。