gpt4 book ai didi

python - 减少矩阵 SVD 中的舍入误差

转载 作者:行者123 更新时间:2023-12-01 03:54:57 27 4
gpt4 key购买 nike

我必须对矩阵进行 SVD,但它有一些错误,在下面的示例中 U[1][1]U[2][1]U[2][0] 应为 0

enter image description here

问题是,上面的例子只是一个测试,我必须使用条件不太好的大型矩阵,我该怎么做才能相信我会得到的结果?

最佳答案

根据大多数标准,1e-17 被视为 0

例如,它通过了np.allclose测试

In [582]: A=np.array([1,-1,1,1,1,1]).reshape(3,2)

In [583]: U,d,V=np.linalg.svd(A)

In [584]: U
Out[584]:
array([[ -8.56248666e-17, 1.00000000e+00, -6.40884929e-17],
[ -7.07106781e-01, 2.53974359e-17, -7.07106781e-01],
[ -7.07106781e-01, 2.53974359e-17, 7.07106781e-01]])

In [585]: y=np.array([[0,np.sqrt(2),0],[-1,0,-1],[-1,0,1]])/np.sqrt(2)

In [586]: y
Out[586]:
array([[ 0. , 1. , 0. ],
[-0.70710678, 0. , -0.70710678],
[-0.70710678, 0. , 0.70710678]])

In [587]: np.allclose(U,y)
Out[587]: True

关于python - 减少矩阵 SVD 中的舍入误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37638274/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com