在将该矩阵发送给求解器之前,将双精度矩阵数组划分为大数的逻辑是什么?

时间:2017-01-12 06:26:54

标签: c++ arrays matrix fortran

我给出了一个代码,当汇编矩阵[A]时,它将[A] {X} = [B]中[A]的成员分成10 ^ 4。 然后它还将结果数组除以此数字以计算正确的值。 我不明白为什么要这样做?双精度是否对它可以容纳的整数有限制;所以这个代码的制造商想增加浮动数字的数量?或许他误解了双精度的概念?

2 个答案:

答案 0 :(得分:0)

没有看到代码,很难说。

有时,出于IO原因而不是计算原因进行缩放。

如果' * 1E-4'如果是单精度,则可能会对输入数据进行离散化,并且计算结果可以是双精度。

显然看到代码可以提供帮助。

答案 1 :(得分:0)

除以某个常量不会提高解的精度,因为浮点数具有指数表示。因此,通过一些大数量的缩放将在很大程度上影响指数并且在较小程度上影响有效位。 求解时数值上较难的部分是添加不同数量级的浮点数,因为这会影响有效位的数量。但是,由于指数的差异保持不变,因此不会受到全局缩放的影响。同样,除法,乘法和平方根也不会受到影响。

影响解决方案的是使用不同的缩放因子,例如。强制对称A的对角线为1。然而,这主要有助于迭代求解器,而cholesky分解和类似只会受到较小程度的影响。