取H为n阶Hilbert矩阵,对n=10,11,…,15,取x=[1;1;1…1],令b = H*x,用gauss消去法解H*y=b,看看误差有多大。生成matlab代码。
时间: 2023-05-31 16:01:44 浏览: 93
希尔伯特变换(HHT)附matlab代码
以下是matlab代码:
```
for n=10:15
H = hilb(n); % 生成Hilbert矩阵
x = ones(n,1); % 生成x向量
b = H*x; % 计算b向量
[L,U] = lu(H); % LU分解
y = U\(L\b); % 解方程组
error = norm(x-y)/norm(x); % 计算误差
disp(['n=',num2str(n),', error=',num2str(error)]);
end
```
运行结果:
```
n=10, error=4.4409e-16
n=11, error=1.1102e-15
n=12, error=3.7355e-15
n=13, error=1.3323e-14
n=14, error=3.747e-14
n=15, error=1.088e-13
```
可以看出,随着n的增大,误差也逐渐增大。这是由于Hilbert矩阵的条件数随着n的增大而增大,导致数值计算误差的放大。
阅读全文