Difference between revisions of "Tugas rungekutta MFS"
Line 52: | Line 52: | ||
[[File:hasilmfs.png]] | [[File:hasilmfs.png]] | ||
+ | |||
+ | '''Video''' | ||
+ | |||
+ | [[File:Videorugekuttamfs.mkv]] |
Latest revision as of 16:02, 6 November 2019
Koding
import numpy as np
m = eval(input('massa benda: '))
g = eval(input('percepatan gravitasi: '))
u = eval(input('koefisien gesek bidang: '))
cd = eval(input('koefisien gesek udara: '))
teta = eval(input('sudut kemiringan bukit: ')) * (np.pi / 180)
sint = np.sin(teta)
cost = np.cos(teta)
v0 = 0
t0 = 0
dt = 1
error = 100
tries = []
p = g * (sint - u * cost)
q = cd / m
def dvdt(t0, v0):
return p - q * (v0 ** 1.5)
while error > 0.005:
k1 = dvdt(t0, v0) k2 = dvdt(t0 + 0.5 * dt, v0 + 0.5 * dt * k1) k3 = dvdt(t0 + 0.5 * dt, v0 + 0.5 * dt * k2) k4 = dvdt(t0 + dt, v0 + dt * k3) v1 = v0 + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4) t0 = t0 + dt error = ((v1 - v0) / v1) * 100 v0 = v1 tries.append(v1)
t1 = len(tries)
print(f'kecepatan maksimum yang dapat dicapai adalah {round(v1, 2)} m/s dengan waktu {t1 + 1} s')
Video