import math g = 9.8 # 定数を宣言する print ("Length [m]?") L = float (input()) # 長さを入力する print ("Angle [deg.]?") angle = float (input()) # 振幅を入力する theta = 3.14159 / 180.0 * angle x = L * theta # 初期値を計算する u = 0.0 f = open ("output.txt", "w") # ファイルを開く f.write ("%9.3f %9.3f\n" % (0.0, angle)) # 結果をファイルに出力する i = 1 while i <= 1000: # 同じ処理を1000回繰り返す dxdt = u # 時間微分を計算する theta = x / L # 角度を計算する dudt = - g * math.sin (theta) # 時間微分を計算する if i == 1: # 次の時刻の値を計算する xplus = x + 0.01 * dxdt # 初回だけ計算方法を変える uplus = u + 0.01 * dudt else: xplus = xminus + 2.0 * 0.01 * dxdt uplus = uminus + 2.0 * 0.01 * dudt xminus = x # 次の時刻に進むために uminus = u # xをx^-に代入する x = xplus # 次の時刻に進むために u = uplus # x^+をxに代入する t = 0.01 * i # 経過時間を計算する theta = x / L # 角度を計算する angle = 180.0 / 3.14159 * theta f.write ("%9.3f %9.3f\n" % (t, angle)) # 結果をファイルに出力する i = i + 1 # カウントをひとつ進める f.close () # ファイルを閉じる