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

From ccitonlinewiki
Jump to: navigation, search
(Created page with " == Coding Untuk Soal 1 == import numpy as np #matrix definition, menggunakan numpy untuk membantu pendifinisian matrix (array) from math import * #Pendefinisian input...")
 
(Coding Soal B dengan Runge Kutta Orde 4)
 
(48 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
== Video Muhasabah ==
  
== Coding Untuk Soal 1 ==
+
[[File:Muhasabah Umas.mp4]]
 +
 
 +
== Coding Untuk Soal A ==
 +
'''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 9: 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'))
 +
 +
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
 
   #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(45)-(Z*cos(45)))),( L * 10 * (sin(45)-(Z*cos(45)))),(M * 10 * (sin(45)-(Z*cos(45)))), (-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 27: 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.  0.  1.  0.]
+
[ 0.  1.  0. ]
  
[ 0.  0.  0. -1.]]
+
[ 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 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
 +
 
 +
[[File:SOAL_A_RIZKI_ALDILA_UMAS_1.mp4]]
 +
 
 +
[[File:SOAL_A_RIZKI_ALDILA_UMAS_2.mp4]]
 +
 
 +
== 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:
 +
 
 +
[[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
  
nilai T 2.0
+
  #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
  
nilai T 52.20873887394008
+
  print ("waktu untuk mencapai velocity maksimal adalah: ", waktu+1,'s')
 +
  print ("velocity maksimal adalah: ", v1, 'm/s')
  
nilai T 44.75034760623435
+
waktu untuk mencapai velocity maksimal adalah:  876.5 s
  
nilai T 29.8335650708229
+
velocity maksimal adalah:  1075.515164892553 m/s
  
Koding tersebut masih menghasilkan nilai T yang salah karena tidak sama dengan penghitungan manual
+
<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.