Difference between revisions of "UTS 23/10/2019"
(→Coding Untuk Soal B) |
(→Coding Soal B dengan Runge Kutta Orde 4) |
||
(16 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Video Muhasabah == | == Video Muhasabah == | ||
+ | |||
+ | [[File:Muhasabah Umas.mp4]] | ||
+ | |||
== Coding Untuk Soal A == | == Coding Untuk Soal A == | ||
'''Penyelesaian dengan cara Eliminasi Gauss''' | '''Penyelesaian dengan cara Eliminasi Gauss''' | ||
Line 31: | Line 34: | ||
#Pembuatan Matrix | #Pembuatan Matrix | ||
#Asumsikan percepatan gravitasi 10 m/s^2 | #Asumsikan percepatan gravitasi 10 m/s^2 | ||
− | A=np.array([[1 | + | A=np.array([[1, 0, 0],[-1,1,0],[0,-1,1]],float) |
− | b=np.array([(P * 10 * (sin(deg)-(Z*cos(deg)))),( L * 10 * (sin(deg)-(Z*cos(deg)))),(M * 10 * (sin(deg)-(Z*cos(deg))) | + | b=np.array([(P * 10 * (sin(deg)-(Z*cos(deg)))),( L * 10 * (sin(deg)-(Z*cos(deg)))),(M * 10 * (sin(deg)-(Z*cos(deg))))]) |
n=len(A) | n=len(A) | ||
Line 47: | Line 50: | ||
matrix A: | matrix A: | ||
− | [[ | + | [[ 1. 0. 0.] |
− | |||
− | |||
− | [ | + | [ 0. 1. 0. ] |
− | [ 0. 0. | + | [ 0. 0. 1. ]] |
#back substitution | #back substitution | ||
x=np.zeros(n) #membuat matrix yang memiliki ukuran yang sama dan berisi 0 semua | x=np.zeros(n) #membuat matrix yang memiliki ukuran yang sama dan berisi 0 semua | ||
− | for m in range (n- | + | for m in range (n-1, -1, -1) : |
x[m]= (b[m]-np.dot(A[m, m+1:n], x[m+1:n]))/A[m,m] | x[m]= (b[m]-np.dot(A[m, m+1:n], x[m+1:n]))/A[m,m] | ||
print('nilai T', x[m]) #print hasil | print('nilai T', x[m]) #print hasil | ||
Line 127: | Line 128: | ||
else: | else: | ||
print('SISTEM TIDAK STABIL, MOHON TINJAU KEMBALI SEMUA PARAMETER') | print('SISTEM TIDAK STABIL, MOHON TINJAU KEMBALI SEMUA PARAMETER') | ||
− | |||
SISTEM STABIL | SISTEM STABIL | ||
− | == | + | == Video Soal A == |
− | + | Berikut ini merupakan video penjelasan mengenai penyelesaian dari soal A, yang terdiri atas 2 video yang bersambung | |
− | |||
− | + | [[File:SOAL_A_RIZKI_ALDILA_UMAS_1.mp4]] | |
− | + | [[File:SOAL_A_RIZKI_ALDILA_UMAS_2.mp4]] | |
== Coding Untuk Soal B == | == Coding Untuk Soal B == | ||
Line 162: | Line 161: | ||
massa mobil: 1000 | massa mobil: 1000 | ||
− | while dragfric0 < a: | + | while dragfric0 <= a: |
vmax = v + (a - dragfric0)*t | vmax = v + (a - dragfric0)*t | ||
s = s + ((vmax**2 - v**2) / (2 * a)) | s = s + ((vmax**2 - v**2) / (2 * a)) | ||
Line 182: | Line 181: | ||
Kecepatan tertinggi: 42.19999999999999 m/s | Kecepatan tertinggi: 42.19999999999999 m/s | ||
− | + | == Video Soal B == | |
+ | Berikut ini merupakan video penjelasan penyelesaian soal B: | ||
+ | |||
+ | [[File:SOAL B RIZKI ALDILA UMAS 2.mp4]] | ||
+ | |||
+ | |||
+ | == Coding Soal B dengan Runge Kutta Orde 4 == | ||
+ | |||
+ | m = eval(input("massa mobil (kg): ")) | ||
+ | g = eval(input("gravitasi (m/s^2): ")) | ||
+ | F = eval(input('Gaya yang dikeluarkan oleh mobil (N):')) | ||
+ | cd = eval(input("koefisien drag udara : ")) | ||
+ | z = eval(input("koefisien gesek jalan : ")) | ||
+ | dt = 0.1 #tinggi step atau waktu | ||
+ | #Mengubah komponen yang diketahui menjadi percepatan | ||
+ | a=F/m | ||
+ | |||
+ | massa mobil (kg): 1000 | ||
+ | |||
+ | gravitasi (m/s^2): 9.81 | ||
+ | |||
+ | Gaya yang dikeluarkan oleh mobil (N): 10000 | ||
+ | |||
+ | koefisien drag udara : 0.2 | ||
+ | |||
+ | koefisien gesek jalan : 0.3 | ||
+ | |||
+ | #Pendefinisian error awal, dan nilai awal kecepatan dan waktu | ||
+ | error = 100 | ||
+ | v0 = 0 | ||
+ | t0 = 0 | ||
+ | #Membuat list kosong | ||
+ | lst = [] | ||
+ | #Pendefinisian fungsi turunan | ||
+ | def dv(t0, v0): | ||
+ | return (a - g*z)-((cd/m)*(v0)**(3/2)) | ||
+ | |||
+ | while error > 0.000025: #error bisa diubah sesuai dengan kebutuhan dan tingkat signifikasi dari pembuat coding, hal ini dikarenakan grafik yang muncul semakin keatas akan | ||
+ | semakin mendekati kecepatan maksimal, namun untuk error = 0 maka akan membutuhkan waktu yang sangat lama | ||
+ | k1 = dv(t0, v0) | ||
+ | k2 = dv(t0 + 0.5 * dt, v0 + 0.5 * dt * k1) | ||
+ | k3 = dv(t0 + 0.5 * dt, v0 + 0.5 * dt * k2) | ||
+ | k4 = dv(t0 + dt, v0 + dt * k3) | ||
+ | |||
+ | v1 = v0 + (1/ 6)*(k1 + 2 * k2 + 2 * k3 + k4) *dt | ||
+ | #Untuk membuat iterasi sehingga increament harus ditambahkan di t0 | ||
+ | t0 = t0 + dt | ||
+ | error = ((v1 - v0) / v1)*100 #error harus mendekati 0 untuk kecepatan maksimal | ||
+ | v0 = v1 | ||
+ | lst.append(v1) | ||
+ | |||
+ | waktu = len(lst)*0.1 #pengali dengan 0.1 karena panjang lst itu masih dalam satuan 0.1 sesuai dengan increment yang dilakukan | ||
− | + | print ("waktu untuk mencapai velocity maksimal adalah: ", waktu+1,'s') | |
+ | print ("velocity maksimal adalah: ", v1, 'm/s') | ||
− | + | waktu untuk mencapai velocity maksimal adalah: 876.5 s | |
− | + | velocity maksimal adalah: 1075.515164892553 m/s | |
− | + | <comments voting="plus" /> |
Latest revision as of 13:10, 6 November 2019
Contents
Video Muhasabah
Coding Untuk Soal A
Penyelesaian dengan cara Eliminasi Gauss
import numpy as np #matrix definition, menggunakan numpy untuk membantu pendifinisian matrix (array) from math import *
#Pendefinisian input P = eval(input('Nilai M1')) L = eval(input('Nilai M2')) M = eval(input('Nilai M3')) U = eval(input('Nilai M4')) Z = eval(input('Nilai Koefisien Gesek')) O = eval(input('Sudut yang dibentuk'))
Nilai M1 10
Nilai M2 20
Nilai M3 30
Nilai M4 33.957218121603816
Nilai Koefisien Gesek 0.2
Nilai Sudut 45
#Konversi sudut yang masih dalam radian deg = (O * 22/(7*180))
#Pembuatan Matrix #Asumsikan percepatan gravitasi 10 m/s^2 A=np.array([[1, 0, 0],[-1,1,0],[0,-1,1]],float) b=np.array([(P * 10 * (sin(deg)-(Z*cos(deg)))),( L * 10 * (sin(deg)-(Z*cos(deg)))),(M * 10 * (sin(deg)-(Z*cos(deg))))]) n=len(A)
#eliminasi gauss for k in range (0,n-1): for i in range (k+1, n): if A[i,k] !=0 : lam= A[i,k]/A[k,k] A[i,k:n]= A[i, k:n]-(A[k,k:n]*lam) b[i]= b[i]-(b[k]*lam) print('matrix A:', '\n', A) #print hasilnya untuk mengecek kebenaran
matrix A:
[[ 1. 0. 0.]
[ 0. 1. 0. ]
[ 0. 0. 1. ]]
#back substitution x=np.zeros(n) #membuat matrix yang memiliki ukuran yang sama dan berisi 0 semua for m in range (n-1, -1, -1) : x[m]= (b[m]-np.dot(A[m, m+1:n], x[m+1:n]))/A[m,m] print('nilai T', x[m]) #print hasil
print('nilai T',m + 1, x[m], 'N') #print hasil
nilai T3 339.5721812160382 N
nilai T2 169.7860906080191 N
nilai T1 56.59536353600636 N
#Membuat konfirmasi dengan menyamakan nilai T4 untuk mengecek apakah sistem benar-benar stabil W = U*10 if W == x[2]: #Sistem stabil ketika besarnya W yaitu mewakili baris matrix ke 4 print("SISTEM STABIL") else: print('SISTEM TIDAK STABIL, MOHON TINJAU KEMBALI SEMUA PARAMETER')
SISTEM STABIL
Penyelesaian dengan substitusi
from math import * P = eval(input('Nilai M1')) L = eval(input('Nilai M2')) M = eval(input('Nilai M3')) U = eval(input('Nilai M4')) Z = eval(input('Nilai Koefisien Gesek')) O = eval(input('Nilai Sudut'))
Nilai M1 10
Nilai M2 20
Nilai M3 30
Nilai M4 33.957218121603816
Nilai Koefisien Gesek 0.2
Nilai Sudut 45
#Konversi sudut yang masih dalam radian deg = (O * 22/(7*180))
T3 = U * 10 T3 = round(T3,3) #untuk membuat nilai T3 menjadi 3 angka dibelakang , T2 =-( M * 10*(sin(deg)-(Z*cos(deg)))) T2 = round(T2,3) T1 =-( L * 10*(sin(deg)-(Z*cos(deg)))) + T2 T1 = round(T1,3)
print('Nilai T3 adalah',T3, 'N') print('Nilai T2 adalah',T2, 'N') print('Nilai T1 adalah',T1, 'N')
Nilai T3 adalah 339.572 N
Nilai T2 adalah 169.786 N
Nilai T1 adalah 56.595 N
#Membuat konfirmasi apakah sistem stabil atau tidak W = ( P * 10 * (sin(deg)-(Z*cos(deg)))) W = round(W,3) if W == T1: #Sistem stabil ketika besarnya W yaitu mewakili baris matrix ke 4 print("SISTEM STABIL") else: print('SISTEM TIDAK STABIL, MOHON TINJAU KEMBALI SEMUA PARAMETER')
SISTEM STABIL
Video Soal A
Berikut ini merupakan video penjelasan mengenai penyelesaian dari soal A, yang terdiri atas 2 video yang bersambung
Coding Untuk Soal B
Penyelesaian dengan cara iterasi
F = float(input("Gaya yang dikeluarkan mobil (N):")) v = 0 s = 0 t = float(0) cd = float(input("drag coefficient: ")) u = float(input("koefisien gesek ban dengan jalanan: ")) g = 9.8 m = float(input ("massa mobil:")) a = F/m dragfric0 = 0 dragfric = ((cd * ((v + (a*t))**(3/2))/m) + (u * g))
Gaya yang dikeluarkan mobil (N): 10000
drag coefficient: 0.2
koefisien gesek ban dengan jalanan: 0.2
massa mobil: 1000
while dragfric0 <= a: vmax = v + (a - dragfric0)*t s = s + ((vmax**2 - v**2) / (2 * a)) v = vmax dragfric0 = dragfric0 + dragfric t = float(t) + 1
print("Komponen pada saat kecepatan maksimum") print ("Waktu yang diperlukan: ",t," s") print ("Jarak yang ditempuh: ",x," m") print ("Kecepatan tertinggi: ",vmax," m/s")
Komponen pada saat kecepatan maksimum
Waktu yang diperlukan: 6.0 s
Jarak yang ditempuh: 89.04199999999994 m
Kecepatan tertinggi: 42.19999999999999 m/s
Video Soal B
Berikut ini merupakan video penjelasan penyelesaian soal B:
Coding Soal B dengan Runge Kutta Orde 4
m = eval(input("massa mobil (kg): ")) g = eval(input("gravitasi (m/s^2): ")) F = eval(input('Gaya yang dikeluarkan oleh mobil (N):')) cd = eval(input("koefisien drag udara : ")) z = eval(input("koefisien gesek jalan : ")) dt = 0.1 #tinggi step atau waktu #Mengubah komponen yang diketahui menjadi percepatan a=F/m
massa mobil (kg): 1000
gravitasi (m/s^2): 9.81
Gaya yang dikeluarkan oleh mobil (N): 10000
koefisien drag udara : 0.2
koefisien gesek jalan : 0.3
#Pendefinisian error awal, dan nilai awal kecepatan dan waktu error = 100 v0 = 0 t0 = 0 #Membuat list kosong lst = [] #Pendefinisian fungsi turunan def dv(t0, v0): return (a - g*z)-((cd/m)*(v0)**(3/2)) while error > 0.000025: #error bisa diubah sesuai dengan kebutuhan dan tingkat signifikasi dari pembuat coding, hal ini dikarenakan grafik yang muncul semakin keatas akan semakin mendekati kecepatan maksimal, namun untuk error = 0 maka akan membutuhkan waktu yang sangat lama k1 = dv(t0, v0) k2 = dv(t0 + 0.5 * dt, v0 + 0.5 * dt * k1) k3 = dv(t0 + 0.5 * dt, v0 + 0.5 * dt * k2) k4 = dv(t0 + dt, v0 + dt * k3) v1 = v0 + (1/ 6)*(k1 + 2 * k2 + 2 * k3 + k4) *dt #Untuk membuat iterasi sehingga increament harus ditambahkan di t0 t0 = t0 + dt error = ((v1 - v0) / v1)*100 #error harus mendekati 0 untuk kecepatan maksimal v0 = v1 lst.append(v1) waktu = len(lst)*0.1 #pengali dengan 0.1 karena panjang lst itu masih dalam satuan 0.1 sesuai dengan increment yang dilakukan
print ("waktu untuk mencapai velocity maksimal adalah: ", waktu+1,'s') print ("velocity maksimal adalah: ", v1, 'm/s')
waktu untuk mencapai velocity maksimal adalah: 876.5 s
velocity maksimal adalah: 1075.515164892553 m/s
Enable comment auto-refresher
Muhamad.ilham
Permalink |