【发布时间】:2016-02-09 13:03:30
【问题描述】:
令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。
为什么剩余的|| H(n) * x_1 - e_im ||这么小,而|| H(n) * x_2 - (e + r)_im||却这么大?
我使用 numpy 和 scipy.linalg,我的代码:
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)]
【问题讨论】:
-
您应该显示一些代码以提供帮助。这可能取决于所使用的算法类型。
-
@Warren Weckesser,是的
标签: numpy matrix scipy linear-algebra numerical-methods