在代码中实现常见白皮书数学习语的常用方法是什么?

时间:2012-05-23 17:52:31

标签: algorithm design-patterns math implementation notation

我正在寻找一种可以解释白皮书中常见数学运算的资源,条件是具有最小数学背景的编码员可以理解编码习语 - for loops等。

我经常在不同的方程式中看到相同类型的符号,并且通常会产生易于理解的算法。概述符号的含义将使学术论文更容易理解。

3 个答案:

答案 0 :(得分:2)

我一直使用这个网站进行翻译成代码的复杂数学运算。我从未高中毕业。

http://www.wolframalpha.com/

答案 1 :(得分:2)

我能想到的唯一不明显的算法(算术,触发函数等),并且代码中的直接等价物是sum,Σ和product Π

Σ a[i]这样的东西是:

 sum = 0;
 for (i = 0; i < len(a); ++i) sum += a[i];

以及一些相关的细节:下标(行下面的小数字)通常与数组索引相同(因此i中的Σ a[i]可能写得很小,位于右下方a)。类似地,i值的范围(此处为0a的长度)可以作为Σ右侧的两个小数字给出(起始值, 0,在底部,在顶部完成值n

,同等产品为Π a[i]

product = 1;
for (i = 0; i < len(a); ++i) product *= a[i];
xan中的

update 建议覆盖矩阵。那些变得复杂,但最简单的你可能会看到类似的东西:

a[i] = M[i][j] b[j]

ij更有可能是下标,如上所述。并且暗示循环:

for (i = 0; i < len(a); ++i) {
    a[i] = 0;
    for (j = 0; j < len(b); ++j) a[i] += M[i][j] * b[j]
}
更糟糕的是,通常会将其简写为a = M b并且您应该填写自己的所有内容....

更新2 the paper you reference below中的第一个等式为w(s[i],0) = alpha[d] * Size(s[i])。据我所知,这只不过是:

double Size(struct s) { ... }

double w(struct s, int x) {
    if (x == 0) return alpha[d] * Size(s);
    ...
}

和其他术语同样看起来很奇特,但实际上并不复杂的函数调用和乘法。请注意|...|abs(...)而“点”是乘法(我认为)。

答案 2 :(得分:1)

“常见数学运算”取决于您习惯解决的问题类型。它们的范围可以从简单的算术(+, - ,*,/)到微积分(积分,求和,导数,偏微分方程,基质等)。

“共同”对您和您的开发团队意味着什么?