Rizkyawan Wibawa

From ccitonlinewiki
Revision as of 17:05, 13 November 2019 by Rizkyawanwibawa (talk | contribs)
Jump to: navigation, search

Rizkyawan Wibawa

1606835260

Departemen Teknik Mesin

Kenapa kita belajar Kalkulus?

  • Karena kalkulus adalah salah satu ilmu dasar yang akan digunakan selama belajar di jurusan Teknik Mesin. Aplikasi daripada materi-materi kalkulus sendiri terdapat pada mata kuliah departemen/jurusan, diantaranya Termodinamika Dasar, Mekanika Fluida, dan Kinematika & Dinamika.

Rabu, 4 September 2019: Pertemuan 1

  • Dalam proses pembelajaran, starting point setiap orang bisa berbeda. Output yang diharapkan dari hasil proses belajar-mengajar adalah peningkatan yang terjadi pada end point.
  • Selama pembelajaran metode numerik, mhs akan bersinggungan dengan beberapa aspek, diantaranya: algoritma, flow chart, dan programming.
  • Aplikasi metode numerik, sebagai contoh, terdapat pada perangkat lunak yang dibuat dengan tujuan melakukan CAD, CAM, dan CAE.

Reminder tugas pekan 1

  • Belajar Python
  • Membuat program untuk menyelesaikan soal aritmatika

Pembelajaran awal untuk Python

  • Merupakan salah satu bentuk bahasa pemrograman yang terbilang baru, namun telah cukup banyak digunakan, khususnya di lingkungan kampus MIT (berdasarkan informasi dari Pak Radon).
  • Menggunakan syntax yang relatif mudah dipahami, dan mudah dipelajari di bagian awal untuk membuat program-program sederhana.
  • Contoh program yang dimaksud: Mencetak kalimat di layar, membuat cerita dengan variabel nama karakter dan umur karakter yang dapat diubah-ubah sesuka hati, mencetak bentuk geometri sederhana.
  • Untuk membuat program sederhana yang dapat menyelesaikan suatu fungsi aljabar, kita akan memerlukan beberapa add-on yang dapat memberikan library yang mendukung fungsi-fungsi yang akan kita gunakan dalam memecahkan fungsi aljabar. Add-on yang saya maksud disini salah satunya adalah SymPy, yang memiliki library untuk menyelesaikan fungsi dengan variabel dan simbol-simbol yang umum digunakan pada pembelajaran aljabar.

Rabu, 11 September 2019: Pertemuan 2

  • Breakdown silabus Metode Numerik
  • Target pekan ini: dasar-dasar pemrograman
  • Agenda di kelas: mencetak "hello world", melakukan operasi aritmetika sederhana, mempelajari tentang tuples dan lists, cara mengakses salah satu variabel yang terdapat di dalam tuples dan lists

Rabu, 18 September 2019: Pertemuan 3

  • Kuis pemrograman dengan Python: membuat program yang dapat memunculkan suku ke-n dari deret Fibonacci (n dapat dimasukkan angka berapapun sesuai yang kita inginkan)
  • Pendekatan yang dapat digunakan: loop 'while'
  • Mendefinisikan variabel untuk dua suku pertama dan nilai iterasi, kemudian memerintahkan Python untuk mengulang operasi penjumlahan dua suku sebelumnya sampai pada jumlah suku yang diinginkan untuk dicetak pada layar.
  • Contoh Program:
      a = float(input('length :'))
      x = 1
      y = 1
      i = 0
      while i < a:
      print(x)
      z = x + y
      # Modify values
      x = y
      y = z
      i += 1
  • Loop 'while' ini juga dapat digunakan untuk membuat program yang bisa menentukan suku ke-sekian dalam deret lainnya, misalnya dalam deret geometri dengan faktor pengali 2.
  • Program:
      a = float(input("Suku ke: "))
      x = 1
      i = 1
      while i < a :
      z = x + x
      x = z
      i += 1
      print ("Bilangannya adalah: ")
      print (x)

Rabu,2 Oktober 2019: Pertemuan 5

  • Memahami bagaimana cara menggunakan ilmu metode numerik untuk memodelkan berbagai permasalahan yang ada dalam dunia engineering.
  • Tugas: membaca tentang metode penyelesaian persamaan diferensial.
  • Materi pertemuan: aljabar simultan
  • Mempelajari penggunaan sistem persamaan linier untuk menyelesaikan masalah engineering.
  • Diberikan contoh pemodelan sistem pegas tunggal menjadi suatu sistem persamaan linier dengan menerjemahkan rumus-rumus pegas menjadi variabel pada matriks.
  • Setelahnya, diberikan contoh pemodelan sistem pegas ganda dengan susunan seri, memisahkan bagian-bagian sistem berdasarkan node. Kemudian dibuat matriks variabel konstanta pegas, variabel perpindahan, dan variabel beban.
  • Proses pembuatan matriks untuk sistem pegas yang bukan tunggal: menggunakan superposisi matriks (pelebaran matriks).
  • Dijelaskan mengenai penulisan program pada Python untuk menyelesaikan permasalahan sistem pegas seri.
  • Kemudian dijelaskan juga mengenai penulisan program pada Python untuk menyelesaikan sistem persamaan linier, dengan cara penggunaan modul third-party seperti numpy dan sympy, dan tanpa menggunakan modul third-party.

