欧拉计划 - Problem 613:毕达哥拉斯蚂蚁

欧拉计划 - Problem 613

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

解决方法

首先根据题目,设蚂蚁位置(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()
发布了15 篇原创文章 · 获赞 17 · 访问量 1652

猜你喜欢

转载自blog.csdn.net/weixin_44413515/article/details/104569079
今日推荐