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)是相同的。
|