资源预览内容
第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
第9页 / 共10页
第10页 / 共10页
亲,该文档总共10页全部预览完了,如果喜欢就下载吧!
资源描述
用Matlab学习线性代数_行列式实验目的 理解行列式的概念、行列式的性质与计算Matlab函数 det实验内容前面的四个练习使用整数矩阵,并演示一些本章讨论的行列式的性质。最后两个练习演示我们使用浮点运算计算行列式时出现的不同。理论上将,行列式的值应告诉我们矩阵是否是奇异的。然而,如果矩阵是奇异的,且计算其行列式采用有限位精度运算,那么由于舍入误差,计算出的行列式的值也许不是零。一个计算得到的行列式的值很接近零,并不能说明矩阵是奇异的甚至是接近奇异的。此外,一个接近奇异的矩阵,它的行列式值也可能不接近零。1.用如下方法随机生成整数元素的5阶方阵:A=round(10*rand(5) 和 B=round(20*rand(5)-10用Matlab计算下列每对数。在每种情况下比较第一个是否等于第二个。(1) det(A) =det(AT) (2) det(A+B) ; det(A)+det(B)(3)det(AB)=det(A)det(B) (4) det(ATBT) =det(AT)det(BT)(5)det(A-1)=1/det(A) (6)det(AB-1)=det(A)/det(B) A=round(10*rand(5); B=round(20*rand(5)-10; det(A)ans = 5972 det(A)ans 5972 det(A+B)ans = 36495 det(A)+det(B)ans = 26384 det(A*B)ans = 121900464 det(A)*det(B)ans = 121900464 det(A*B)ans = 121900464 det(A)*det(B)ans = 121900464 det(inv(A)ans = 0.00016745 1/det(A)ans = 0.00016745 det(A*inv(B)ans = 0.29257 det(A)/det(B)ans = 0.292572.n阶的幻方阵是否奇异?用Matlab计算n=3、4、5、10时的det(magic(n)。看起来发生了什么?验证当n=24和25时,结论是否仍然成立。【当n为奇数时,det(magic(n)不为0;当n为偶数时,det(magic(n)为0;】 det(magic(3)ans = -360 det(magic(4)ans = 0 det(magic(5)ans = 5070000 det(magic(6)ans = 0 det(magic(7)ans = -3.4805e+011 det(magic(8)ans = 0 det(magic(9)ans = 7.5036e+016 det(magic(10)ans = 0 det(magic(24)ans = 0 det(magic(25)ans = 3.9506e+0693.令A=round(10*rand(6)。下列每种情形下,用Matlab计算给出的另一个矩阵。说明第二个矩阵和矩阵A之间的关系,并计算两个矩阵的行列式。这些行列式之间有什么关联?(1)B=A;B(2,:)=A(1,:);B(1,:)=A(2,:); 【A与B行换了一次】(2)C=A;C(3,:)=4*A(3,:); 【B的第三行为A的四倍】(3)D=A;D(5,:)=A(5,:)+2*A(4,:) 【B的第五行等于A的第五行加上A的第四行的二倍】 A=round(10*rand(6); B=A;B(2,:)=A(1,:);B(1,:)=A(2,:); det(A)ans = 4636 det(B)ans = -4636 C=A;C(3,:)=4*A(3,:); det(C)ans = 18544 D=A;D(5,:)=A(5,:)+2*A(4,:); det(D)ans = 46364.我们可以通过如下方法随机生成一个全部元素为0和1的6阶方阵A:A=round(rand(6)(1)这些0-1矩阵奇异的百分比是多少?【61%】可以用Matlab命令估计这个百分比:y=zeros(1,100);然后生成100个测试矩阵,并且若第j个矩阵是奇异的,令y(j)=1,否则为0。这可以通过Matlab中的for循环容易地实现。循环如下:for j=1:100 A=round(rand(6); y(j)=(det(A)=0);end为了确定生成了多少奇异矩阵,使用Matlab命令sum(y)。生成的矩阵中,奇异矩阵的百分比是多少? A=round(rand(6); y=zeros(1,100); for j=1:100 A=round(rand(6); y(j)=(det(A)=0);end yy = Columns 1 through 18 0 1 1 1 0 0 1 0 1 1 1 1 0 0 1 1 1 1 Columns 19 through 36 0 1 1 1 0 0 1 0 0 0 0 1 0 0 1 1 1 1 Columns 37 through 54 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 0 1 1 Columns 55 through 72 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 Columns 73 through 90 1 1 0 0 1 1 1 1 0 1 1 1 0 0 0 0 0 0 Columns 91 through 100 1 1 0 1 1 0 1 1 0 0 sum(y)ans = 61(2)对任意正整数n,可以通过下面命令随机生成元素为从0n的整数的矩阵A:A=floor(n+1)*rand(6)若n=3,采用这种方法生成的矩阵中奇异矩阵的百分比是多少?n=6呢?n=10呢?我们可以采用Matlab对这些问题进行估计。对每种情况,生成100个矩阵,并确定其汇总多少矩阵是奇异的。(n=3) A=floor(4*rand(6); y=zeros(1,100); for j=1:100 A=round(rand(6); y(j)=(det(A)=0);end sum(y)ans =59(n=6) A=floor(7*rand(6); y=zeros(1,100); for j=1:100 A=round(rand(6); y(j)=(det(A)=0);end sum(y)ans = 55(n=10) A=floor(11*rand(6); y=zeros(1,100); for j=1:100 A=round(rand(6); y(j)=(det(A)=0);end sum(y)ans = 575若一个矩阵对舍入 误差敏感,则计算得到的行列式将会与真实值有极大的不同。作为这个问题的例子,令U=round(100*rand(10);U=triu(U,1)+0.1*eye(10)理论上,det(U)=det(UT)=10-10且 det(UUT)=det(U)*det(UT)=10-20用Matlab计算det(U)、det(U)和det(U*U)。计算结果和理论值是否相同?【不相同】 U=round(100*rand(10); U=triu(U,1)+0.1*eye(10); det(U)ans = 1e-010 det(U)ans = 1.8222e-006 det(U*U)ans = 1.0245e+0116用Matlab构造矩阵A:A=vander(1:6);【 A=vander(1:6)A = 1 1 1 1 1 1 32 16 8 4 2 1 243 81 27 9 3 1 1024 256 64 16 4 1 3125 625 125 25 5 1 7776 1296 216 36 6 1】A=A-diag(sum(A)(1)由构造,A的每一行所有元素的和均为零。为检测结论,令x=ones(6,1),并用Matlab计算乘积Ax。矩阵A应为奇异的。为什么?【diag(sum(A)表示的是A的每一行的元素的和值组成的对角阵】试说明理由。用Matlab函数det和inv计算det(A)和A-1。哪一个Matlab函数作为奇异的指示器更合理? A=vander(1:6); x=ones(6,1); A=A-diag(sum(A); det(A)ans = 10 A*xans =
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号