首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不稳定希尔伯特矩阵单位向量

不稳定希尔伯特矩阵单位向量
EN

Stack Overflow用户
提问于 2015-11-09 06:24:49
回答 1查看 471关注 0票数 1

H(n)n阶的希尔伯特矩阵。

e = (0,...,0,1) -单位向量。

e_im := H(n) * e来吧。

我使用了一些计算机代数系统来解决H(n) * x_1 = e_im问题。

r = (r_1,...,r_n)是一个小的随机向量。

(e + r)_im := H(n) * (e + r)来吧。

我使用了一些计算机代数系统来解决H(n) * x_2 = (e + r)_im问题。

为什么residial || H(n) * x_1 - e_im ||如此小,而|| H(n) * x_2 - (e + r)_im||却如此之大?

我使用numpy和scipy.linalg,这是我的代码:

代码语言:javascript
复制
H = scipy.linalg.hilbert(500)

e = numpy.zeros((500, 1))

e[499] = 1

e_im = H.dot(e)

x_1 = scipy.linalg.solve(H, e_im)

r = 0.0001 * numpy.random.rand(500, 1)

e_plusr_im = e + r

x_2 = scipy.linalg.solve(H, e_plusr_im)

Residials = [scipy.linalg.norm(H.dot(x_1) - b_1, 2), scipy.linalg.norm(H.dot(x_2) - b_2, 2)]
EN

回答 1

Stack Overflow用户

发布于 2015-11-09 08:55:07

这是众所周知的数值线性代数现象。大多数线性代数课程材料)。

矩阵的condition number kappa(A) = ||A|| ||A^-1||告诉在一般情况下矩阵求逆放大了多少误差。这里:

代码语言:javascript
复制
>>> import scipy.linalg
>>> import numpy as np
>>> H = scipy.linalg.hilbert(500)
>>> np.linalg.cond(H)
4.6335026663215786e+20

根据经验,对于64位浮点数,(确定性)浮点误差的相对幅度为1e-16。条件数太大了,以至于结果误差的相对大小> 1,所以你可能会失去所有的精度,除非你很幸运,并且解决方案和中间计算有精确的浮点表示。如果手动添加噪波,它也会被放大。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33599726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档