实验2 MATLAB数值计算、符号运算功能一、实验目的1、掌握建立矩阵、矩阵分析与处理的方法。
2、掌握线性方程组的求解方法。
3、掌握数据统计和分析方法、多项式的常用运算。
4、掌握求数值导数和数值积分、常微分方程数值求解、非线性代数方程数值求解的方法。
5、掌握定义符号对象的方法、符号表达式的运算法则及符号矩阵运算、符号函数极限及导数、符号函数定积分和不定积分的方法。
二、预习要求(1)复习4、5、6章所讲内容;(2)熟悉MATLAB中的数值计算和符号运算的实现方法和主要函数。
三、实验内容1、已知2961820512885A-⎡⎤⎢⎥=⎢⎥⎢⎥-⎣⎦,求A的特征值及特征向量,并分析其数学意义。
>> A=[-29,6,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.4017 8.2743 14.6886-8.8273 -5.7857 6.8190经过计算,A*V=V*D 。
2、 不用rot90函数,实现方阵左旋90°或右旋90°的功能。
例如,原矩阵为A ,A 左旋后得到B ,右旋后得到C 。
147102581136912A ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦,101112789456123B ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦,321654987121110B ⎡⎤⎢⎥⎢⎥=⎢⎥⎢⎥⎣⎦提示:先将A 转置,再作上下翻转,则完成左旋90°;如将A 转置后作左右翻转,则完成右旋转90°,可用flipud 、fliplr 函数。
>> a=[1 4 7 10;2 5 8 11;3 6 9 12]a=1 4 7 102 5 8 113 6 9 12>> B=rot90(a)B =10 11 127 8 94 5 61 2 3>>C= 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下面是一个线性方程组1231231231110.95 2341110.67 3451110.52 456x x xx x xx x x⎧++=⎪⎪⎪++=⎨⎪⎪++=⎪⎩,(1)求方程的解。
A=[1/2,1/3,1/4;1/3,1/4,1/5;1/4,1/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) %矩阵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.60006.6000N =1N1 =1Na =1.3533e+003(3)计算系数矩阵的条件数并分析结论。
无5建立矩阵A,试比较sqrtm(A)和sqrt(A),分析它们的区别。
A=[1,4,9;16,25,36;49,64,81]B=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.1717i2.7697 + 0.6224i3.2141 - 0.3775i4.3578 - 1.6237i5.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.5999 U =94 80 45 14 87X =45.3517 45.6929 45.3851 45.0906 45.2279 U =48 23 27 23 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.3569 s1 =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最低分及学号: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=mean(A)s1=std(A)max=max(max(A))min=min(min(A))k=find(A>0.5);a=length(k);disp('百分比是:'),per=a/30000运行结果:均值是:aver =0.4982s1 =0.2889max =1.0000min =4.8158e-005百分比是:per =0.49888分别用3种不同的数值方法求解线性方程组。
(提示:LU 函数、inv 函数)6525494133422139211x y z u x y z u x y z u x y u +-+=-⎧⎪-+-=⎪⎨++-=⎪⎪-+=⎩ 9求函数3cos log ()xx x x x f x e ++=在(0,1)内的最小值。
10已知x=6,y=5,利用符号表达式:z =。
(提示:定义符号常数('6')x sym =,('5')y sym =) x=sym('6'),y=sym('5')x =6y =5>> z=(x+1)/(sqrt(3+x)-sqrt(y))z =7/(3-5^(1/2))11已知:1010100001P ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦,2100010101P ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦,a b c A d e f g hi ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦求: (1)12B P P A =。
(2)B 的逆矩阵并验证结果。
(3)包括B 矩阵主对角线元素的下三角阵。
(4)B 的行列式值。
提示:用于数值矩阵分析的有关函数同样适用于符号矩阵。
验证结果时须将结果化简。
(1)B=P1⨯ P2⨯AP1=[0 1 0;1 0 0;0 0 1]P1 =0 1 01 0 00 0 1>> P2=[1 0 0;0 1 0;1 0 1]P2 =1 0 00 1 01 0 1>>a=sym('a');b=sym('b');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 i]A =[ a, b, c][ d, e, f][ g, h, i]B=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)/(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),-(-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 用符号方法求下列极限或导数。