数学中国

 找回密码
 注册
搜索
热搜: 活动 交友 discuz
查看: 3554|回复: 0

[讨论]动态位浮点计算设想

[复制链接]
发表于 2006-2-20 20:59 | 显示全部楼层 |阅读模式
本人是土木工程专业大四的学生。
我在做有限元分析的矩阵运算时,有时遇到病态线性方程组,不能用Scilab(见http://www.scilab.org)等通用程序直接计算,感到很麻烦。我们知道,用计算机求解病态矩阵遇到的问题不是算法不稳定,而是由于计算机硬件的字长有限。所以在求解病态线性方程组时,我们采用双精度浮点来减轻一些病态的影响,但是更多是有针对性地选择特殊算法,例如:奇异分解法、广义逆解法、共轭斜量法等。
我是一个Java(见http://www.sun.com)程序员,学过Java编程的人都知道,Java中float总是32位的,double总是64位的,不管是在32位的CPU上运行,还是在64位的CPU上运行。这与C/C++不同,C/C++的浮点精度由CPU硬件决定。Java标准规定,所有实现浮点运算功能的JVM都必须满足float总是32位,double总是64位(某些手机的Java虚拟机没有实现浮点运算功能)。现在的PC大多数用的是32位的CPU,Java语言在这些32位的CPU上实现64位的double浮点运算,是由JVM在操作系统之上模拟实现的。具体的模拟实现算法我不清楚,最近正在看相关文献。
去年我接触到Python(http://www.python.org)语言,在这个语言中,整数是没有位数限制的,不管CPU的位数精度是多少,只要计算机的内存足够大,它就能进行运算。这一点与Java语言中int总是32位,long总是64位不同。Python的整数无位数限制运算是通过Python虚拟机在操作系统之上模拟实现的。尽管Python的整数可以实现任意位精度的计算,但是Python的浮点运算还是与CPU硬件相关。
??????
我现在的想法是:我们是不是有必要实现一个动态位浮点计算的数学库,在操作系统之上模拟浮点运算,不管CPU是否支持浮点运算,也不管CPU的浮点精度有多少,遇到病态矩阵,这个数学库会自动在运行时增加浮点运算精度,直到浮点精度满足计算需要。
??????
我对数学理论研究不是很深入,我个人感觉寻找求解病态矩阵的方法似乎是一个哲学命题,希望有数学家解答“我们能否从浮点运算精度入手来寻找到一个通用的求解病态矩阵的方法?”
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|数学中国 ( 京ICP备05040119号 )

GMT+8, 2025-6-17 04:03 , Processed in 0.093873 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表