第一问
板凳龙等距螺线匀速运动模型的建立
坐标系的建立
根据题意,舞龙队沿螺距为55cm的螺线顺时针进入,进入位置为螺线第16圈点A处,即整个螺线的最外侧点,设定其为 ( x 0 , y 0 ) (x_0,y_0) (x0,y0)。为了便于计算出题目要求的结果并将其展示为笛卡尔坐标系对应坐标,本文将螺线中心设定为坐标原点 O O O,建立了极坐标系与笛卡尔坐标系。
极坐标系下该螺线的方程为:
r = a 2 π ⋅ θ r=\frac{a}{2\pi}\cdot \theta r=2πa⋅θ
其中 a a a为螺距,根据题意为55cm。
平面直角坐标系下该螺线的方程为:
{ x = r ⋅ cos ( θ ) = a 2 π ⋅ θ ⋅ cos ( θ ) y = r ⋅ sin ( θ ) = a 2 π ⋅ θ ⋅ sin ( θ ) \begin{cases} x=r\cdot \cos(\theta)=\frac a{2\pi}\cdot\theta\cdot\cos(\theta)\\y=r\cdot \sin(\theta)=\frac a{2\pi}\cdot\theta\cdot\sin(\theta)& \end{cases} {x=r⋅cos(θ)=2πa⋅θ⋅cos(θ)y=r⋅sin(θ)=2πa⋅θ⋅sin(θ)
由上述公式即可表述该螺线在平面直角坐标系和极坐标系下的方程。
积分求解板凳圆孔位置
根据题意,龙头前把手的前进速度为1m/s,故可导出经过时间 t t t之后龙头前把手行进的距离为:
s = v ⋅ t s=v\cdot t s=v⋅t
由于螺线的周长与龙头前把手行进的距离存在对应关系,只需求解出螺线周长 C C C与角度 θ \theta θ的关系,即可通过确定龙头前把手行进的距离得到此时龙头前把手所在的极坐标,进而求解出其笛卡尔坐标。
根据螺线弧长的积分公式:
L = a ∫ θ 1 θ 2 1 + θ 2 d θ L=a\int_{\theta_1}^{\theta_2}\sqrt{1+\theta^2}d\theta L=a∫θ1θ21+θ2 dθ
其中 L L L为螺线的弧长, θ 1 \theta_1 θ1为起始角度, θ 2 \theta_2 θ2为终止角度,根据公式可求解出角度之间的弧长 L L L。
由于 A A A点为第16圈的初始点,故可设置 θ 2 = 32 π \theta_2=32\pi θ2=32π,其中 s s s为龙头前把手行进的距离,满足 L = s L=s L=s的条件下,可导出 θ 1 \theta_1 θ1满足的方程为:
∫ θ 1 32 π 1 + θ 2 d θ = s a \int_{\theta_1}^{32\pi}\sqrt{1+\theta^2}d\theta=\frac sa ∫θ132π1+θ2 dθ=as
进而通过求解不定积分推导出 θ 1 \theta_1 θ1的表达式为:
1 2 [ θ 1 + θ 2 + ln ( θ + 1 + θ 2 ) ] θ 1 32 π = s a \frac12\left[\theta\sqrt{1+\theta^2}+\ln(\theta+\sqrt{1+\theta^2})\right]_{\theta_1}^{32\pi}=\frac sa 21[θ1+θ2 +ln(θ+1+θ2 )]θ132π=as
即可求解得到此时龙头前把手所在位置满足的角度 θ = θ 1 \theta=\theta_1 θ=θ1。
基于圆方程联立迭代与二分查找求解各龙身与龙尾圆孔坐标
根据上述分析,可以求解得到龙头前圆孔的极坐标和笛卡尔坐标。基于题目中给出的龙头和龙身板凳的各项参数,确定相邻两圆孔之间的固定距离。本文提出了两种方法:圆方程联立迭代法 和二分查找法,用于求解龙身与龙尾的具体坐标。下面是两种方法的具体步骤:
1.圆方程联立迭代法
根据龙头前圆孔的已知坐标,设该坐标为圆心 O i O_i Oi,并以相邻两圆孔之间的固定长度为半径 r r r,构造圆方程。然后将该圆方程与螺线方程联立,通过迭代方法逐步倒推,依次求解龙身和龙尾各个圆孔的坐标。
根据几何关系,可设龙头的坐标为 ( x 1 , y 1 ) (x_1,y_1) (x1,y1),此时的夹角为 θ 1 \theta_1 θ1,可构造圆方程为:
( x − x 1 ) 2 + ( y − y 1 ) 2 = r 1 2 (x-x_1)^2+(y-y_1)^2=r_1^2 (x−x1)2+(y−y1)2=r12
其中半径 r 1 r_1 r1为龙头两孔之间的固定距离,其表达式为:
r 1 = 341 − 27.5 × 2 = 286 ( c m ) r_1=341-27.5\times2=286(cm) r1=341−27.5×2=286(cm)
与螺线的平面坐标系方程联立可得:
{ ( x − x 1 ) 2 + ( y − y 1 ) 2 = 28 6 2 x = 55 2 π ⋅ θ ⋅ cos ( θ ) y = 55 2 π ⋅ θ ⋅ sin ( θ ) \begin{cases} (x-x_1)^2+(y-y_1)^2=286^2&\\ x=\frac {55}{2\pi}\cdot\theta\cdot\cos(\theta)\\y=\frac {55}{2\pi}\cdot\theta\cdot\sin(\theta)&\\ \end{cases} ⎩ ⎨ ⎧(x−x1)2+(y−y1)2=2862x=2π55⋅θ⋅cos(θ)y=2π55⋅θ⋅sin(θ)
即可求解得到相邻圆孔的坐标,表示为 O 2 ( x 2 , y 2 ) O_2(x_2,y_2) O2(x2,y2),此时基于该圆孔再次构造圆方程为:
( x − x 2 ) 2 + ( y − y 2 ) 2 = r 2 2 (x-x_2)^2+(y-y_2)^2=r_2^2 (x−x2)2+(y−y2)2=r22
其中半径 r 2 r_2 r2为龙身两孔之间的固定距离,其表达式为:
r 2 = 220 − 27.5 × 2 = 165 ( c m ) r_2=220-27.5\times2=165(cm) r2=220−27.5×2=165(cm)
同样与螺线平面坐标系方程联立:
{ ( x − x 2 ) 2 + ( y − y 2 ) 2 = 16 5 2 x = 55 2 π ⋅ θ ⋅ cos ( θ ) y = 55 2 π ⋅ θ ⋅ sin ( θ ) \begin{cases} (x-x_2)^2+(y-y_2)^2=165^2&\\ x=\frac {55}{2\pi}\cdot\theta\cdot\cos(\theta)\\y=\frac {55}{2\pi}\cdot\theta\cdot\sin(\theta)&\\ \end{cases} ⎩ ⎨ ⎧(x−x2)2+(y−y2)2=1652x=2π55⋅θ⋅cos(θ)y=2π55⋅θ⋅sin(θ)
求解得到 O 3 ( x 3 , y 3 ) O_3(x_3,y_3) O3(x3,y3),由于龙身与龙尾的尺寸一致,只需迭代上述方程,即可求解得到所有的圆孔坐标 O i ( x i , y i ) O_i(x_i,y_i) Oi(xi,yi)。
2. 二分查找法
为与上述数学方法相互验证,且便于求解,本文基于数值搜索的思想提出了二分查找法确定圆孔坐标,其具体过程如下:
首先设定合适的步长 α = 15 ° \alpha=15° α=15°,从第一个圆孔 O 1 O_1 O1所在的位置出发,逆时针进行搜索,到达下一位置 O 2 O_{2} O2,此处 O 2 O_2 O2的弧度角为:
θ 2 = θ 1 + α \theta_2=\theta_1+\alpha θ2=θ1+α
此时计算 O 2 O_2 O2与 O 1 O_1 O1之间的距离 d d d为:
d = 55 2 ( θ 2 ⋅ cos ( θ 2 ) − θ 1 ⋅ cos ( θ 1 ) ) 2 + ( θ 2 ⋅ sin ( θ 2 ) − θ 1 ⋅ sin ( θ 1 ) 2 d=\frac{55}{2}\sqrt{\left(\theta_2\cdot\cos(\theta_2)-\theta_1\cdot\cos(\theta_1)\right)^2+\left(\theta_2\cdot\sin(\theta_2)-\theta_1\cdot\sin(\theta_1)^2\right.} d=255(θ2⋅cos(θ2)−θ1⋅cos(θ1))2+(θ2⋅sin(θ2)−θ1⋅sin(θ1)2
根据几何原理,三角形的最大角对应最长边 ,因此我们可以根据距离 d d d与相邻圆孔间的已知距离 r 1 r_1 r1 来判断是否找到下一个圆孔的位置。
- 如果 d < r 1 d<r_1 d<r1:说明还没有搜索到下一个圆孔的位置,此时继续增加步长进行搜索,继续迭代增加 θ 2 \theta_{2} θ2。
- 如果 d > r 1 : d>r_1: d>r1:说明搜索已经超过了下一个圆孔的位置。此时,通过二分查找法,取上一次查找与当前查找的中间点进行比较,再次更新 θ 2 \theta_{2} θ2的位置,并且修改步长为 α n e w = α 2 \alpha_{new}=\frac{\alpha}{2} αnew=2α。
将上述过程反复执行,直到找到距离 d d d接近设定的圆孔间距 r 1 r_{1} r1的位置。此时,若距离 d d d与 r 1 r_1 r1的差值小于设定的阈值 ε = 1 0 − 9 ⋅ r 1 \varepsilon=10^{-9}\cdot r_1 ε=10−9⋅r1,即 ∣ d − r 1 ∣ < ε |d-r_1|<\varepsilon ∣d−r1∣<ε,则认为已成功找到下一个圆孔的位置。
通过反复进行上述步骤,即可确定所有圆孔的位置坐标。
龙身速度模型的建立
根据前文分析,已经得到了龙头的坐标 O 1 ( x 1 , y 1 ) O_1(x_1,y_1) O1(x1,y1),对应的弧度 θ 1 \theta_1 θ1与线速度为 v v v,通过查阅资料,在极坐标系下可将线速度分解为两个方向的分量,分别为:
-
径向分量: v r v_r vr:表征物体在极坐标系下沿着极径 r r r方向的速度分量,其表达式为:
v ⃗ p = d r d t \vec v_p=\frac{\mathrm{d}r}{\mathrm{d}t} v p=dtdr -
切向分量: v θ v_{\theta} vθ:表征物体绕原点旋转的速度分量,其表达式为:
v ⃗ θ = r ⋅ d θ d t \vec v_{\theta}=r\cdot \frac{\mathrm{d}\theta}{\mathrm{d}t} v θ=r⋅dtdθ
则线速度可表达为:
v 1 = v ⃗ p + v ⃗ θ = ( d r 1 d t ) 2 + ( r 1 d θ 1 d t ) 2 = 1 m / s v_1=\vec v_p+\vec v_{\theta}=\sqrt{\left(\frac{dr_1}{dt}\right)^2+\left(r_1\frac{d\theta_1}{dt}\right)^2}=1\mathrm{~m/s} v1=v p+v θ=(dtdr1)2+(r1dtdθ1)2 =1 m/s
即求解速度则需要求解 d r d t \frac{\mathrm{d}r}{\mathrm{d}t} dtdr与 r ⋅ d θ d t r\cdot \frac{\mathrm{d}\theta}{\mathrm{d}t} r⋅dtdθ的具体表达。在前文推导板凳圆孔位置时,已导出龙头圆孔位置与时间的函数关系式 1 2 [ θ 1 + θ 2 + ln ( θ + 1 + θ 2 ) ] θ 1 32 π = v t a \frac12\left[\theta\sqrt{1+\theta^2}+\ln(\theta+\sqrt{1+\theta^2})\right]_{\theta_1}^{32\pi}=\frac {vt}{a} 21[θ1+θ2 +ln(θ+1+θ2 )]θ132π=avt,不妨设 f ( θ ) = θ 1 + θ 2 + ln ( θ + 1 + θ 2 ) f(\theta)=\theta\sqrt{1+\theta^2}+\ln(\theta+\sqrt{1+\theta^2}) f(θ)=θ1+θ2 +ln(θ+1+θ2 ),则可写出时间与弧度的关系为:
55 2 [ f ( 32 π ) − f ( θ ) ] = t \frac{55}{2}[f(32\pi)-f(\theta)]=t 255[f(32π)−f(θ)]=t
根据链式法则可依次导出 d f ( θ ) d θ \frac{\mathrm{d}f(\theta)}{\mathrm{d}\theta} dθdf(θ), d θ d t \frac{\mathrm{d}\theta}{\mathrm{d}t} dtdθ与 d r d t \frac{\mathrm{d}r}{\mathrm{d}t} dtdr,它们之间满足的链式关系与求解得到的结果如下:
{ d f ( θ ) d θ = 1 + 2 θ 2 1 + θ 2 + 1 1 + θ 2 = 2 ( 1 + θ 2 ) 1 + θ 2 d θ d t = − 1 + θ 2 55 ( 1 + θ 2 ) d r d t = a 2 π ⋅ d θ d t d f ( θ ) d t = d f ( θ ) d θ ⋅ d θ d t \begin{cases} \frac{\mathrm{d}f(\theta)}{\mathrm{d}\theta} = \frac{1+2\theta^2}{\sqrt{1+\theta^2}} + \frac{1}{\sqrt{1+\theta^2}} = \frac{2(1+\theta^2)}{\sqrt{1+\theta^2}} \\ \frac{\mathrm{d}\theta}{\mathrm{d}t} = \frac{-\sqrt{1+\theta^2}}{55(1+\theta^2)} \\ \frac{\mathrm{d}r}{\mathrm{d}t} = \frac{a}{2\pi} \cdot \frac{\mathrm{d}\theta}{\mathrm{d}t} \\ \frac{\mathrm{d}f(\theta)}{\mathrm{d}t} = \frac{\mathrm{d}f(\theta)}{\mathrm{d}\theta} \cdot \frac{\mathrm{d}\theta}{\mathrm{d}t} \end{cases} ⎩ ⎨ ⎧dθdf(θ)=1+θ2 1+2θ2+1+θ2 1=1+θ2 2(1+θ2)dtdθ=55(1+θ2)−1+θ2 dtdr=2πa⋅dtdθdtdf(θ)=dθdf(θ)⋅dtdθ
将其上式带入龙头的位置信息,求解发现关于 θ \theta θ的项消去后得到龙头速度为 1 1 1m/s,说明了该模型的正确性。
由于该式只确定了龙头的速度,为确定龙身的速度,则需联立(25)与式(20),通过隐函数求导法求解得到相邻圆孔之间的链式关系为:
d θ 1 d θ 2 = θ 1 θ 2 sin ( θ 1 − θ 2 ) + θ 1 cos ( θ 1 − θ 2 ) − θ 2 θ 1 θ 2 sin ( θ 1 − θ 2 ) + θ 1 − θ 2 cos ( θ 1 − θ 2 ) \frac{\mathrm{d}\theta_1}{\mathrm{d}\theta_2}=\frac{\theta_1\theta_2\sin(\theta_1-\theta_2)+\theta_1\cos(\theta_1-\theta_2)-\theta_2}{\theta_1\theta_2\sin(\theta_1-\theta_2)+\theta_1-\theta_2\cos(\theta_1-\theta_2)} dθ2dθ1=θ1θ2sin(θ1−θ2)+θ1−θ2cos(θ1−θ2)θ1θ2sin(θ1−θ2)+θ1cos(θ1−θ2)−θ2
其中 θ 1 \theta_1 θ1为龙头的弧度, θ 2 \theta_2 θ2为相邻圆孔中心的弧度。带入式(25),连续迭代即可求解得到所有圆孔之间的速度 v i v_i vi。
模型的求解
由于模型一中位置的确定部分计算并不复杂,直接通过数学公式可求解出结果,但是速度部分的计算十分繁琐,为了能够更加精确的计算出各个圆孔所在位置的速度,本文提出了实时数值模拟与数学公式计算结合的方法进行龙身各圆孔速度的求解,下面是具体的步骤:
Step1 构建数学模型
在基于前文模型的建立部分的阐述下,使用Python构建螺线及整个舞龙队进入螺线的数学模型,并且实现实时计算各个节点的位置坐标。
Step2 选取合适的极小步长 Δ t \Delta t Δt
根据实际情况,选取极小步长 Δ t = 0.001 s \Delta t=0.001s Δt=0.001s作为实时模拟的步长。
Step3 实时带入计算速度
首先将时间 t t t作为参数带入计算此时各个圆孔的坐标 ( x i 1 , y i 1 ) (x_{i1},y_{i1}) (xi1,yi1)速度 v i 1 v_{i1} vi1,然后选择下一时间为 t + 2 ⋅ Δ t t+2\cdot \Delta t t+2⋅Δt作为参数计算此时各个圆孔的坐标 ( x i 2 , y i 2 ) (x_{i2},y_{i2}) (xi2,yi2)与速度 v i 2 v_{i2} vi2,根据速度的定义:
v = lim Δ t → 0 ( x i 1 − x i 2 ) 2 + ( y i 1 − y i 2 ) 2 Δ t v=\lim_{\Delta t\to0}\frac{\sqrt{(x_{i1}-x_{i2})^2+(y_{i1}-y{_{i2}})^2}}{\Delta t} v=Δt→0limΔt(xi1−xi2)2+(yi1−yi2)2
则可根据数值模拟计算出对应的速度,将其与 v i 1 + v i 2 2 \frac{v_{i1}+v_{i2}}{2} 2vi1+vi2进行比较,若 ∣ v − v i 1 + v i 2 2 ∣ |v-\frac{v_{i1}+v_{i2}}{2}| ∣v−2vi1+vi2∣小于阈值 ε = 0.01 v \varepsilon=0.01v ε=0.01v则判断两者结果一致,将公式计算的结果导出,若大于阈值则选择数值模拟的结果输出。
Step4 计算所有圆孔的速度
将上述模拟过程用于所有圆孔的位置坐标,与实际公式计算进行比对,输出所有结果。
问题一结果分析
观察图可知,随着时间增加,各个把手的速度整体上呈现为下降趋势。下降幅度 随螺线的几何性质变化。观察把手轴可以知道,龙头到龙尾的速度呈增长趋势。
观察结果可视化图可得出如下结论:
- 对于单个把手而言,虽然速度呈现波动的趋势,但是其整体速度呈现下降趋势,这与其运动轨迹在螺线上,螺线曲率半径越来越小相对应。
- 对于整个队伍而言,龙头到龙尾的速度呈现递减的趋势,其原因应为龙头的运动速度虽为1m/s,但是在运动固定位移后,由于运动轨迹为螺线,运动的传递存在迟滞与消耗,故后面的龙身速度会存在减小。