matlab第三章上機作業
第三次上機作業
已知Hilbert矩陣H的元素為: hij=1/(i+j-1), 完成如下實驗:
- 程式設計計算H的行範數函式;
- 編寫計算H的行範數條件數函式(可以呼叫求逆函式,Mathematica為Inverse[H],Matlab為inv(H), 其它語言自己去查詢相應的逆矩陣程式使用);
- 對n=1,2,…,20, 計算H的行範數條件數, 畫出n同條件數的對數之間的關係圖;
- 令x=(1,1,…,1)’, 計算b=Hx, 對n=1,2,…,20, 求解Hx =b,並計算x-x 和b-Hx 以及它們的無窮範數;
- 通過以上的數值實驗, 你理解到了什麼.
Solution(1):
Solution(2):
Solution(3):
Solution(4):
x-x 的無窮範數:
0
1.77635683940025e-15
2.84217094304040e-14
4.54747350886464e-13
1.45519152283669e-11
6.98491930961609e-10
4.09781932830811e-08
4.76837158203125e-07
3.81469726562500e-05
0.000335693359375000
0.0185546875000000
0.328125000000000
8.50000000000000
15.5000000000000
6.50000000000000
341.718750000000
159
41
43
95.5458984375000
b-Hx 的無窮範數:
0
0.750000000000000
1.22222222222222
1.56250000000000
1.82666666666667
2.04166666666667
2.22244897959184
2.37812500000000
2.51463844797178
2.63607142857143
2.74534304079759
2.84460978835979
2.93550808166193
3.01930787466502
3.09701372701373
3.16943343115218
3.23722590366189
3.30093540718541
3.36101651729401
3.41785267428650
Solution(5):
根據理論,線性方程組係數矩陣的條件數的直觀意義就是初始資料擾動的相對誤差的放大倍數。由於數值計算時舍入誤差等因素,初始資料的微小擾動難以避免,因此解病態方程組時,這種微小的初始相對誤差將被病態矩陣巨大的條件數所放大,最後造成計算結果的巨大偏差。