Fortran Coder

标题: MKL_DSS solver 计算结果精度控制(高维数稳定计算) [打印本页]

作者: duty    时间: 2014-4-8 00:15
标题: MKL_DSS solver 计算结果精度控制(高维数稳定计算)
迭代调用mkl_dss solver求解大型非线性方程组,每次计算结果都有差别。单步执行后,发现mkl_dss solver在给定同样的输入下,每次给出的输出都略有差别,这些差别在迭代过程中累计,就使得最终非线性方程组收敛到不同的解,或者有时候就不收敛。(在方程维数高的情况下尤甚)。

求高人指点如何控制mkl_dss solver的计算结果精度,从而保证每一次调用它,在相同的输入情况下,使其输出结果相同。


作者: pasuka    时间: 2014-4-8 08:12
1、非线性方程组求解问题最好还是用迭代法,直接分解法不是太合适
2、即使采用迭代法,也需要针对实际情况使用不同的预处理措施
作者: duty    时间: 2014-4-8 09:51
pasuka 发表于 2014-4-8 08:12
1、非线性方程组求解问题最好还是用迭代法,直接分解法不是太合适
2、即使采用迭代法,也需要针对实际情况 ...

我是用牛顿法迭代求解,每次迭代式求解线性方程组,现在的问题出现在每次求解线性方程组,相同的方程参数,会有不同的结果输出,虽然相差不大~
作者: duty    时间: 2014-4-8 11:03
貌似找到解决办法啦~
将Use Intel Math Kernel Library 设置为 Sequential(/Qmkl:sequential)就好了~
如下图所示





欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2