欧拉计划 - 毕达哥拉斯蚂蚁

欧拉计划 - Problem 613

戴夫正在阳台上做家庭作业;为了准备一个关于毕达哥拉斯三角形的展示,他刚刚从硬纸板上剪下了一个边长分别为30厘米、40厘米和50厘米的三角形,这时一阵风吹来把三角形吹到了花园中。
另一阵风把一只小蚂蚁径直吹到了三角形上。这只可怜的蚂蚁完全迷失了方向,只能随机选了个方向一直向前爬,想要回到草丛中。
假设蚂蚁等可能地落在三角形内的任意位置并选择了任意方向,那么它最终从最长边离开三角形的概率是多少? 将你的答案四舍五入到小数点后10位小数。

题目链接:http://pe-cn.github.io/613/

解决方法

首先根据题目,设蚂蚁位置(x,y),如图所示:
毕达哥拉斯蚂蚁
令蚂蚁在点(x,y)由最长边离开的概率为P(x,y),
则:P(x,y) = θ / 2π
由三角形相似得:θ = π - (β - α)
由tanα = x / (40 - y)
得:α = arctan(x / (40 - y))
由tanβ = (30 - x) / y
得:β = arctan((30 - x) / y)
即:P(x,y) = (π - (arctan((30 - x) / y) - arctan(x / (40 - y)))) / 2π
设三角形面积为S,则:S = 600
由于蚂蚁等可能地落在三角形内的任意位置并选择了任意方向,而三角形最长边所在直线方程为4x + 3y = 120,设蚂蚁由最长边离开的概率为P,
得:P = (∬P(x,y)dydx) / S
毕达哥拉斯蚂蚁
使用py运算:

import scipy.integrate
from numpy import exp
from math import sqrt
import math

f = lambda x, y : (math.pi - (math.atan((30 - x) / y) - math.atan(x / (40 - y)))) / (2 * math.pi)
g = lambda x : 0
h = lambda x : 40 - 4 * x / 3
v, err = scipy.integrate.dblquad(f, 0, 30, g, h)
P = v / 600
print(P)

exit()

备注:欧拉计划 http://pe-cn.github.io/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值