解等时曲线问题
等时曲线问题是要找到一条曲线,使得位于曲线上任何位置的珠子滚到底部所用的时间都是相同的. 用弧长和速率 v 来表示滚落的时间,得到阿贝尔积分方程 . 由关系式 来定义未知函数 ,并利用能量守恒方程 得出下面的显式方程.
In[1]:=
abeleqn = T == 1/Sqrt[2 g] \!\(
\*SubsuperscriptBox[\(\[Integral]\), \(0\), \(y\)]\(
\*FractionBox[\(h[z]\),
SqrtBox[\(y - z\)]] \[DifferentialD]z\)\);
用 DSolveValue 解这个积分方程.
In[2]:=
dsdy = DSolveValue[abeleqn, h[y], y]
Out[2]=
应用公式 求解 .
In[3]:=
dxdy = Sqrt[dsdy^2 - 1]
Out[3]=
让曲线从原点开始,并进行积分给出作为 的函数的 . 注意其中的假设确保被积函数是实值的.
In[4]:=
x[y_] = Integrate[dxdy, {y, 0, y},
Assumptions -> (2 g (T^2) )/(\[Pi]^2 y) > 1 && y > 0]
Out[4]=
取两秒的滚落时间,并代入重力加速度,对最大的等时曲线作图. ( 分支来自于 的导数的解 )
In[5]:=
Show[ParametricPlot[{{x[y], y}, {-x[y], y}} /. {g -> 9.8, T -> 2}, {y,
0, (2 (9.8) 2^2)/\[Pi]^2}], ImageSize -> Medium]
Out[5]=
作变量替换 ,给出一个简洁的、非奇异的参数化曲线方程,其中 .
In[6]:=
c[\[Theta]_] = (
g T^2)/\[Pi]^2 {Sin[\[Theta]] + \[Theta], 1 - Cos[\[Theta]]} ;
结合能量守恒方程和复合函数求导法则(链式法则),给出作为 的函数的 的微分方程,而该方程可用数值方法求解.
In[7]:=
\[Theta]' == \[PlusMinus]FullSimplify[ Sqrt[
2 g (Last[c[\[Theta]Max]] - Last[c[\[Theta]]])] /Sqrt[
c'[\[Theta]].c'[\[Theta]]] , g > 0 && T > 0]
Out[7]=
用图形演示沿等时曲线的运动.