Rabu, 9 Oktober 2019: Pertemuan 6

  • Inti pembuatan program pada Python/bahasa pemrograman lainnya: memodelkan masalah engineering untuk kemudian diproses perhitungannya melalui komputer.
  • Asumsi dalam pemodelan masalah: benda memiliki sifat continuum, dimana molekul mengisi seluruh ruang pada benda.
  • Persamaan yang berlaku pada benda continuum: persamaan diferensial
  • Contoh persoalan: pada suatu struktur berupa batang yang diberikan gaya tarik F di ujungnya dan ujung lainnya menempel pada pondasi/dinding.
  • Tegangan yang terjadi di setiap bagian pada batang dihitung berdasarkan posisi dan panjang bagian.
  • Menyelesaikan persamaan diferensial metodenya cukup banyak
  • Satu yang dibahas hari ini yang cukup umum digunakan: metode Runge-Kutta
  • Banyak persamaan diferensial yang tidak bisa diselesaikan dengan metode perhitungan eksak, namun bisa diselesaikan dengan metode numerik.
  • Salah satu contoh aplikasi yang berhasil dilakukan: menentukan laju reaksi untuk memproses kelapa sawit menjadi bahan bakar bio-bensin.
  • Setiap metode penyelesaian persamaan diferensial pasti memiliki error, tidak ada yang sepenuhnya benar.
  • Metode Runge-Kutta: dapat diberlakukan untuk persamaan diferensial orde 1,2,3, dan 4.
  • Perbedaan masing-masing orde tersebut berada pada error dari nilai yang didapatkan.
  • Bagian paling penting dari menyelesaikan persamaan diferensial dengan metode numerik: mengetahui persamaan diferensial, dan mengetahui nilai awal.
  • Contoh yang diberikan dikelas: menggunakan metode numerik untuk menyelesaikan persamaan diferensial dalam menghitung kecepatan dan posisi ketinggian bola yang jatuh bebas dari ketinggian 100 meter.
  • Diajarkan cara menentukan perhitungan untuk setiap iterasi dari fungsi kecepatan dan posisi. Diberitahukan juga mengenai perbedaan penggunaan loop for dan loop while pada Python.

Rabu, 16 Oktober 2019: Pertemuan 7

  • Kuis untuk mencoba menyelesaikan problem set 2.1 nomor 6 dan problem set 7.1 nomor 2 di buku
  • Program penyelesaian problem set 2.1 nomor 6:
       import numpy as np
       A = np.array ([[0,0,2,1,2],[0,1,0,2,-1],[1,2,0,-2,1],[0,0,0,-1,1],[0,1,-1,1,-1]])
       b = np.array ([[1],[1],[-4],[-2],[-1]])
       def gaussElimin(A,b):
       n = len(b)
       for k in range (0,n-1):
       for i in range(k+1,n):
       if A[i,k] != 0.0:
       lam = A[i,k]/A[k,k]
       A[i,k+1:n] = A[i,k+1:n] - lam*A[k,k+1:n]
       b[i] = b[i] - lam*b[k]
       for k in range(n-1,-1,-1):
       b[k] = (b[k] - np.dot(A[k,k+1:n],b[k+1:n]))/A[k,k]
       return b
  • Program penyelesaian problem set 7.1 nomor 2:
   def F(x,y):
   return ((x**2 - 4*y))
   def run_kut4(x0,y,x,h):
   n = int((x - x0)/h)
   y = y
   for i in range (1, n+1):
   K0 = h*F(x0,y)
   K1 = h*F(x0 + h/2.0, y + K0/2.0)
   K2 = h*F(x0 + h/2.0, y + K1/2.0)
   K3 = h*F(x0 + h, y + K2)
   y = y + (K0 + 2.0*K1 + 2.0*K2 + K3)/6.0
   return y
   x0 = 0
   y = 1
   x = 0.03
   h = 0.001
   print('nilai y pada x = 0.03 adalah:',run_kut4(x0,y,x,h))

