开发者社区> 问答> 正文

在Numpy和手动计算之间获得不同的答案

我有几种矩阵:

A=np.array([[-4, -1, -3] ,[1, -4,5],[ 3,4,3],[-5, -1,2]])
b = np.array([[-1], [4],[-4],[-2]])
x=np.array([[ 0.58732799],[-1.19370936],[-0.22879177]])

我想计算残差,r = Ax-b

r=A@x-b

print(r)

[[ 0.53077272]
 [ 0.21820656]
 [ 0.30077121]
 [-0.20051414]]

如果我遵循r的范数,则会得到:

print(np.linalg.norm(r))
0.678235

如果我在numpy中执行相同的操作,则会得到不同的答案:

x,residuals,rank,sigma=np.linalg.lstsq(A,b,rcond=None);
print("Vector x:\n " + repr(x))
print(residuals)


Vector x:
 array([[ 0.58732799],
       [-1.19370936],
       [-0.22879177]])
[0.46000302]

即,残差不相同。有人知道为什么吗?

问题来源:stackoverflow

展开
收起
is大龙 2020-03-23 19:55:10 350 0
1 条回答
写回答
取消 提交回答
  • https://docs.scipy.org/doc/numpy/reference/generation/numpy.linalg.lstsq.html 说:

    残渣: 残渣之和;平方欧几里德2-范数

    它是您在第一个示例中计算的平方。

    >>> 0.678235 * 0.678235
    0.460002715225
    

    回答来源:stackoverflow

    2020-03-23 19:55:17
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
重新定义计算的边界 立即下载
图计算及其应用 立即下载
图计算优化技术探索 立即下载