希尔伯特矩阵

逆希尔伯特矩阵,invhilb最近出场的惊喜科迪在MATLAB编程游戏中心,Ned的一个职位MATLAB语言在这里博客。希尔伯特逆矩阵在MATLAB几乎被遗忘了。他们的回归是由于信号模式的条目。但我想带你回到原来的角色展示生病调节数值计算。

内容

T = invhilb (8);显示亮度图像(签署(T))轴图像,轴colormap(铜)

希尔伯特矩阵

我所知道的希尔伯特矩阵是第一个矩阵的名字。我遇见了我第一个数值分析课程,当我还是一个大三的学生在1959年加州理工学院。由单项矩阵来自最小二乘逼近,$ x ^ {j} $,在单位区间[0,1]美元。H_n美元的元素内的产品下载188bet金宝搏

$ $ h_ {i, j} = \ int_0 ^ 1 x ^{张}x ^ {j - 1} dx = \压裂{1}{i + j - 1} $ $

这是代码生成6-by-6希尔伯特矩阵在一个数组的操作。相似的代码中使用函数hilb这是用MATLAB分布。我用单精度我们可以看到舍入误差矩阵,打印在一个博客页面的宽度。

格式紧凑的格式n = 6 J = 1: n;J = ((n, 1),:);我= J ';E =单((n, n));H = e . / (I + j - 1)
n = 6 H = 1.0000000 0.5000000 0.3333333 0.2500000 0.2000000 0.1666667 0.5000000 0.3333333 0.2500000 0.2000000 0.1666667 0.1428571 0.3333333 0.2500000 0.2000000 0.1666667 0.1428571 0.1250000 0.2500000 0.2000000 0.1666667 0.1428571 0.1250000 0.1111111 0.2000000 0.1666667 0.1428571 0.1250000 0.1111111 0.1000000 0.1666667 0.1428571 0.1250000 0.1111111 0.1000000 0.0909091

糟糕的条件

单项$ x ^ {j}美元几乎是线性依赖于[0,1]美元。所以希尔伯特矩阵接近奇异。H_6堪比美元的条件与单一美元的舍入误差和精度条件H_{12} $可以与双精度舍入误差。

