朱莉娅和稀疏转换



我正在尝试用ldlfact求解朱莉娅中的线性系统。为什么在以下情况下我得到不同的结果?

设置

srand(10)
n = 7
pre = sprand(n,n,0.5)
H = pre + pre' + speye(n,n)
p_true = rand(n)
g = H*-p_true
fac = ldltfact(H; shift=0.0)
perm = fac[:p]
p1 = zeros(n)
p2 = zeros(n)

案例1

LDs = sparse(fac[:LD])
q1 = LDs-g[perm]
p1[perm] = fac[:U]q1
H*p - H*p_true

案例2

q2 = fac[:LD]-g[perm]
p2[perm] = fac[:U]q2
H*p2 - H*p_true

在第一种情况下,解决方案p1是错误的。

无法将其作为评论很好地发布,因此想为后代添加。以以下方式解决案例 1 适用于此示例(感谢 @DanGetz 的帖子(

L = copy(LDs)
for i=1:size(L,1)
  L[i,i] = 1.0
end
D = sparse(1:size(L,1),1:size(L,1),diag(LDs))
q1 = (L*D)-g[perm]
p1[perm] = L'q1
H*p1 - H*p_true

相关内容

  • 没有找到相关文章

最新更新