由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 数值计算里的几个损失精度的操作
相关主题
[合集] 关于浮点数计算和underflowMatlab 中怎样设置坐标轴刻度的精度
这种数值的问题怎么办呢c++如何把小数转成二进制输出到文本文件?
(0.1+0.05)>0.15返回TRUEC++怎么不打印小数结尾的0
糊涂了,text string转换成blob存入数据库,size是要变大吗?double to float的精度损失?
shrink png image, size居然变大了,咋回事?[合集] Linux/Unix下时间的精度 (转载)
如何实现微秒精度的time stampmatlab C API 怎么用啊??
随机数与概率比较简单的Java数据输入验证问题
请问c语言中double cast成float 会损失多少精度C中的精度问题
相关话题的讨论汇总
话题: 计算话题: 数值话题: 精度话题: 问题话题: 分式
进入Programming版参与讨论
1 (共1页)
t****t
发帖数: 6806
1
不应该混淆起来.
* 两个相近的数相减, 是损失有效数字, 也就是说相对误差变大.
* 下溢,是运算结果小于浮点系统能表示的最小正数,而变成0.这个误差当然更大了.
* 除数比较小时,商的绝对误差变大.
* 大数和小数相加, 小数的有效数字被吃掉. 所以相加的顺序要安排好.
* 函数的导数在某点很大时, 函数会放大误差
这都是数值计算的基本概念,不知道有什么好 argue的...
g*****g
发帖数: 34805
2
好久不搞这个了,不过数值计算书上写得很清楚。

【在 t****t 的大作中提到】
: 不应该混淆起来.
: * 两个相近的数相减, 是损失有效数字, 也就是说相对误差变大.
: * 下溢,是运算结果小于浮点系统能表示的最小正数,而变成0.这个误差当然更大了.
: * 除数比较小时,商的绝对误差变大.
: * 大数和小数相加, 小数的有效数字被吃掉. 所以相加的顺序要安排好.
: * 函数的导数在某点很大时, 函数会放大误差
: 这都是数值计算的基本概念,不知道有什么好 argue的...

d*****l
发帖数: 8441
3
你自己把第一条和第四条混淆了,
用第一条根本不能解决kukutf所遇到的那个问题,应当用第四条。

【在 t****t 的大作中提到】
: 不应该混淆起来.
: * 两个相近的数相减, 是损失有效数字, 也就是说相对误差变大.
: * 下溢,是运算结果小于浮点系统能表示的最小正数,而变成0.这个误差当然更大了.
: * 除数比较小时,商的绝对误差变大.
: * 大数和小数相加, 小数的有效数字被吃掉. 所以相加的顺序要安排好.
: * 函数的导数在某点很大时, 函数会放大误差
: 这都是数值计算的基本概念,不知道有什么好 argue的...

t****t
发帖数: 6806
4
他的问题麻烦着呢,不是某一条就能解决的.在没有办法变形公式的时候, 提高精度是唯
一的办法.

【在 d*****l 的大作中提到】
: 你自己把第一条和第四条混淆了,
: 用第一条根本不能解决kukutf所遇到的那个问题,应当用第四条。

d*****l
发帖数: 8441
5
现在的问题不光是提高精度就行了。如果不安排好运算顺序的话,
即使在较高的精度下,算法的差别也还是很大的。同样,“变形公式”
也可能就包含了运算顺序的调整。现在他用提高精度的办法早就
得到结果了,只是很慢而已。我们在此基础上讨论当然是想炸算法
的油了。

【在 t****t 的大作中提到】
: 他的问题麻烦着呢,不是某一条就能解决的.在没有办法变形公式的时候, 提高精度是唯
: 一的办法.

d*****l
发帖数: 8441
6
他混淆第一和第四条情形。
所以我们要应用才能知道应当使用那一条理论来解决问题。
不是随便拿哪一条来用就可以的。

【在 g*****g 的大作中提到】
: 好久不搞这个了,不过数值计算书上写得很清楚。
k****f
发帖数: 3794
7
其实两位就不要吵了。那个公式溢出的问题,确实是double数中有效位不够导致的
求和中,经常出现两个数(来自不同的n个数的乘积),相加却很小很小的。
把问题转成整数,已经用gmp的mpz_t解决,速度虽然慢了一些,还是比mpf_t快多了。
还好找了1千多个cpu分开算,不然要等死我了。
现在问题是误差是有一些的,不过数值上是很稳定的。不会正负号都不对的。
如果两位还有空,顺便看看这种分式逼近怎么做的。
一个浮点数a,可以用连分式式逼近a(n)/q(n),而且收敛很快的。是O(1/q(n)^2)
如果有2个浮点数a,b,怎么找两个逼近序列:
(a(n)/q(n),b(n)/q(n)),收敛到a和b的速度和连分式差不多的?
注意分母q(n)是相同的。

