1、实验 2 MATLAB 数值计算、符号运算功能一、实验目的1、掌握建立矩阵、矩阵分析与处理的方法。2、掌握线性方程组的求解方法。 3、掌握数据统计和分析方法、多项式的常用运算。4、掌握求数值导数和数值积分、常微分方程数值求解、非线性代数方程数值求解的方法。5、掌握定义符号对象的方法、符号表达式的运算法则及符号矩阵运算、符号函数极限及导数、符号函数定积分和不定积分的方法。二、预习要求(1) 复习 4、5、6 章所讲内容;(2) 熟悉 MATLAB 中的数值计算和符号运算的实现方法和主要函数。三、实验内容1、 已知 ,求 A 的特征值及特征向量,并分析其数学意义。2961805A A=-29,6,
2、18;20,5,12;-8,8,5; V,D=eig(A)V =0.7130 0.2803 0.2733-0.6084 -0.7867 0.87250.3487 0.5501 0.4050D =-25.3169 0 00 -10.5182 00 0 16.8351V 为 A 的特征向量,D 为 A 的特征值,3 个特征值是-25.3169、10.5182 和16.8351。 A*Vans =-18.0503 -2.9487 4.600715.4017 8.2743 14.6886-8.8273 -5.7857 6.8190 V*Dans =-18.0503 -2.9487 4.600715.4
3、017 8.2743 14.6886-8.8273 -5.7857 6.8190经过计算,A*V=V*D。2、 不用 rot90 函数,实现方阵左旋 90或右旋 90的功能。例如,原矩阵为 A,A 左旋后得到 B,右旋后得到 C。, ,1470258369A1278945632154870B提示:先将 A 转置,再作上下翻转,则完成左旋 90;如将 A 转置后作左右翻转,则完成右旋转 90,可用 flipud、fliplr 函数。 a=1 4 7 10;2 5 8 11;3 6 9 12a=1 4 7 102 5 8 113 6 9 12 B=rot90(a)B =10 11 127 8 94
4、 5 61 2 3C= rot90(s,3)C=3 2 16 5 49 8 712 11 103 建立一个 5*5 矩阵,求它的行列式值、秩。A=fix(10*rand(5)H=det(A)Trace=trace(A)Rank=rank(A)Norm=norm(A)A =2 9 4 0 75 9 9 8 39 4 7 9 69 8 9 6 11 1 6 7 7H =-12583Trace =31Rank =5Norm =30.16014 下面是一个线性方程组 ,1231230.954.6730.545xxxx(1)求方程的解。A=1/2,1/3,1/4;1/3,1/4,1/5;1/4,1/5,
5、1/6;b=0.95,0.67,0.52;x=inv(A)*b%(2):B=0.95,0.67,0.53;x=inv(A)*B%(3):cond(A)x =1.20000.60000.6000x =3.0000-6.60006.6000ans =1.3533e+003(2)将方程右边向量元素 b3=0.52 改为 0.53 再求解,并比较 b3 的变化和解的相对变化。A=hilb(4)A(:,1)=A(4,:)=B=0.95,0.67,0.52;X=inv(A)*BB1=0.95,0.67,0.53;X1=inv(A)*B1N=cond(B)N1=cond(B1)Na=cond(A) %矩阵
6、A 为病态矩阵A =1.0000 0.5000 0.3333 0.25000.5000 0.3333 0.2500 0.20000.3333 0.2500 0.2000 0.16670.2500 0.2000 0.1667 0.1429A =0.5000 0.3333 0.25000.3333 0.2500 0.20000.2500 0.2000 0.16670.2000 0.1667 0.1429A =0.5000 0.3333 0.25000.3333 0.2500 0.20000.2500 0.2000 0.1667X =1.20000.60000.6000X1 =3.0000-6.60
7、006.6000N =1N1 =1Na =1.3533e+003(3) 计算系数矩阵的条件数并分析结论。无5 建立矩阵 A,试比较 sqrtm(A)和 sqrt(A),分析它们的区别。A=1,4,9;16,25,36;49,64,81B=sqrtm(A)C=sqrt(A) %sqrtm 函数是以矩阵为单位进行计算, sqrt 函数是以矩阵中的元素进行计算A =1 4 916 25 3649 64 81B =0.6344 + 1.3620i 0.3688 + 0.7235i 0.7983 - 0.4388i1.4489 + 1.1717i 2.7697 + 0.6224i 3.2141 - 0.
8、3775i4.3578 - 1.6237i 5.7110 - 0.8625i 7.7767 + 0.5231iC =1 2 34 5 67 8 96 将 100 个学生 5 门功课的成绩存入矩阵 P 中,进行如下处理:(1)分别求每门课的最高分、最低分及相应学生序号。A=45+(95-45)*rand(100,5);Y,U=max(A)X,U=min(A)运行结果:Y =94.9721 93.9250 94.5146 94.3265 94.5999U =94 80 45 14 87X =45.3517 45.6929 45.3851 45.0906 45.2279U =48 23 27 23
9、60(2)分别求每门课的平均分和标准方差。A=45+(95-45)*rand(100,5);aver=mean(A)s1=std(A)运行结果:aver =67.1876 70.1262 69.0017 71.0174 70.3569s1 =13.2273 14.1307 13.8053 15.1191 14.7097(3)5 门课程总分的最高分、最低分及相应学生序号。A=45+(95-45)*rand(100,5);B=sum(A,2)disp(最高分及学号:),Y,U=max(B)disp(最低分及学号:),X,U=min(B)运行结果:最高分及学号:Y =432.6472U =84最低分
10、及学号:X =287.6246U =50(4)将 5 门课总分按从大到小顺序存入 zcj 中,相应学生序号存入 xsxh。A=45+(95-45)*rand(100,5);B=sum(A,2);X,I=sort(B);zcj=flipud(X)xsxh=flipud(I)提示:编程时,为避免输入学生成绩的麻烦,可用取值范围在45,95之间的随机矩阵来表示学生成绩。7利用MATLAB提供的rand函数生成30000个符合均匀分布的随机数,然后检验随机数的性质:(1)均值和标准方差;(2)最大元素和最小元素;(3)大于0.5的随机数个数占总数的百分比。A=rand(1,30000);aver=me
11、an(A)s1=std(A)max=max(max(A)min=min(min(A)k=find(A0.5);a=length(k);disp(百分比是: ),per=a/30000运行结果:均值是:aver =0.4982s1 =0.2889max =1.0000min =4.8158e-005百分比是:per =0.49888分别用3种不同的数值方法求解线性方程组。 (提示:LU函数、inv 函数)652491334xyzu9求函数 在(0,1)内的最小值。3coslg()xfxe10已知x=6 , y=5,利用符号表达式: 。 (提示:定义符号常数13xzy, )(6)xsym(5)sy
12、x=sym(6),y=sym(5)x =6y =5 z=(x+1)/(sqrt(3+x)-sqrt(y)z =7/(3-5(1/2)11 已知: , , 求:10P210PabcAdefghi(1) 。12BA(2)B 的逆矩阵并验证结果。(3)包括 B 矩阵主对角线元素的下三角阵。(4)B 的行列式值。提示:用于数值矩阵分析的有关函数同样适用于符号矩阵。验证结果时须将结果化简。(1) B=P1 P2 AP1=0 1 0;1 0 0;0 0 1P1 =0 1 01 0 00 0 1 P2=1 0 0;0 1 0;1 0 1P2 =1 0 00 1 01 0 1 a=sym(a);b=sym(b
13、);c=sym(c);d=sym(d);e=sym(e);f=sym(f);g=sym(g);h=sym(h);i=sym(i); A=a b c;d e f;g h iA = a, b, c d, e, f g, h, iB=P1*P2*AB = d, e, f a, b, c a+g, b+h, c+i(2) B 的逆矩阵并验证结果C=inv(B)C = (i*b-c*h)/(i*d*b-d*c*h-i*a*e+a*f*h+g*e*c-g*f*b), (-e*c-i*e+f*b+f*h)/(i*d*b-d*c*h-i*a*e+a*f*h+g*e*c-g*f*b), -(-e*c+f*b)/
14、(i*d*b-d*c*h-i*a*e+a*f*h+g*e*c-g*f*b) -(i*a-c*g)/(i*d*b-d*c*h-i*a*e+a*f*h+g*e*c-g*f*b), -(-d*c-i*d+f*a+f*g)/(i*d*b-d*c*h-i*a*e+a*f*h+g*e*c-g*f*b), (-d*c+f*a)/(i*d*b-d*c*h-i*a*e+a*f*h+g*e*c-g*f*b) (a*h-b*g)/(i*d*b-d*c*h-i*a*e+a*f*h+g*e*c-g*f*b), (-d*b-d*h+e*a+e*g)/(i*d*b-d*c*h-i*a*e+a*f*h+g*e*c-g*f*b
15、), -(-d*b+e*a)/(i*d*b-d*c*h-i*a*e+a*f*h+g*e*c-g*f*b)(3)包括 B 矩阵主对角线元素的下三角阵tril(B)ans = d, 0, 0 a, b, 0 a+g, b+h, c+l(4)B 的行列式值det(B)ans =i*d*b-d*c*h-i*a*e+a*f*h+g*e*c-g*f*b12 用符号方法求下列极限或导数。(1) ;sintan20(1)()lmxxxee(2)已知 ,分别求 、 、 。3coslnxatAtdAx2tdxt(1)x=sym(x)x =x f=(x*(exp(sin(x)+1)-2*(exp(tan(x)-1)
16、/sin(x).3f =(x*(exp(sin(x)+1)-2*exp(tan(x)+2)/sin(x)3 limit(f)ans =-1/2(4)x=sym(x)x =x y=(1-cos(2*x)/xy =(1-cos(2*x)/x diff(y,x,1)ans =2*sin(2*x)/x-(1-cos(2*x)/x2 diff(y,x,2)ans =4*cos(2*x)/x-4*sin(2*x)/x2+2*(1-cos(2*x)/x3 syms a t x; f=sym(ax,t3;t*cos(x),log(x)f = ax, t3 t*cos(x), log(x) diff(f,x,1
17、); diff(f,x,1)ans = ax*log(a), 0 -t*sin(x), 1/x diff(f,t,2)ans = 0, 6*t 0, 0 diff(f,x)/diff(f,t)ans = 0, 1/cos(x)*ax*log(a) 1/3/t2/x, -1/cos(x)*t*sin(x)13 用符号方法求下列积分:(1) ;48dx(2) 。2401x(1)sym(x)ans =x f=1/(1+x4+x8)f =1/(1+x4+x8) int(f,x)ans =1/6*3(1/2)*atan(1/3*(2*x-1)*3(1/2)+1/6*3(1/2)*atan(1/3*(1+
18、2*x)*3(1/2)-1/12*3(1/2)*log(-x2+3(1/2)*x-1)+1/12*3(1/2)*log(x2+3(1/2)*x+1)(3)syms x f=(x.2+1)/(x.4+1)f =(x2+1)/(1+x4) int(f,x,0,inf)ans =1/2*pi*2(1/2)14 化简表达式。(1) ;1212sincosinbyte1=sym(byte1)byte1 =byte1 byte2=sym(byte2)byte2 =byte2 S=sin(byte1)*cos(byte2)-cos(byte1)*sin(byte2)S =sin(byte1)*cos(byt
19、e2)-cos(byte1)*sin(byte2) simplify(S)ans =sin(byte1)*cos(byte2)-cos(byte1)*sin(byte2)(2) 。24831xx=sym(x)x =x S=(4*x2+8*x+3)/(2*x+1)S =(4*x2+8*x+3)/(2*x+1) simple(s) simple(S)simplify:2*x+3radsimp:2*x+3combine(trig):2*x+3factor:2*x+3expand:4/(2*x+1)*x2+8/(2*x+1)*x+3/(2*x+1)combine:(4*x2+8*x+3)/(2*x+1
20、)convert(exp):(4*x2+8*x+3)/(2*x+1)convert(sincos):(4*x2+8*x+3)/(2*x+1)convert(tan):(4*x2+8*x+3)/(2*x+1)collect(x):(4*x2+8*x+3)/(2*x+1)ans =2*x+315 分解因式。(1) ;4xyx=sym(x)x =x y=sym(y)y =y A=x4-y4A =x4-y4 factor(A)ans =(x-y)*(x+y)*(x2+y2)(2)5135。factor(sym(5135)ans =(5)*(13)*(79)四、实验报告1、 实验内容中的代码与运行结果的截图;2、 本次实验的总结。