【发布时间】:2017-01-12 06:26:53
【问题描述】:
在组装矩阵 [A] 时,我得到一个代码,它将 [A]{X}=[B] 中的 [A] 的成员除以 10^4。 然后它还将结果数组除以该数字以计算正确值。 我不明白为什么要这样做?双精度是否对它可以容纳的整数个数有限制?所以这个代码的制造者想要增加浮点数?还是他误解了双精度的概念?
【问题讨论】:
-
什么是“组装”?代码在哪里?是 C++ 还是 Fortran?为什么两个标签?你会为所有可以遇到矩阵的语言添加标签吗?
-
@VladimirF 组装是指将成员 aij 添加到矩阵 [A] 以及相应的 i 和 j 的过程。
-
您应该发布一段显示操作的代码。显然,仅仅划分矩阵并不会改变任何可能的病态。
-
它确实会影响某些浮点运算的准确性。例如。加 1 到。 0000345 比 5e50 加 1 更准确。
-
这取决于用于计算“结果数组”的算法。即使矩阵
A不是病态的,一些矩阵求逆(或求解一组线性方程)稳定性较差的快速算法对非常大或非常小的值的存在很敏感,并且缩放可以减轻在这些情况下舍入错误。在这种情况下所需的比例因子取决于A和B- 所以10^4的固定值似乎是任意的。