Difference between revisions of "UTS 23/10/2019"

From ccitonlinewiki
Jump to: navigation, search
(Coding Untuk Soal B)
(Coding Soal B dengan Runge Kutta Orde 4)
 
(41 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
== Video Muhasabah ==
 +
 +
[[File:Muhasabah Umas.mp4]]
  
 
== Coding Untuk Soal A ==
 
== Coding Untuk Soal A ==
'''Solusi 1'''
+
'''Penyelesaian dengan cara Eliminasi Gauss'''
  
 
   import numpy as np #matrix definition, menggunakan numpy untuk membantu pendifinisian matrix (array)
 
   import numpy as np #matrix definition, menggunakan numpy untuk membantu pendifinisian matrix (array)
Line 10: Line 13:
 
   L = eval(input('Nilai M2'))
 
   L = eval(input('Nilai M2'))
 
   M = eval(input('Nilai M3'))
 
   M = eval(input('Nilai M3'))
   S = eval(input('Nilai M4'))
+
   U = eval(input('Nilai M4'))
 
   Z = eval(input('Nilai Koefisien Gesek'))
 
   Z = eval(input('Nilai Koefisien Gesek'))
 
   O = eval(input('Sudut yang dibentuk'))
 
   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
 
   #Konversi sudut yang masih dalam radian
Line 18: Line 33:
  
 
   #Pembuatan Matrix
 
   #Pembuatan Matrix
   A=np.array([[1, 0, 0, 0],[-1,1,0,0],[0,-1,1,0],[0,0,0,-1]],float)
+
  #Asumsikan percepatan gravitasi 10 m/s^2
   b=np.array([(P * 10 * (sin(deg)-(Z*cos(deg)))),( L * 10 * (sin(deg)-(Z*cos(deg)))),(M * 10 * (sin(deg)-(Z*cos(deg)))), (-Z* 10)])
+
   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)
 
   n=len(A)
  
Line 32: Line 48:
 
   print('matrix A:', '\n', A) #print hasilnya untuk mengecek kebenaran
 
   print('matrix A:', '\n', A) #print hasilnya untuk mengecek kebenaran
  
Hasil Print
 
 
matrix A:  
 
matrix A:  
  
[[ 1.  0.  0.  0.]
+
[[ 1.  0.  0.]
  
[ 0.  1.  0.  0.]
+
[ 0.  1.  0. ]
  
[ 0.  0.  1.  0.]
+
[ 0.  0.  1. ]]
 
 
[ 0.  0.  0. -1.]]
 
  
 
   #back substitution
 
   #back substitution
   x=np.zeros(n) #membuat matrix yang memiliki ukuran yang sama  
+
   x=np.zeros(n) #membuat matrix yang memiliki ukuran yang sama dan berisi 0 semua
  for m in range (n-1, -1, -1) : #n-1 karena phyton dimulai dari angka 0, -1 maksudnya berhenti saat m = 0, dan -1 yang terakhir maksudnya adalah penghitungan mundur
+
  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] #persamaan dari back substitution, baca mengenai dasar dari back substitution
+
       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
  
Hasil Sementara
+
    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 T 2.0
+
Nilai T2 adalah 169.786 N
  
nilai T 52.20873887394008
+
Nilai T1 adalah 56.595 N
  
nilai T 44.75034760623435
+
  #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')
  
nilai T 29.8335650708229
+
SISTEM STABIL
  
Koding tersebut masih menghasilkan nilai T yang salah karena tidak sama dengan penghitungan manual
+
== Video Soal A ==
 +
Berikut ini merupakan video penjelasan mengenai penyelesaian dari soal A, yang terdiri atas 2 video yang bersambung
  
'''Solusi 2'''
+
[[File:SOAL_A_RIZKI_ALDILA_UMAS_1.mp4]]
 +
 
 +
[[File:SOAL_A_RIZKI_ALDILA_UMAS_2.mp4]]
  
 
== Coding Untuk Soal B ==
 
== Coding Untuk Soal B ==
Cara ini dengan menggunakan metode while yang tentu saja masih kurang akurat karena waktu yang ada masih melompat secara integer belum bisa dengan menggunakan angka yang pecahan
+
'''Penyelesaian dengan cara iterasi'''
  
   import math
+
   F = float(input("Gaya yang dikeluarkan mobil (N):"))
  a = float(input("percepatan mobil dalam m/s kuadrat: "))
 
 
   v = 0
 
   v = 0
 
   s = 0
 
   s = 0
   t = 0
+
   t = float(0)
 
   cd = float(input("drag coefficient: "))
 
   cd = float(input("drag coefficient: "))
 
   u = float(input("koefisien gesek ban dengan jalanan: "))
 
   u = float(input("koefisien gesek ban dengan jalanan: "))
 
   g = 9.8
 
   g = 9.8
 +
  m = float(input ("massa mobil:"))
 +
  a = F/m
 
   dragfric0 = 0
 
   dragfric0 = 0
   dragfric = ((cd * (v + (a*t)**(3/2))) + (u * g))
+
   dragfric = ((cd * ((v + (a*t))**(3/2))/m) + (u * g))
  
percepatan mobil dalam m/s kuadrat: 10
+
Gaya yang dikeluarkan mobil (N): 10000
  
 
drag coefficient:  0.2
 
drag coefficient:  0.2
  
koefisien gesek ban dengan jalanan:  0.1
+
koefisien gesek ban dengan jalanan:  0.2
  
   while dragfric0 < a:
+
massa mobil: 1000
       vmax = v + a - dragfric0
+
 
       s = s + ((v3**2 - v**2) / (2 * a))
+
   while dragfric0 <= a:
 +
       vmax = v + (a - dragfric0)*t
 +
       s = s + ((vmax**2 - v**2) / (2 * a))
 
       v = vmax
 
       v = vmax
 
       dragfric0 = dragfric0 + dragfric
 
       dragfric0 = dragfric0 + dragfric
       t += 1
+
       t = float(t) + 1
  
 
   print("Komponen pada saat kecepatan maksimum")
 
   print("Komponen pada saat kecepatan maksimum")
Line 97: Line 175:
 
Komponen pada saat kecepatan maksimum
 
Komponen pada saat kecepatan maksimum
  
Waktu yang diperlukan:  11 s
+
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:
 +
 
 +
[[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
  
Jarak yang ditempuh157.3605  m
+
velocity maksimal adalah1075.515164892553 m/s
  
Kecepatan tertinggi:  56.1  m/s
+
<comments voting="plus" />

Latest revision as of 13:10, 6 November 2019

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


Muhamad.ilham

56 months ago
Score 0+
Untuk penyelesaian soal nomer 1 (Benda pada bidang miring) menggunakan metode eleminasi gauss menurut saya sudah baik karena step by step diberi remark atau keterangan intruksi agar lebih mudah dimengerti dan juga diselesaikan dengan dua cara berbeda
Add your comment
ccitonlinewiki welcomes all comments. If you do not want to be anonymous, register or log in. It is free.