Logo Universal Online Judge

UOJ

时间限制:1 s 空间限制:256 MB

#9. Simple Pendulum

统计

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}}$ 太大.

  • 思考: 对于任意的仿真参数, 时间步长都是确定的吗? 能不能作对应的修正以达到更好的仿真效果?

  • 思考: 在仿真前, 能否对初始条件进行规范化, 以便我们采用统一的程序求解小球的运动周期呢? (如利用某种守恒条件)

  • 思考: 在预测小球的运动形式后,如何得到小球的运动周期? 需要让小球运动多个周期、而后计算周期的平均值吗?