- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 C++ 中的 dgesv 和 dgemm fortran 子例程来执行一些简单的矩阵乘法和左除法。
对于随机矩阵 A 和 B,我这样做:
A\(A\(A*B));
其中 * 使用 dgemm 定义,而\使用 dgesv 定义。显然,这个表达式应该简化为单位矩阵。我正在针对 MATLAB 测试我的答案,我在对角线上或多或少地得到了 1,但其他条目略微偏离(数字在 e-15 的数量级,所以它们已经接近 0) .
我只是想知道这个结果是否符合预期?因为如果我这样做:
C = A+B;
D = A*B;
D\(C\(C*C));
结果应该交给D\C。基本上,C(C*C) 非常准确(与 MATLAB 完美匹配),但第二次我执行 D\C 我得到的结果是 e-1 甚至 e+00。我猜这不应该发生?
最佳答案
您的问题似乎与 C/C++ 中浮点变量的有限精度有关。您可以阅读更多相关信息 here .有一些技术可以最大限度地减少这种影响(其中一些在 wiki 文章中有所描述),但在几次操作后总会有一些准确性损失。您可能想要使用一些支持任意精度数字的第三方数学库(例如 GMP)。但是仍然 - 只要您坚持使用数值方法,您的计算的准确性就会始终受到污染。
关于c++ - dgesv 中的舍入错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13235941/
我正在使用 C++ 中的 dgesv 和 dgemm fortran 子例程来执行一些简单的矩阵乘法和左除法。 对于随机矩阵 A 和 B,我这样做: A\(A\(A*B)); 其中 * 使用 dgem
在 LAPACK 文档中, dgesv 求解一般线性方程组 AX=B。 dgetrs 使用 DGETRF 计算的 LU 分解求解一般线性方程组 AX=B、AT X=B 或 AH X=B。 有什么区别?
我想使用 C++ 中的 Lapack 包求解线性方程组。我计划像 this 那样实现它使用 here 中的例程, 即 dgesv。 这是我的代码: unsigned short int n=profe
在 LAPACK 文档中,它指出 DSGESV(或复数的 ZCGESV)是: The dsgesv and zcgesv are mixed precision iterative refinemen
我是一名优秀的程序员,十分优秀!