58得票2回答
在计算c属于[-1,1]时,稳定地计算sqrt((b²*c²) / (1-c²))的方法。

对于某些在[-1, 1]范围内的实数b和c,我需要计算: sqrt( (b²*c²) / (1-c²) ) = (|b|*|c|) / sqrt((1-c)*(1+c)) 当c接近1或-1时,分母会出现灾难性取消。平方根也可能没有帮助。 我想知道是否有巧妙的技巧可应用于此处,以避免在c=1和c...

24得票1回答
当添加零时,numpy.sum的行为很奇怪

我明白在数值计算中,等价的数学运算可能由于数字误差而导致不同的结果(例如以不同的顺序对浮点数求和)。 然而,令我惊讶的是将零添加到sum中可以改变结果。 我认为这适用于浮点数,无论如何:x + 0. == x。 以下是一个例子。我期望所有的行都是完全为零。 有人能否解释为什么会发生这种情况...

24得票4回答
在Python中,接近零的小浮点数

我有一个用Python编写的贝叶斯分类器,问题是当我将特征概率相乘时,会得到非常小的浮点数值,比如2.5e-320之类的,然后突然变成0.0。对我来说,0.0显然没有用,因为我必须找到"最佳"类别,基于哪个类别返回最大值(更大的值)。 应该如何处理这种情况?我想过查找数字的指数部分(-320...

22得票1回答
为什么在进行卡方检验前要将数据按降序排序再求和?

chisq.test函数在R中为什么要在求和之前按降序排序数据? 有关的代码如下:STATISTIC <- sum(sort((x - E)^2/E, decreasing = TRUE)) 如果我因使用浮点运算而担心数值稳定性,并希望使用一些易于部署的技巧,那么在求和之前按增加顺序对...

18得票5回答
在GLSL中实现强壮的atan(y,x)函数以将XY坐标转换为角度

在GLSL中(具体来说是我使用的3.00版本),有两个版本的atan()函数:atan(y_over_x)只能返回从-PI/2到PI/2之间的角度,而atan(y/x)可以考虑所有四个象限,因此角度范围涵盖了从-PI到PI的所有内容,就像C++中的atan2()一样。 我想使用第二个atan...

12得票5回答
四元数与数值稳定性

我正在学习单位四元数以及如何使用它们表示和组合旋转。维基百科称它们比矩阵表示更具数值稳定性,但没有给出参考。有人可以向我解释一下(最好附上一些数学推理),为什么在处理旋转时(例如OpenGL应用程序),使用单位四元数比旋转矩阵更具数值稳定性?这只是因为避免万向节锁吗?

12得票1回答
C++:浮点算术稳定性的策略

有没有人可以推荐一些C++库/例程/包,其中包含维护各种浮点运算稳定性的策略? 例如:假设你想要对一个具有一百万个 long double 元素的向量/数组求和,每个数在区间 (0,1) 内且数量级相当。用朴素方法进行求和 for (int i=0;i<1000000;++i) sum...

10得票4回答
如何检查和处理非常接近零的数字

我在C++中进行一些数学计算,看起来会生成一些非常接近于零的小数(我怀疑三角函数调用可能是我的真正问题),但我希望能够检测这些情况,以便更详细地研究它们。 我目前正在尝试以下内容,它正确吗?if ( std::abs(x) < DBL_MIN ) { log_debug("d...

9得票1回答
Java代码优化导致数值不准确和错误。

我正在尝试在Java中实现一个版本的模糊C均值算法,并尝试通过仅计算可以仅计算一次的所有内容来进行优化。 这是一个迭代算法,关于矩阵更新,像素x聚类成员矩阵U(一行中的值之和必须为1.0),这是我想要优化的更新规则: 其中,x是矩阵X(像素x特征)的元素,v属于矩阵V(聚类x特征)。m...

8得票2回答
数值稳定的实现

我是一名有帮助的助手,以下是您需要翻译的内容: 我需要在Matlab中计算一个向量的归一化指数。 简单地写 res = exp(V)/sum(exp(V)) 在V的一个元素中发生溢出,其值大于log(realmax)= 709.7827。(我不确定欠流条件。) 如何实现以避免数值不...