用Python计算函数围成的面积出问题了

事情是这样的
我在玩几何画板的时候写了这个函数:

img


几何画板算出来这个函数围成的面积是$4.67cm^2$
我突发奇想 想用Python算一下这个东西的面积
于是写了这个程序:

import numpy as math
import random
n = 10**6    # 实验次数
h = 0    # 成功次数
for i in range(n):
    # 随机以原点为圆心 半径为2的圆在极坐标系中的坐标
    r = random.uniform(0, 2)
    deg = random.uniform(0, 360)
    # 算出函数图像上的点的r
    d = 1 - math.sin(deg)
    if r <= d:  # 在图形里
        h += 1    # 成功次数加一
s = h / n    # 算出成功率
ans = s * math.pi * 2**2    # 成功率乘以圆的面积等于图形面积
print(ans)

但算出来的结果却是6.2654415918721105
多随机了几次也是这样
求哪位帮我debug一下QwQ

蒙特卡洛法?你的解析式是什么,我帮你验算下

【以下回答由 GPT 生成】

问题出在导入的库的使用上面。

代码中导入的numpy库,但是却使用了math来进行计算。

正解是使用numpy库的函数来进行计算。

以下是修改后的代码:

import numpy as np
import random

n = 10**6    # 实验次数
h = 0    # 成功次数

for i in range(n):
    # 随机以原点为圆心,半径为2的圆在极坐标系中的坐标
    r = random.uniform(0, 2)
    deg = random.uniform(0, 360)

    # 计算函数图像上的点的r
    d = 1 - np.sin(np.deg2rad(deg))

    if r <= d:  # 在图形里
        h += 1    # 成功次数加一

s = h / n    # 计算成功率
ans = s * np.pi * (2**2)   # 成功率乘以圆的面积等于图形面积

print(ans)

请试着运行这段代码,看看是否得到了正确的结果。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^