【在 d*****l 的大作中提到】
: 现在的问题不光是提高精度就行了。如果不安排好运算顺序的话,
: 即使在较高的精度下,算法的差别也还是很大的。同样,“变形公式”
: 也可能就包含了运算顺序的调整。现在他用提高精度的办法早就
: 得到结果了,只是很慢而已。我们在此基础上讨论当然是想炸算法
: 的油了。

d*****l
发帖数: 8441
8
也不是吵,是对问题solution的理解不同,毕竟我们对你的问题
了解程度也有限。
啊,真富有!羡慕啊, 1000多CPU!早知道我们就不用讨论了啊。
不过你的问题是很有趣的。

【在 k****f 的大作中提到】
: 其实两位就不要吵了。那个公式溢出的问题,确实是double数中有效位不够导致的
: 求和中,经常出现两个数(来自不同的n个数的乘积),相加却很小很小的。
: 把问题转成整数,已经用gmp的mpz_t解决,速度虽然慢了一些,还是比mpf_t快多了。
: 还好找了1千多个cpu分开算,不然要等死我了。
: 现在问题是误差是有一些的,不过数值上是很稳定的。不会正负号都不对的。
: 如果两位还有空,顺便看看这种分式逼近怎么做的。
: 一个浮点数a,可以用连分式式逼近a(n)/q(n),而且收敛很快的。是O(1/q(n)^2)
: 如果有2个浮点数a,b,怎么找两个逼近序列:
: (a(n)/q(n),b(n)/q(n)),收敛到a和b的速度和连分式差不多的?
: 注意分母q(n)是相同的。

k****f
发帖数: 3794
9
1000多cpu还好,关键是root好像不会设置这个cluster。:D
可以统统抢过来用的。。。已经算了好几天,结果看上去很对。

【在 d*****l 的大作中提到】
: 也不是吵,是对问题solution的理解不同,毕竟我们对你的问题
: 了解程度也有限。
: 啊,真富有!羡慕啊, 1000多CPU!早知道我们就不用讨论了啊。
: 不过你的问题是很有趣的。

d*****l
发帖数: 8441
10
congratulations.
你是搞啥计算啊,这么尖端?

【在 k****f 的大作中提到】
: 1000多cpu还好,关键是root好像不会设置这个cluster。:D
: 可以统统抢过来用的。。。已经算了好几天,结果看上去很对。

k****f
发帖数: 3794
11
算概率呀,一个生物上的概率问题
要验证simulation的结果是对的
需要理论推导,然后计算出来。

【在 d*****l 的大作中提到】
: congratulations.
: 你是搞啥计算啊,这么尖端?

d*****l
发帖数: 8441
12
我给你发了封信。
这样吧,你把你的这个连分式的问题再说详细点给我发过来?
另外如果不是概率密度,而单单是概率计算,碰到奇大的数的可能性
也许不是非常多。

【在 k****f 的大作中提到】
: 其实两位就不要吵了。那个公式溢出的问题,确实是double数中有效位不够导致的
: 求和中,经常出现两个数(来自不同的n个数的乘积),相加却很小很小的。
: 把问题转成整数,已经用gmp的mpz_t解决,速度虽然慢了一些,还是比mpf_t快多了。
: 还好找了1千多个cpu分开算,不然要等死我了。
: 现在问题是误差是有一些的,不过数值上是很稳定的。不会正负号都不对的。
: 如果两位还有空,顺便看看这种分式逼近怎么做的。
: 一个浮点数a,可以用连分式式逼近a(n)/q(n),而且收敛很快的。是O(1/q(n)^2)
: 如果有2个浮点数a,b,怎么找两个逼近序列:
: (a(n)/q(n),b(n)/q(n)),收敛到a和b的速度和连分式差不多的?
: 注意分母q(n)是相同的。

1 (共1页)
进入Programming版参与讨论
相关主题
C中的精度问题shrink png image, size居然变大了,咋回事?
python中的round命令怎么不管用了?如何实现微秒精度的time stamp
请教关于float的精度和比较随机数与概率
matlab里面怎么设置最大最小数的精度?请问c语言中double cast成float 会损失多少精度
[合集] 关于浮点数计算和underflowMatlab 中怎样设置坐标轴刻度的精度
这种数值的问题怎么办呢c++如何把小数转成二进制输出到文本文件?
(0.1+0.05)>0.15返回TRUEC++怎么不打印小数结尾的0
糊涂了,text string转换成blob存入数据库,size是要变大吗?double to float的精度损失?
相关话题的讨论汇总
话题: 计算话题: 数值话题: 精度话题: 问题话题: 分式