Simple Pendulum
题目描述
考虑以下运动场景: 竖直平面内有一个长度为 l
的轻杆, 一端连接质量为 m
的小球, 一端固定在转轴上. 设小球的稳定平衡点所处的角度为 0
, 逆时针为角度增加的方向, 重力加速度为 g
, 忽略所有摩擦. 将小球从 theta0
处以初角速度 omega0
(有符号)释放, 求小球运动的周期.
解决本题的一种非常经典的方法就是进行物理仿真. 首先, 你一定可以根据物理关系列出角加速度 beta
满足的函数关系式(其实就是 theta
满足的二阶常微分方程):
beta = f(theta, omega; g, l)
由于计算机无法模拟连续的时间, 所以你需要选择一个时间步长 t
, 用差分代替微分.
输入
输入共有 n + 1
行.
第 1
行为一个正整数 n
.
接下来的 n
行, 每行为四个小数, 分别表示 theta0, omega0, g, l
, 其中角度和角速度均采用弧度制.
输出
输出共有 n
行小数, 格式为 %f
, 分别对应此参数下小球的运动周期.
你的输出与标准答案的相对误差不应超过 1e-4
.
样例
注: 此样例不是第一个测试点, 且你的程序得到的结果不一定与样例输出完全相同, 小数位数不需要控制.
样例输入
3
0.03288778160003058 -0.28326744231897244 4.4668748197689565 4.387010596417683
0.02744005103088032 0.32705114491187676 7.869788001946545 6.834027824423806
6.928869855331735e-05 -0.5009475783930569 7.359257932584052 9.53044922215475
样例输出
6.25839
5.89003
7.30267
提示
数据范围:
1 < n <= 1000
,1 <= g,l <= 10
, 保证所有的theta0, omega0
合法, 且theta0, g, l
均为正. 保证小球的运动周期不会偏离 $2\pi\sqrt{\frac{l}{g}}$ 太大.思考: 对于任意的仿真参数, 时间步长都是确定的吗? 能不能作对应的修正以达到更好的仿真效果?
思考: 在仿真前, 能否对初始条件进行规范化, 以便我们采用统一的程序求解小球的运动周期呢? (如利用某种守恒条件)
思考: 在预测小球的运动形式后,如何得到小球的运动周期? 需要让小球运动多个周期、而后计算周期的平均值吗?