我在网上浏览了《Concrete Maths》的内容。我至少听说过提到的大多数函数和技巧,但是有一个完整的特殊数字部分。这些数字包括斯特林数、欧拉数、调和数等等。现在我从未遇到过这些奇怪的数字。它们如何帮助计算问题?它们通常在哪里使用?
我在网上浏览了《Concrete Maths》的内容。我至少听说过提到的大多数函数和技巧,但是有一个完整的特殊数字部分。这些数字包括斯特林数、欧拉数、调和数等等。现在我从未遇到过这些奇怪的数字。它们如何帮助计算问题?它们通常在哪里使用?
调和数几乎出现在任何地方!音乐和谐,快速排序分析... 斯特林数(第一类和第二类)出现在各种组合和分区问题中。 欧拉数也出现在多个位置,最显着的是排列和多对数函数系数。
调和数是对数的离散模拟,因此它们在差分方程中出现,就像对数在微分方程中出现一样。以下是与调和数相关的调和平均物理应用的示例。请参阅书籍Gamma,了解许多调和数的实际应用,特别是其中的“这是一个调和世界”章节。
你想找出计算2个数字的最大公约数所需时间最长的时刻:尝试使用2个连续的斐波那契数。
你想大致估算一个大数的阶乘,但是你的阶乘程序太慢了:使用Stirling逼近。
你正在测试质数,但是对于某些数你总是得到错误的答案:可能是你正在使用费马素性检验,这种情况下Carmicheal数是罪魁祸首。
我能想到的最常见的一般情况是在循环中。大多数情况下,你使用(start;stop;step)
类型的语法指定一个循环,在这种情况下,通过使用涉及的数字的属性可以减少执行时间。
sum = n*(n + 1)/2
要慢。
有很多类似的例子。其中许多都是在密码学中,信息系统的安全有时取决于这些技巧。它们也可以帮助你解决性能问题、内存问题,因为当你知道公式时,你可能会找到更快/更有效的计算其他事物的方法——那些你真正关心的事物。
欲了解更多信息,请查看维基百科,或者尝试一下Project Euler。你很快就会发现模式。
并不一定是您提到的参考文献中的魔法数字,但尽管如此--
0x5f3759df
——臭名昭著的魔法数字,用于通过给出牛顿根逼近的良好初步估计来计算一个数的倒数平方根,这常被归因于约翰·卡马克的工作- 更多信息在这里。
不涉及编程,是吧?:)
这和编程直接相关吗?肯定是有关系的,但我不知道关系有多密切。
特殊数字,如e、pi等等,随处可见。我认为没有人会对这两个数字产生争议。黄金分割在艺术和其他特殊数字本身中也频繁出现(看看连续斐波那契数之间的比率就知道了)。
许多数列和数族在数学和编程中也经常出现。一个美丽的地方是整数序列百科全书。
我建议这是一种经验问题。例如,当我很多年前学习线性代数时,我了解了矩阵的特征值和特征向量。我承认,在我看到它们在各种地方的应用之前,我完全没有意识到特征值/特征向量的重要性。在统计学中,从协方差矩阵中告诉你关于估计不确定性、置信椭圆的大小和形状、主成分分析或马尔可夫过程的长期状态。在数值方法中,它们告诉你一个方法的收敛性,无论是在优化还是在ODE求解器中。在机械工程中,你会看到它们作为主应力和应变。