- 在线时间
- 6 小时
- 最后登录
- 2018-9-11
- 注册时间
- 2008-11-20
- 听众数
- 5
- 收听数
- 0
- 能力
- 0 分
- 体力
- 78 点
- 威望
- 0 点
- 阅读权限
- 20
- 积分
- 32
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 16
- 主题
- 10
- 精华
- 0
- 分享
- 0
- 好友
- 5
升级   28.42% TA的每日心情 | 难过 2012-9-12 20:55 |
|---|
签到天数: 1 天 [LV.1]初来乍到
 群组: 狂热数模爱好者 群组: Matlab讨论组 |
Clapack包是求解线性方程组的常用工具,根据要处理的数据类型不同,很多函数提供多种实现。
: O. Y% y( W' \/ m. j$ U! N# H8 [例如,对于线性最小二乘问题,min||Ax-b||,每种函数都有单精度、双精度的实现,如:Sgels/Dgels、Sgelsy/Dgelsy、Sgelss/Dgelss等,其中前缀S说明处理数据是单精度(float),前缀D说明处理数据是双精度(Double)。
7 @& w' J+ s4 H H# l经过使用发现,对于同样的数据,采用单精度、双精度表示后,使用对应的函数来计算,得到的结果有时不一样,不知道是什么原因。9 Z: m2 m: d. [( `1 `, \ n' F3 P
对于这个问题,在其它地方也发现有问题,例如,清华大学出版社,徐士良编写的《C常用算法程序集(第二版)》里面介绍的很多算法,对应的代码都是double型,如果改为float类型后,即使方程规模很小(3、4个未知数),好多计算结果都不相同,某些结果甚至是错误的。
* S, G# `' A# J" u5 {# ^( ^; i. j采用相同的算法,为什么数据类型不同,差异就这么大,不知有谁可以解释一下! |
zan
|