Tag: math

如何在Haskell中提高这个数值计算的性能?

我正在把David Blei的C潜在Dirichlet分配的C实现移植到Haskell中,我正在试着决定是否在C中留下一些低级的东西。下面的函数就是一个例子 – 它是一个近似值的二阶导数: double trigamma(double x) { double p; int i; x=x+6; p=1/(x*x); p=(((((0.075757575757576*p-0.033333333333333)*p+0.0238095238095238) *p-0.033333333333333)*p+0.166666666666667)*p+1)/x+0.5*p; for (i=0; i<6 ;i++) { x=x-1; p=1/(x*x)+p; } return(p); } 我已经把它翻译成或多或less俗语的Haskell,如下所示: trigamma :: Double -> Double trigamma x = snd $ last $ take 7 $ iterate next (x' – 1, p') where x' = x + 6 p […]

两条消息具有相同的MD5摘要和相同的SHA1摘要的机会是多less?

给定两个不同的消息,A和B(大概20-80个字符的文本,如果大小都有关系),A的MD5摘要与B的MD5摘要相同的概率是多less,A的SHA1摘要是与B的SHA1摘要相同? 那是: (MD5(A) == MD5(B)) && (SHA1(A) == SHA1(B)) 假定没有恶意的意图,也就是说,消息不是为了find冲突而select的。 我只想知道这种情况发生的可能性。 我想这个机会是“天文数字低”,但我不知道如何validation这一点。 更多信息:可能的消息池的大小是有限的,但大(几亿)。 生日悖论的情况正是我所担心的。

进行信号频谱分析时的傅立叶变换(FFT)单位

我的问题与信号的频谱分析结果的物理意义有关,或者将信号投射到FFT中,并使用合适的数字包来解释出现的结果, 特别: 取一个信号,说一个时变电压v(t) 把它扔进一个FFT(你得到一个复数序列) 现在取模数(abs)并将结果平方,即| fft(v)| ^ 2。 所以你现在在y轴上有实数 – 我应该把这些谱系数称为什么? 使用采样分辨率,您遵循食谱配方,并将频谱系数与频率相关联。 在这个点上,你有一个频率为g(w)的频率在x轴上, 但在y轴上有什么物理单位? 我的理解是,这个频谱显示了电压信号中存在多less不同的频率 – 它们是频谱系数,它们是重构原始信号所需的各种频率的正弦和余弦系数。 所以第一个问题是, 这些频谱系数的单位是多less? 这个问题的原因是频谱系数可能很小而且很大,所以我想用一个dB量表来表示它们。 但要做到这一点,我必须做出select: 要么我使用20log10 dB转换,对应于现场测量,如电压。 或者我使用10log10 dB转换,对应于电能等能量测量。 我使用哪种缩放比例取决于单位是什么。 任何灯光在此将不胜感激!

两个矩形相交

我有两个矩形,每个都有4个值: 左侧位置X ,顶部位置Y ,宽度W和高度H : X1, Y1, H1, W1 X2, Y2, H2, W2 矩形不旋转,如下所示: +——————–> X axis | | (X,Y) (X+W, Y) | +————–+ | | | | | | | | | | +————–+ v (X, Y+H) (X+W,Y+H) Y axis 确定两个矩形的交点是否为空的最佳解决scheme是什么?

我怎样才能写一个权力函数呢?

我总是想知道如何做一个function来计算功率(例如2 3 )。 在大多数语言中,这些都包含在标准库中,大部分是pow(double x, double y) ,但是我怎样才能自己写呢? 我正在考虑for loops ,但它认为我的大脑进入循环(当我想要做一个非整数指数的权力,如5 4.5或负面2 – 21 ),我疯了;) 那么,怎样才能写出一个计算实数的函数? 谢谢 哦,也许重要的是要注意:我不能使用function(如exp ),这将使这最终无用。

在Python中使用除法运算符时,如何获得小数值?

例如,标准分割符号“/”舍入为零: >>> 4 / 100 0 但是,我希望它返回0.04。 我用什么?

如何旋转某个点的顶点?

想象一下,在2D空间中有两个点,并且需要将这些点中的一个旋转X度,另一个点作为中心。 float distX = Math.abs( centerX -point2X ); float distY = Math.abs( centerY -point2Y ); float dist = FloatMath.sqrt( distX*distX + distY*distY ); 到目前为止,我只是要find两点之间的距离…任何想法,我应该从哪里去?

将纬度/经度点转换为墨卡托投影上的像素(x,y)

我试图将一个纬度/长点转换成一个2d点,以便我可以将其显示在世界的图像 – 这是一个墨卡托投影。 我已经看到了这样做的几种方式,以及关于堆栈溢出的几个问题 – 我已经尝试了不同的代码片段,虽然我得到了像素的正确经度,但纬度总是偏离 – 似乎越来越合理。 我需要的公式考虑到图像的大小,宽度等 我试过这段代码: double minLat = -85.05112878; double minLong = -180; double maxLat = 85.05112878; double maxLong = 180; // Map image size (in points) Double mapHeight = 768.0; Double mapWidth = 991.0; // Determine the map scale (points per degree) double xScale = mapWidth/ (maxLong – minLong); […]

C ++定点库?

我正在寻找一个免费的C ++定点库(主要用于embedded式设备,而不是任意的精确math)。 基本上,要求是: 没有不必要的运行时间开销:编译时可以做的任何事情都应该在编译时完成。 能够在固定和浮点之间透明地切换代码,没有固有的开销。 定点math函数。 如果你需要来回转动以获取平方根,那么使用固定点就没有多大意义。 占地面积小 有什么build议么?

find(稀疏)图的直径的好algorithm?

我有一个大的,连接,稀疏graphics的邻接表格forms。 我想find两个尽可能相距较远的顶点,即图的直径和实现它的两个顶点。 我对这个问题感兴趣,无论是针对不同的应用程序,还是无向和有针对性的案例。 在有针对性的情况下,我当然关心指向距离(从一个顶点到另一个顶点的最短的有向path)。 有没有比计算所有对最短path更好的方法? 编辑 :通过“尽可能远”,我当然是指“最长的最短path” – 即从一个到另一个的最短距离的所有顶点对的最大值。