Matlab线性代数实验指导书理学院线性代数课程组二零零七年十月目录一、基础知识 (1)1.1、常见数学函数 (1)1.2、系统在线帮助 (1)1.3、常量与变量 (2)1.4、数组(矩阵)的点运算 (3)1.5、矩阵的运算 (3)二、编程 (4)2.1、无条件循环 (4)2.2、条件循环 (5)2.3、分支结构 (5)2.4、建立M文件 (6)2.5、建立函数文件 (6)三、矩阵及其运算 (7)3.1、矩阵的创建 (7)3.2、符号矩阵的运算 (11)四、秩与线性相关性 (14)4.1、矩阵和向量组的秩以及向量组的线性相关性 (14)4.2、向量组的最大无关组 (14)五、线性方程的组的求解 (16)5.1、求线性方程组的唯一解或特解(第一类问题) (16)5.2、求线性齐次方程组的通解 (18)5.3、求非齐次线性方程组的通解 (19)六、特征值与二次型 (22)6.1、方阵的特征值特征向量 (22)6.2、正交矩阵及二次型 (23)一、基础知识1.1常见数学函数函数数学计算功能函数数学计算功能abs(x) 实数的绝对值或复数的幅值floor(x) 对x朝-∞方向取整acos(x) 反余弦arcsinx gcd(m,n)求正整数m和n的最大公约数acosh(x) 反双曲余弦arccoshx imag(x) 求复数x的虚部angle(x) 在四象限内求复数x的相角lcm(m,n)求正整数m和n的最小公倍自然对数(以e为底数) asin(x) 反正弦arcsinx log(x)常用对数(以 10 为底数) asinh(x) 反双曲正弦arcsinhx log10(x)atan(x) 反正切arctanx real(x) 求复数 x 的实部atan2(x,y) 在四象限内求反正切rem(m,n) 求正整数m和n的m/n之余数atanh(x) 反双曲正切arctanhx round(x)对x四舍五入到最接近的整数符号函数:求出 x 的符号ceil(x) 对x朝+∞方向取整 sign(x)conj(x) 求复数x的共轭复数 sin(x) 正弦sinx反双曲正弦sinhx cos(x) 余弦cosx sinh(x)cosh(x) 双曲余弦coshx sqrt(x) 求实数x的平方根exp(x) 指数函数e x tan(x) 正切tanxfix(x) 对 x 朝原点方向取整 tanh(x) 双曲正切tanhx如:输入 x=[-4.85 -2.3 -0.2 1.3 4.56 6.75],则:ceil(x)= -4 -2 0 2 5 7fix(x) = -4 -2 0 1 4 6floor(x) =-5 -3 -1 1 4 6round(x) = -5 -2 0 1 5 71.2 系统的在线帮助1.2.1 help 命令:1.当不知系统有何帮助内容时,可直接输入 help以寻求帮助:>> help(回车)2.当想了解某一主题的内容时,如输入:>> help syntax (了解Matlab的语法规定)3.当想了解某一具体的函数或命令的帮助信息时,如输入:>> help sqrt (了解函数sqrt的相关信息)1.2.2 lookfor 命令现需要完成某一具体操作,不知有何命令或函数可以完成,如输入:>> lookfor line (查找与直线、线性问题有关的函数)1.3 常量与变量系统的变量命名规则:变量名区分字母大小写;变量名必须以字母打头,其后可以是任意字母,数字,或下划线的组合。
此外,系统内部预先定义了几个有特殊意义和用途的变量,见下表:特殊的变量、常量取值ans 用于结果的缺省变量名pi 圆周率π的近似值(3.1416)eps 数学中无穷小(epsilon)的近似值(2.2204e - 016)inf 无穷大,如1/0 = inf (infinity)NaN 非数,如0/0 = NaN(Not a Number),inf / inf = NaNi,j 虚数单位:i=j=-11.3.1 数值型向量(矩阵)的输入1.任何矩阵(向量),可以直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔;行与行之间用分号(;)分隔。
所有元素处于一方括号([ ])内;例1:>> Time =[11 12 1 2 3 4 5 6 7 8 9 10]>> X_Data = [2.32 3.43;4.37 5.98]2.系统中提供了多个命令用于输入特殊的矩阵:函数功能函数功能compan 伴随阵 toeplitz Toeplitz矩阵Vandermonde矩阵diag 对角阵 vanderhadamard Hadamard矩阵 zeros 元素全为0的矩阵hankel Hankel矩阵 ones元素全为1的矩阵元素服从均匀分布的随机矩阵invhilb Hilbert矩阵的逆阵 randkron Kronercker张量积 randn元素服从正态分布的随机矩阵对角线上元素为1的矩阵magic 魔方矩阵 eye由两个向量生成的矩阵pascal Pascal矩阵 meshgrid上面函数的具体用法,可以用帮助命令 help 得到。
如:meshgrid(x,y)输入x=[1 2 3 4]; y=[1 0 5]; [X,Y]=meshgrid(x, y),则X = Y =1 2 3 4 1 1 1 11 2 3 4 0 0 0 01 2 3 4 5 5 5 5目的是将原始数据x,y转化为矩阵数据X,Y。
1.3.2 符号向量(矩阵)的输入1.用函数 sym定义符号矩阵:函数 sym实际是在定义一个符号表达式,这时的符号矩阵中的元素可以是任何的符号或者是表达式,而且长度没有限制。
只需将方括号置于单引号中。
例2:>> sym_matrix = sym('[a b c;Jack Help_Me NO_WAY]')sym_matrix =[ a, b, c][Jack, Help_Me, NO_WAY]2.用函数 syms 定义符号矩阵先定义矩阵中的每一个元素为一个符号变量,而后像普通矩阵一样输入符号矩阵。
例3:>> syms a b c ;>> M1 = sym('Classical');>> M2 = sym(' Jazz');>> M3 = sym('Blues');>> A = [a b c; M1, M2, M3;sym([2 3 5])]A =[ a, b, c][Classical, Jazz, Blues][ 2, 3, 5]1.4 数组(矩阵)的点运算运算符:+(加)、-(减)、./(右除)、.\(左除)、.^(乘方),例4:>> g = [1 2 3 4];h = [4 3 2 1];>> s1 =g + h, s2 =g.*h, s3 =g.^h, s4 =g.^2, s5 =2.^h1.5 矩阵的运算运算符:+(加)、-(减)、*(乘)、/(右除)、\(左除)、^(乘方)、’(转置)等;常用函数:det(行列式)、inv(逆矩阵)、rank(秩)、eig(特征值、特征向量)、rref(化矩阵为行最简形) 例5:>> A=[2 0 –1;1 3 2]; B=[1 7 –1;4 2 3;2 0 1];>> M = A*B % 矩阵A与B按矩阵运算相乘>> det_B = det(B) % 矩阵A的行列式>> rank_A = rank(A) % 矩阵A的秩>> inv_B = inv(B) % 矩阵B的逆矩阵>> [V,D] = eig(B) % 矩阵B的特征值矩阵V与特征向量构成的矩阵D >> X = A/B % A/B = A*B-1,即XB=A,求X>> Y = B\A % B\A = B-1*A,即BY=A,求Y上机练习(一):1.练习数据和符号的输入方式,将前面的命令在命令窗口中执行通过;2.输入A=[7 1 5;2 5 6;3 1 5],B=[1 1 1; 2 2 2; 3 3 3],在命令窗口中执行下列表达式,掌握其含义:A(2, 3) A(:,2) A(3,:) A(:,1:2:3) A(:,3).*B(:,2)A(:,3)*B(2,:) A*B A.*B A^2 A.^2 B/A B./A3.输入 C=1:2:20,则C(i)表示什么?其中 i=1,2,3, (10)4.查找已创建变量的信息,删除无用的变量;5.欲通过系统做一平面图,请查找相关的命令与函数,获取函数的帮助信息。
二、编程2.1 无条件循环当需要无条件重复执行某些命令时,可以使用 for循环:for 循环变量 t=表达式1: 达式2: 表达式3语句体end说明:表达式 1 为循环初值,表达式 2 为步长,表达式3为循环终值;当表达式 2 省略时则默认步长为1;for 语句允许嵌套。
例6:生成 3×4 阶的 Hiltber矩阵。
for i=1 : 3for j=1 : 4H(i,j)=1/(i+j-1);endend 如:矩阵输入程序m=input(‘矩阵行数:m=’);n= input(‘矩阵列数:n=’);for i=1:mfor j=1:ndisp([‘输入第’,num2str(i),’行,第’, num2str(j),’列元素’]) A(i, j) = input (‘ ’)endend2.2 条件循环1) if-else-then 语句if-else-then 语句的常使用三种形式为:(1) if 逻辑表达式语句体end(2) if 逻辑表达式1语句体1else语句体2End(3) if 逻辑表达式 1语句体1elseif 逻辑表达式 2语句体 2elseif 逻辑表达式 3…else语句体nend2) while 循环语句while 循环的一般使用形式为:while 表达式 语句体end 例7:用二分法计算多项式方程在[0,3]内的一个根。
325x x −−=0解:a = 0;fa = -inf ;b = 3;fb = inf ; while b-a > eps*b x =(a+b)/2; fx = x^3-2*x-5; if sign(fx)== sign(fa) a =x ;fa = fx ; elseb = x ;fb = fx ; end end x运行结果为:x = 2.09455151481542332.3 分支结构若需要对不同的情形执行不同的操作,可用switch 分支语句: switch 表达式(标量或字符串) case 值1语句体 1 case 值2语句体 2 …otherwise语句体 n end说明:当表达式不是“case”所列值时,执行otherwise 语句体。