本题题面的说明不甚明晰,实际是在$x\in[0,6]$的范围内求所有能令$V(x,40,6)$为完全平方数的x之和,并将结果舍入至9位小数,其中$V(x,\alpha,r)$表示锥顶与谷仓中心点的距离为x,休止角为$\alpha$,谷仓半径为r时被浪费的空间。
用最基础的牛顿科特斯法作数值积分,再用二分法求解x即可。V的解析式可由锥面方程直接获得,不过步骤繁琐并无乐趣,以下代码直接改编自官网论坛,最终结果是$23.386029052$。
注:因使用scipy作数值积分,以下代码为Python 3。
注2:本题涉及公式是数学系本科《解析几何》、《数值分析》的标准内容。
from math import *
from scipy.integrate import quad
g=lambda u,x: u*(d:=sqrt(u*u+x*x))+x*x*log(u+d)
f=lambda x,p,r:g(-p+(d:=sqrt(r*r-x*x)),x)-g(-p-d,x)
r=6
t=tan(pi*40/180)
epsilon=0.000000001
res=0
for n in range(20,26):
a,b=0,r
va=t*quad(lambda x:f(x,a,r),0,r)[0]
vb=t*quad(lambda x:f(x,b,r),0,r)[0]
while b-a>epsilon:
c=(a+b)/2
v=t*quad(lambda x:f(x,c,r) ,0,r)[0]
if v <= n*n:
a,va=c,v
else:
b,vb=c,v
res+=c
print(f"{res:.9f}")
|