Rabu, 23 Oktober 2019: UTS

  • Kode untuk sistem 1B
   import math
   a = 10
   v = 0
   x = 0
   t = 0
   cd = 0.2
   u = 0.6
   g = 9.8
   dragfric = ((cd * (v + ((a * t)**(3/2)))) + (u * g))
   while dragfric < a:
   v3 = v + a - dragfric
   x = x + ((v3**2 - v**2) / (2 * a))
   v = v3
   t += 1
   print ("waktu tempuh: ",t," s")
   print ("jarak tempuh: ",x," m")
   print ("kecepatan tertinggi : ",v3 / 3.6 ," km/h")
  • Perbaikan untuk kode sistem 1B (terletak pada looping dan definisi dari variabel-variabel yang digunakan)
   import math
   a = float(input("percepatan mobil dalam m/s kuadrat: "))
   v = 0
   x = 0
   t = 0
   cd = float(input("drag coefficient: "))
   u = float(input("koefisien gesek ban dengan jalanan: "))
   g = 9.8
   dragfric0 = 0
   dragfric = ((cd * (v + (a*t)**(3/2))) + (u * g))
   while dragfric0 < a:
   v3 = v + a - dragfric0
   x = x + ((v3**2 - v**2) / (2 * a))
   v = v3
   dragfric0 = dragfric0 + dragfric
   t += 1
   print ("waktu tempuh: ",t," s")
   print ("jarak tempuh: ",x," m")
   print ("kecepatan tertinggi : ",v3 / 3.6 ," km/h")
  • Kode untuk sistem 1A
   import math
   from math import *
   import numpy as np
   m1 = float(input("massa penarik 1: "))
   m2 = float(input("massa penarik 2: "))
   m3 = float(input("massa penarik 3: "))
   m4 = float(input("massa tertarik: "))
   g = 9.8
   a = 5
   sin = m4 / (m1 + m2 + m3)
   print ("nilai sin sudut: ", sin)
   sudut = math.asin (sin) * 57.2958
   print ("nilai sudut: ", sudut)
   T = np.array ([[(m1*a) - (m1*g*sin)],[(m2*a) - (m2*g*sin)],[(m3*a) - (m3*g*sin)],[(m4*a) - (m4*g*sin)]])
   print ("matriks tegangan tali: ", T)

Video Muhasabah

  • Untuk video coding 1A dan 1B, tidak dapat saya upload sehubungan karena ukurannya terlalu besar.

Coding untuk sistem buatan sendiri menggunakan metode Runge-Kutta

  • Sebuah rudal ditembakkan dengan kecepatan awal dan sudut awal yang diasumsikan oleh pengguna
  • Target: menemukan jarak tempuh horizontal dari rudal saat t = 2 detik
       import math
       import numpy as np
       def F(x,y):
       F = np.zeros(2)
       F[0] = y[1]
       F[1] = y[1] - 9.8*x
       return F
       x = 0.0
       xStop = 2.0
       v = float(input("kecepatan awal rudal: "))
       y = np.array ([v , -9.8])
       h = 0.1
       freq = 2
       def integrate (F,x,y,xStop,h):
       def run_kut4(F,x,y,h):
       K0 = h * F(x,y)
       K1 = h * F(x + h/2.0, y + K0/2.0)
       K2 = h * F(x + h/2.0, y + K1/2.0)
       K3 = h * F(x + h, y + K2)
       return (K0 + K1*2.0 + K2*2.0 + K3)/6.0
       X = []
       Y = []
       X.append(x)
       Y.append(y)
       
       while x < xStop:
       h = min(h, xStop - x)
       y = y + run_kut4(F,x,y,h)
       x = x + h
       X.append(x)
       Y.append(y)
       def printSoln(X,Y,freq):
       def printHead(n):
       print ("\n        x ", end=" ")
       for i in range (n):
       print ("     y[",i,"] ",end=" ")
       print ()
       printSoln(X,Y,freq)

Rabu, 13 November 2019: Pertemuan 10

  • Membahas progress penggunaan perangkat lunak Computational Fluid Dynamics (CFD) untuk menganalisis aliran udara pada mobil yang bergerak
  • Membahas konsep curve fitting, dimana dari suatu data yang telah dikumpulkan dan diubah ke bentuk grafik diambil suatu garis dengan persamaan yang paling mewakili data tersebut (mirip dengan konsep regresi linear, yang telah dipelajari pada praktikum Fisika Mekanika)
  • Dalam curve fitting, ada regresi, ada interpolasi. Yang disebut sebagai regresi adalah pembentukan rumus yang paling mendekati pola dari data hasil suatu eksperimen. Yang disebut sebagai interpolasi adalah kebalikan dari regresi, dimana kita memperkirakan besaran dari suatu titik data berdasarkan rumus yang dihasilkan dari pola data tersebut.
  • Dalam proses curve fitting, rumus yang digunakan adalah rumus yang memiliki tingkat kesalahan paling kecil. Cara kita mendeteksi kesalahan dari suatu rumus salah satunya dengan metode least square
  • Proses komputasi untuk metode least square dapat dilakukan dengan beberapa cara, salah satunya yang paling sederhana dengan menggunakan perangkat lunak Microsoft Excel
  • Metode lainnya untuk mendeteksi error: R-squared, dimana semakin nilai R-squared mendekati 1, maka persamaan yang terbentuk semakin baik (semakin mendekati kondisi real)
  • Proses optimasi: mencari nilai minimum dan maksimum dari suatu fungsi
  • Metode optimasi ada banyak, salah satunya BFGS
  • Lainnya: basinhopping
  • Poin penting dalam proses optimasi: harus mengetahui apakah ingin mencari nilai minimum atau maksimum, nilai lokal atau global, dan harus cermat dalam menentukan batasan-batasan fungsinya