Difference between revisions of "Tugas rungekutta MFS"
(Created page with "File:gambarsoalmetnummfs.jpg '''Koding'''") |
|||
Line 2: | Line 2: | ||
'''Koding''' | '''Koding''' | ||
+ | |||
+ | import numpy as np | ||
+ | |||
+ | v0 = eval(input('kecepatan awal benda: ')) | ||
+ | g = eval(input('percepatan gravitasi: ')) | ||
+ | u = eval(input('koefisien gesek bidang: ')) | ||
+ | teta = eval(input('sudut kemiringan bukit: ')) * (np.pi / 180) | ||
+ | sint = np.sin(teta) | ||
+ | cost = np.cos(teta) | ||
+ | print(sint) | ||
+ | a = g * (sint + u * cost) | ||
+ | ay = a * sint | ||
+ | s0 = 0 | ||
+ | t0 = 0 | ||
+ | dt = 1 | ||
+ | error = 100 | ||
+ | v = v0 ** 2 | ||
+ | tries = [] | ||
+ | |||
+ | def dsdt(t0, s0): | ||
+ | return v - (2 * ay * s0) ** 0.5 | ||
+ | |||
+ | while error > 0.005: | ||
+ | k1 = dsdt(t0, s0) | ||
+ | k2 = dsdt(t0 + 0.5 * dt, s0 + 0.5 * dt * k1) | ||
+ | k3 = dsdt(t0 + 0.5 * dt, s0 + 0.5 * dt * k2) | ||
+ | k4 = dsdt(t0 + dt, s0 + dt * k3) | ||
+ | s1 = s0 + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4) | ||
+ | t0 = t0 + dt | ||
+ | error = ((s1 - s0) / s1) * 100 | ||
+ | s0 = s1 | ||
+ | tries.append(s1) | ||
+ | |||
+ | t1 = len(tries) | ||
+ | |||
+ | print(f'jarak maksimum yang dapat dicapai adalah {round(s1, 2)} m dengan waktu {t1 + 1} s') |
Revision as of 14:59, 6 November 2019
Koding
import numpy as np
v0 = eval(input('kecepatan awal benda: ')) g = eval(input('percepatan gravitasi: ')) u = eval(input('koefisien gesek bidang: ')) teta = eval(input('sudut kemiringan bukit: ')) * (np.pi / 180) sint = np.sin(teta) cost = np.cos(teta) print(sint) a = g * (sint + u * cost) ay = a * sint s0 = 0 t0 = 0 dt = 1 error = 100 v = v0 ** 2 tries = []
def dsdt(t0, s0):
return v - (2 * ay * s0) ** 0.5
while error > 0.005:
k1 = dsdt(t0, s0) k2 = dsdt(t0 + 0.5 * dt, s0 + 0.5 * dt * k1) k3 = dsdt(t0 + 0.5 * dt, s0 + 0.5 * dt * k2) k4 = dsdt(t0 + dt, s0 + dt * k3) s1 = s0 + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4) t0 = t0 + dt error = ((s1 - s0) / s1) * 100 s0 = s1 tries.append(s1)
t1 = len(tries)
print(f'jarak maksimum yang dapat dicapai adalah {round(s1, 2)} m dengan waktu {t1 + 1} s')