数值线性代数第三次上机作业
对比试验希尔伯特矩阵和魔方矩阵及Matlab内置QR分解(六阶矩阵)
运行结果:
六阶的希尔伯特矩阵经典的Gram-Schmidt QR分解:
Q = 0.8189 -0.5397 0.1893 -0.0482 0.0090 -0.0011
0.4094 0.3320 -0.7024 0.4489 -0.1617 0.0332
0.2730 0.4219 -0.1529 -0.5723 0.5854 -0.2322
0.2047 0.4067 0.2015 -0.3866 -0.4687 0.6189
0.1638 0.3735 0.3963 0.0915 -0.4285 -0.6961
0.1365 0.3399 0.4998 0.5574 0.4773 0.2784
R = 1.2212 0.7019 0.5045 0.3970 0.3284 0.2806
0 0.1385 0.1511 0.1444 0.1340 0.1237
0 0 0.0096 0.0152 0.0181 0.0195
0 0 0 0.0005 0.0010 0.0014
0 0 0 0 0.0000 0.0000
0 0 0 0 0 0.0000
六阶的希尔伯特修正的Gram-Schmidt QR分解:
Q = 0.8189 -0.5397 0.1893 -0.0482 0.0090 -0.0011
0.4094 0.3320 -0.7024 0.4489 -0.1617 0.0331
0.2730 0.4219 -0.1529 -0.5723 0.5854 -0.2320
0.2047 0.4067 0.2015 -0.3866 -0.4687 0.6188
0.1638 0.3735 0.3963 0.0915 -0.4285 -0.6961
0.1365 0.3399 0.4998 0.5574 0.4773 0.2785
R = 1.2212 0.7019 0.5045 0.3970 0.3284 0.2806
0 0.1385 0.1511 0.1444 0.1340 0.1237
0 0 0.0096 0.0152 0.0181 0.0195
0 0 0 0.0005 0.0010 0.0014
0 0 0 0 0.0000 0.0000
0 0 0 0 0 0.0000
六阶的希尔伯特matlab内置的QR分解:
Q= 0.8189 -0.5397 0.1893 -0.0482 0.0090 -0.0011
0.4094 0.3320 -0.7024 0.4489 -0.1617 0.0331
0.2730 0.4219 -0.1529 -0.5723 0.5854 -0.2320
0.2047 0.4067 0.2015 -0.3866 -0.4687 0.6188
0.1638 0.3735 0.3963 0.0915 -0.4285 -0.6961
0.1365 0.3399 0.4998 0.5574 0.4773 0.2785
R= 1.2212 0.7019 0.5045 0.3970 0.3284 0.2806
0 0.1385 0.1511 0.1444 0.1340 0.1237
0 0 0.0096 0.0152 0.0181 0.0195
0 0 0 0.0005 0.0010 0.0014
0 0 0 0 0.0000 0.0000
0 0 0 0 0 0.0000 六阶的魔方矩阵经典的Gram-Schmidt QR分解:
Q = 0.6211 -0.1702 -0.2070 0.4998 -0.2062 0.3876
0.0532 0.5740 -0.4500 0.2106 0.6487 -0.2518
0.5502 -0.0011 -0.4460 -0.4537 -0.2062 -0.4605
0.1420 0.4733 0.3763 0.5034 -0.3329 0.3379
0.5324 -0.0695 0.6287 -0.2096 0.5220 0.0596
0.0710 0.6424 0.1373 -0.4501 -0.3329 -0.6758
R = 56.3471 16.4693 30.0459 39.0969 38.0321 38.6710
0 54.2196 34.8797 23.1669 25.2609 23.2963
0 0 32.4907 -8.9182 -11.2895 -7.9245
0 0 0 7.6283 -3.9114 7.4339
0 0 0 0 3.4197 6.8393
0 0 0 0 0 0.0000 六阶的魔方矩阵修正的Gram-Schmidt QR分解:
Q = 0.6211 -0.1702 -0.2070 0.4998 -0.2062 -0.0310
0.0532 0.5740 -0.4500 0.2106 0.6487 -0.5581
0.5502 -0.0011 -0.4460 -0.4537 -0.2062 0.2015
0.1420 0.4733 0.3763 0.5034 -0.3329 -0.3721
0.5324 -0.0695 0.6287 -0.2096 0.5220 0
0.0710 0.6424 0.1373 -0.4501 -0.3329 -0.7131
R = 56.3471 16.4693 30.0459 39.0969 38.0321 38.6710
0 54.2196 34.8797 23.1669 25.2609 23.2963
0 0 32.4907 -8.9182 -11.2895 -7.9245
0 0 0 7.6283 -3.9114 7.4339
0 0 0 0 3.4197 6.8393
0 0 0 0 0 0.0000 六阶的魔方矩阵matlab内置的QR分解:
Q = 0.6211 -0.1702 -0.2070 0.4998 -0.2062 0.5000
0.0532 0.5740 -0.4500 0.2106 0.6487 0.0000
0.5502 -0.0011 -0.4460 -0.4537 -0.2062 -0.5000
0.1420 0.4733 0.3763 0.5034 -0.3329 -0.5000
0.5324 -0.0695 0.6287 -0.2096 0.5220 0.0000
0.0710 0.6424 0.1373 -0.4501 -0.3329 0.5000
R = 56.3471 16.4693 30.0459 39.0969 38.0321 38.6710 0 54.2196 34.8797 23.1669 25.2609 23.2963 0 0 32.4907 -8.9182 -11.2895 -7.9245 0 0 0 7.6283 -3.9114 7.4339 0 0 0 0 3.4197 6.8393 0 0 0 0 0 0.0000 以上为三种QR 分解的对比。
三 通过试验2测试经典和修正的Gram-Schmidt QR 分解的稳定性 通过程序的编译,并运行得到以下结果:
01020304050607080
10-20
10-15
10-10
10-5
10
其中圆圈表示经典G-S QR 分解,叉号表示修正G-S QR 分解。
在图中,能看到
首先注意到是r jj 对j 有一个稳定的下降,接近符合线2j 。
然后,注意的第二件事是r jj 的几何下降并非一路继续j=80,这
是计算计的舍入误差所致。
对经典格拉姆-施密特算法,这些数永远
不会变得小于108-左右。
对修正的格拉姆-施密特算法,它们将缩小8个数量阶,跌至1016-阶,这是由于此计算的计算机的machine epsilon 水平。
由上可见,经典的格拉姆-施密特过程是不稳定的算法之一,而修正的格拉姆-施密特相对能稳定些。