格式e(1 /电导率(hilb(6)每股收益(单(1))][1 /电导率(hilb(12))每股收益(双(1)))
ans e-07 ans = 5.7268 1.1921 = 6.6885 e-08 e-16 e-17 2.2204

l2条件数美元,\ kappa美元,H_n美元就会成倍增长。

$ $ \卡帕(H_n) \大约0.01133 e ^ {3.49 n} $ $

希尔伯特逆矩阵

希尔伯特矩阵有资格作为一个柯西矩阵,该矩阵的条目的形式

$ $现代{i, j} = \压裂{1}{x_i - y_j} $ $

经典Knuth作业或维基百科条目柯西矩阵(参见参考资料)显示了它是如何可能的表达柯西矩阵的逆矩阵的元素的产品涉及x_i的年代和y_j美元美元。下载188bet金宝搏希尔伯特矩阵,这些产品成为二项式系数。下载188bet金宝搏

这是一个程序,生成逆希尔伯特矩阵使用双重嵌套循环和许多标量二项式系数的评估。

类型invh
函数T = invh (n) i = 1: n j = 1: n T (i, j) = (1) ^ (i + j) * (i + j - 1) * nchoosek (n +张n-j) *……nchoosek (n, n + j - 1) * nchoosek (i + j2,张)^ 2;结束结束结束

一个老项目

我所写的第一个程序生成的逆希尔伯特从这些二项式系数矩阵。这是绝对数字机器语言编写的205年Burroughs数据处理机加州理工学院1959年左右。我需要避免耗时的浮点运算,所以我使用递归系数之间的关系。这是MATLAB版本的老程序的核心。很长一段时间这是分布式与MATLABinvhilb。这是科迪参与者发现的功能。

类型invhilb_code
T = 0 (n, n);p = n;因为我= 1:n r = p * p;(我)= r / T(2张);j = i + 1: n r = - ((n-j + 1) * r * (n + j - 1)) / (j - 1) ^ 2;T (i, j) = r / (i + j - 1);T (j, i) = r / (i + j - 1);结束p = ((n) * p * (n + i)) / (i ^ 2);结束

我们可以使用代码生成H_6美元的倒数。

T = invhilb (6)
T = 36 -630 3360 -7560 7560 -2772 -630 14700 -88200 211680 -220500 83160 3360 -88200 564480 -1411200 1512000 -582120 -7560 211680 1512000 -1411200 -3969000 1552320 7560 -220500 1552320 698544 4410000 -1746360 -2772 83160 -582120 -1746360 4410000 -3969000

自一个希尔伯特矩阵的元素是理性的分数,它的逆矩阵的元素也必须理性的分数。但事实证明,所有分数的分母是相等的,所以,如你所见,逆整数条目。大的整数,因此大的条件数。

舍入误差

让我们反T看看我们有多近H

格式发票(单(T))
警告:矩阵接近奇异或严重了。结果可能是不准确的。RCOND = 3.380340 e-08。ans = 1.0102043 0.5085138 0.3406332 0.2563883 0.2056789 0.1717779 0.5085138 0.3404373 0.2560914 0.2053309 0.1714057 0.1471225 0.3406332 0.2560914 0.2052232 0.1712378 0.1469208 0.1286576 0.2563883 0.2053309 0.1712378 0.1468577 0.1285564 0.1143121 0.2056789 0.1714057 0.1469208 0.1285564 0.1142728 0.1028457 0.1717779 0.1471225 0.1286576 0.1143121 0.1028457 0.0934704

我们可以识别一个或两个数字H。因为数量的条件T与单精度凑整水平相当,我们可能将失去所有的数字。舍入误差观测矩阵在实际计算通常是基于条件比不上估计数字预测。

我的项目

50多年前,在我的第一个数值分析课程,我被介绍给矩阵计算教授约翰·托德,我做了一个大学生在他的指导下研究项目。学习的一部分,该项目涉及矩阵求逆的舍入误差。首先,我编写了一个矩阵反演程序。为了评估舍入误差,我希尔伯特生成矩阵,倒我的程序,和比较精确的计算逆逆我刚刚描述的生成的程序。如果我当时MATLAB,这个项目会是这样的。

n = 6;H =单(hilb (n));X =发票(H);T =单(invhilb (n));relerr =规范(固定型、正)/规范(T)
警告:矩阵接近奇异或严重了。结果可能是不准确的。RCOND = 3.570602 e-08。relerr = 0.0470157

(我的老矩阵求逆程序就不会估计条件并发出警告的消息。)

数据处理机的浮点运算有八个小数位数,所以我使用的值n7和观察到的报道relerr舍入误差的结果从矩阵求逆高斯消去法对于这个严重的矩阵。情况下关闭。项目等级:A。

项目进行了复查

我继续在斯坦福大学研究生院,活力四射,后来吉姆·威尔金森遇见乔治。当我来到欣赏威尔金森所做的工作,我意识到我在加州理工学院项目做了一个微妙但重要的错误。今天仍在犯同样的错误。实际上我没有倒希尔伯特矩阵。我倒了浮点近似希尔伯特矩阵。原来第一步——将希尔伯特矩阵的元素的分数浮点数,更大的影响比反演计算逆过程本身。即使我的反演程序可以计算的逆矩阵是给定的,它可能不匹配所产生的结果我理论的逆矩阵希尔伯特计划。

我应该倒逆,因为我不会做任何舍入错误生成的输入。自从开始矩阵的元素是整数,他们完全可以表示浮点数,至少如果n不是太大。我应该互换角色TH在我的项目。

n = 6;T =单(invhilb (n));X =发票(T);H =单(hilb (n));relerr =规范(x H,正)/规范(H)
警告:矩阵接近奇异或严重了。结果可能是不准确的。RCOND = 3.380340 e-08。relerr = 0.0266826

这证实了威尔金森说,和证明。舍入误差引起的反相矩阵使用高斯消去法和部分旋转比得上——在这种情况下,实际上小于四舍五入造成的错误的数据。

棋盘

你可以看到的+ / -符号模式中的元素逆希尔伯特矩阵通过检查T或者是(1)^ (i + j)二项式系数相乘invh。这就是被人玩科迪的注意。我不知道他们遇到它。

引用

[1]唐纳德·e·Knuth计算机编程的艺术,卷1,问题1.2.3-41和1.2.3-45,36 - 37页。,addison - wesley, 1968。

[2]维基百科条目在柯西矩阵,< http://en.wikipedia.org/wiki/Cauchy_matrix>。




发表与MATLAB®R2012b

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。