的魅力:
今天是3.14,15点,正是圆周率π的前6位数字,由于探索π的漫长而又奇妙,从到一块古巴比伦石匾到割圆术再到最后π的级数展开,中间经历无数代数学家或爱好者的努力研究,下面就让我来介绍一些具代表性的。
最美公式之一 ———欧拉公式
将将最简单的虚数实数两个最具代表性无理数都包含进来。当然也开启了复分析的研究,可谓“天堑变通途”
的连分式展开
是不是很神奇呀
的展开
玩大学数学竞赛的同学肯定不陌生,这个叫啥公式我也忘了,证明也很巧妙但是都成经典手段:
巴塞尔问题——zeta函数
额,这个很出名吧!喜欢数学的人一定会被欧拉大神的思维惊艳(可能现在看来解法很多,但是当时那个年代,欧拉的著作是极具创造力的,而创造和创新能力上正是数学家与我们这些业余爱好者差距最大的地方,向欧拉大神致敬。
的泰勒展开
这个高等数学的知识,很容易吧!展开就出来了,不过现在技术根本不用它来计算收敛速度太慢了。
拉马努金恒等式
这么鬼畜的等式,是人想象出来的?是"娜玛卡女神在梦中用公式向他的启示",也就拉马努金最有直觉的数学家可以想出来吧!呜呜呜,看着大神的公式,感觉自己智商无穷小。
公式
也是一个很神奇的公式,由发现,大学生做高数经常用衍生出来的点火公式。
斯特林公式
这个竞赛用的比较多,和有联系。
泊松积分
证法也比较多,在正态分布中运用较多。
无穷积分
很多积分出来都有出现,这个也不例外
拉马努金连分式
这么鬼畜当然是我们的灵感数学家啦!
无穷级数
这个无穷级数咋之前介绍过,方法很多,蛮简单的。
BBP公式
很鬼畜,证法很巧妙,有兴趣可以看看证明,虽然证明过于奇巧用处不大,但是这个公式本身还是很有用很牛逼的,理论上可以将任意位求出,下面贴上用JAVA实现BBP算法
private static final BigDecimal ONE = BigDecimal.ONE;
private static final BigDecimal TWO = new BigDecimal(2);
private static final BigDecimal FOUR = new BigDecimal(4);
private static final BigDecimal FIVE = new BigDecimal(5);
private static final BigDecimal SIX = new BigDecimal(6);
private static final BigDecimal EIGHT = new BigDecimal(8);
private static final BigDecimal SIXTEEN = new BigDecimal(16);
BigDecimal calc16dPI(int d) {
return FOUR.multiply(calc16dSj(d, 1)).add(BigDecimal.valueOf(3)).subtract(TWO.multiply(calc16dSj(d, 4)).divideAndRemainder(ONE)[1]).subtract(calc16dSj(d, 5).divideAndRemainder(ONE)[1]).subtract(calc16dSj(d, 6).divideAndRemainder(ONE)[1]).divideAndRemainder(ONE)[1];
}
BigDecimal calc16dSj(int d, int j) {
int ACCURACY = d + 10;
BigDecimal part1 = BigDecimal.ZERO;
BigDecimal part2 = BigDecimal.ZERO;
for (int k = 0; k <= d; k++) {
part1 = part1.add(SIXTEEN.pow(d - k).divideAndRemainder(EIGHT.multiply(BigDecimal.valueOf(k)).add(BigDecimal.valueOf(j)))[1].divide(EIGHT.multiply(BigDecimal.valueOf(k)).add(BigDecimal.valueOf(j)), ACCURACY, BigDecimal.ROUND_HALF_UP));
}
for (int k = d + 1; k < ACCURACY; k++) {
part2 = part2.add(ONE.divide(SIXTEEN.pow(k - d).multiply(EIGHT.multiply(BigDecimal.valueOf(k)).add(BigDecimal.valueOf(j))), ACCURACY, BigDecimal.ROUND_HALF_UP));
}
return part1.add(part2);
}
@Test
public void mainCalc() {
for (int d = 0; d < 100; d++) {
System.out.println("index of " + (d + 1) + ": " + calc16dPI(d).multiply(SIXTEEN));
}
}
蒙特卡洛算法
基于无限大可重复实验的样本测试得到的概率进行估计
方法比较简单可以用面积、蒲风投针、整数互质操作,下面是基于小学生的面积问题实现的,很简单:
from random import random
def estimatePI(times):
hits = 0
for i in range(times):
x = random()*2 - 1
y = random()*2 - 1
if x*x + y*y <= 1:
hits += 1
return 4.0 * hits/times
print(estimatePI(10000))
print(estimatePI(1000000))
print(estimatePI(100000000))
print(estimatePI(1000000000))
至于蒲风投针和整数互质emm还是敲一下吧
任意取两个整数互质的概率为$$\frac{6}{\pi^2}$$
证明也很有意思,小编写着写着就开始越发觉得自己的卑微,科学的奇妙
平面上画有等间距的平行线,间距为2a,向平面投掷一枚长为a的针,针与平行线相交的概率为
用几何概型求出来的,颇有意思。
今天介绍到这里,如果喜欢可以介绍一下身边喜欢数学的人,谢谢啦!