- 主题:Re:最近用一个数值计算的库,Debug版和Release版本计算出的结
原帖没把问题描述具体,具体的是eigen的eigen-3.4.0\unsupported\Eigen\LevenbergMarquardt
它支持提供拟合公式的格式,通过提供数据,拟合出参数值。但是通过使用,发现对于复杂的公式,很依赖初始值是不是接近最终值,否则很可能不收敛,最终拟合失败。
本人是这块的小白,加上只是临时帮别人实现一个小功能,完全没动力深入进去调试。至于没有初始化等初级问题,作为资深CPPer,肯定第一步就排除掉的。
所以深度怀疑是这个库本身的缺陷,加上没有动力去调试,最简单的就是找个库来替换,试了一下google家的ceres库,结果就稳定了。
--
FROM 223.70.159.*
eigen的确存在这个问题,做矩阵lu分解和特征值分析都遇到了debug版结果对、release版结果错的问题。而eigen都是头文件,调试编译很花时间。
悄悄的告诉lz一个简单办法,就是换一套编译器。用msvc编译器出问题,有时候用intel c++编译器就可以,或者用nmake。感觉是不同编译器对于模板类的优化编译有很大的差异
--
FROM 117.175.234.*
谢谢,看来不是个案。
换编译器就好总觉得不靠谱,现在我用google家的ceres,问题消失了。
【 在 hdftiger 的大作中提到: 】
: eigen的确存在这个问题,做矩阵lu分解和特征值分析都遇到了debug版结果对、release版结果错的问题。而eigen都是头文件,调试编译很花时间。
: 悄悄的告诉lz一个简单办法,就是换一套编译器。用msvc编译器出问题,有时候用intel c++编译器就可以,或者用nmake。感觉是不同编译器对于模板类的优化编译有很大的差异
: --
: ...................
--来自微微水木3.5.14
--
FROM 49.89.142.*