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得票4回答
在Python中,接近零的小浮点数

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

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

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

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

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

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

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

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...

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

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

7得票1回答
CVXPY抛出“SolverError”异常的具体原因是什么?

我正在使用CVXPY(版本1.0)解决一个二次规划(QP),但通常会出现以下异常:SolverError: 求解器“xxx”失败。请尝试另一个求解器。这使得我的程序非常脆弱。我已经尝试了不同的求解器,包括CVXOPT、OSQP、ECOS、ECOS_BB、SCS等。它们都或多或少存在相同的问题。...

7得票2回答
如何实现一个数值稳定的加权对数求和?(涉及IT技术)

什么是最稳定的计算方式来计算: log[(wx * exp(x) + wy * exp_y)/(wx + wy)] 这里的权重 wx、wy > 0 是什么意思? 如果没有权重,这个函数就是 logaddexp,可以使用NumPy在Python中实现: tmp = x - y r...

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

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