python数字精度_numpy中的精度:比较数字时的问题

先了解一下背景知识。求实对称矩阵的特征值和特征向量,其中行和为0。更具体地说,一旦我找到一个特征向量,我就使用$argsort$来查找对其中一个特征值进行排序的置换,并将该置换应用于原始矩阵。在

现在,我使用numpy包在python中实现了代码。代码本身是递归的,如果它在特征向量中找到一组相等的值,它会提取出与我们有相等值的索引对应的对称子矩阵,然后在这个矩阵上重新应用该算法。在

虽然这一切都很好,而且大部分都是单调乏味的工作,但当一堆本应与特征向量中的相等条目对应的索引没有被认为具有相等的值时,我感到惊讶。问题是这些值是通过某种算法计算到机器精度的(可能是Lanczos,但我对numpy并不完全熟悉)。这是一个示例输出,其中我明确检查了特征向量中两个条目之间的差异:>>> T=spectral.seriation(A,index)

columns [ 0 1 2 3 4 5 6 7 8 9 10 11]

[ 3.30289130e-01 -2.75240941e-01 -2.75240941e-01 3.30289130e-01

-2.75240941e-01 3.30289130e-01 -2.75240941e-01 3.30289130e-01

3.30289130e-01 -2.75240941e-01 -1.69794463e-16 -2.75240941e-01]

[ 4 6 9 1 2 11 10 0 5 7 8 3]

difference -5.55111512313e-17

例程serialization()是一个递归函数。float数组是考虑中的特征向量,下面的数组给出了列的排序顺序。注意,列[4,6,9,1,2,11]具有相同的值。然而,特征向量和特征值的计算总是近似的,实际上,当我输出第9列和第2列中的条目之间的差时,它是非零的。当算法应该分组[4,6,9,1,2,11]时,它只将[4,6,9]分组,然后将其余的分组到另一个组中,这给工作带来了麻烦。在

所以问题是:有没有一种方法可以在numpy中执行任意精度的计算?如果做不到这一点,什么是解决这个问题的“好”方法?在

另外,我应该提到,可以从数学上证明这些条目必须相等。这是矩阵的一个性质,但希望与问题无关。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值