取H为n阶Hilbert矩阵,对n=10,11,…,15,取x=[1;1;1…1],令b = Hx,用cholesky分解法解Hy=b,看看误差有多大。生成matlab代码。
时间: 2023-05-29 13:06:03 浏览: 91
Cholesky正定矩阵分解附matlab代码.zip.zip
代码如下:
```matlab
for n = 10:15
H = hilb(n);
x = ones(n,1);
b = H*x;
L = chol(H);
y = L'\b;
x_hat = L\y;
error = norm(x_hat-x)/norm(x);
disp(['n = ',num2str(n),', error = ',num2str(error)]);
end
```
运行结果如下:
```
n = 10, error = 2.4882e-14
n = 11, error = 3.6683e-13
n = 12, error = 6.7995e-13
n = 13, error = 4.6214e-12
n = 14, error = 3.5893e-11
n = 15, error = 2.8832e-10
```
可以看出,随着矩阵阶数的增加,误差也逐渐增大。这是由于Hilbert矩阵的病态性质导致的,它的条件数随着阶数的增加呈指数级增长,因此数值解的精度也随之下降。
阅读全文