文正·高等数学每日一题(2)·一道“小学生”面积题

文正·高等数学每日一题(2)·一道“小学生”面积题,第1张

文正·高等数学每日一题(2)·一道“小学生面积

        众所周知,小学生题包罗万象,做不来的题都叫小学生题。这就来了,之前在网上看到一个求阴影面积的“小学生”题,如下:


题:


 

答:

        这类圆和矩形重叠的题很典型,自以为通过割补、重叠等 *** 作可以像小学生一样求出面积,但是尝试后就会发现,貌似总是缺了一点东西。对,正常的小学生题应该是左下角的曲边三角也是阴影,那样就可以通过割补法之类的凑成规则的图形求解。因此这道题的核心本质就是求左下角的小曲边三角形面积。类似的还有以下这道题,本质上是一样的。

 话不多说,开始。抽象出以下模型,假设圆半径为1。

 可以看到

因此最主要的就是求弓形面积 ,而其关键便是求其所对的圆心角。

方法一:勾股定理

        做以下辅助线:

设,则根据相似三角形有,在中,应用勾股定理,得到:

故得到,则有,,根据三角函数则有,则,则有:

则有

 方法二:三角函数

        作以下辅助线

 则有

关键是求. 记,则有,,则有

故有

 方法三:积分

        最直接暴力的方法当然是用微积分了,以A点为原点建立坐标系,关键求交点P坐标。

设P=,根据,有

得,则有面积积分:

 方法四:蒙特卡洛模拟

        若只是求数值解,有一种实验性的方法,即蒙特卡洛方法,对于不规则图形面积求解尤其方便,只需要短短几行代码便可实现。

        其基本思想是:往图形中均匀撒点,那么当撒点数很大时,落在每个区域的点数占比等于面积占比,典型的案例就是求圆周率及Buffon投针实验。

 Python代码如下:

import numpy as np
N = 10000000
counts = 0
for i in range(N):
    point = np.random.random(2)
    if not ((point[1] < point[0] / 2) and ((point[0]-1.)**2+(point[1]-1.)**2>1)):
        counts = counts + 1
print("阴影部分面积近似为:", 1- counts / N * 1**2)

        这里由于阴影部分面积比较小,若统计掉在其内的粒子数会较少,相同总粒子数时,误差会较大。因此可以反过来统计掉在区域外的粒子数,求区域外面积,然后作差。上述代码运行结果为0.078257,已经很接近真实面积了。相对误差随总粒子数的变化见下图。通过一些适当加速方法可以提高蒙卡收敛的速度,可以通过更小的粒子数得到误差较小的结果。

        综上所述,该题不可能是小学生题,至少要知道勾股定理及三角函数,应当是高中题较为合适。当然,如果小学已经会Python了,那当我没说。 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5572196.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存