Difference between revisions of "Rizkyawan Wibawa"
(14 intermediate revisions by the same user not shown) | |||
Line 73: | Line 73: | ||
*Proses pembuatan matriks untuk sistem pegas yang bukan tunggal: menggunakan superposisi matriks (pelebaran matriks). | *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. | *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''' | ||
+ | [[File:Rizkyawan Wibawa_Muhasabah.MOV]] | ||
+ | |||
+ | *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 | ||
+ | |||
+ | '''Rabu, 27 November 2019 dan Rabu, 4 Desember 2019: Pertemuan 12 dan 13''' | ||
+ | *Presentasi mengenai progress tugas besar masing-masing kelompok. | ||
+ | *Materi: Neural Network | ||
+ | *Input untuk neural network: ada fungsi linear, fungsi langkah, fungsi logistik sinoid,fungsi ReLu (rectified linear unit) | ||
+ | *7 General ANN (Artificial Neural Network) | ||
+ | *Pembuatan ANN | ||
+ | |||
+ | '''Rabu, 11 Desember 2019 : Pertemuan 14''' | ||
+ | *Membahas mengenai filosofi penggunaan neural network. | ||
+ | *Tujuan: menyelesaikan permasalahan yang tidak dapat dimodelkan dengan persamaan matematis/cara deterministik. | ||
+ | *Secara kualitatif, mahasiswa/i kelas Metode Numerik dinilai berdasarkan nilai tambah yang didapatkan selama proses pembelajaran dalam kelas maupun luar kelas. | ||
+ | *Filosofi penilaian: manusia tidak bisa dinilai berdasarkan cara terstandarisasi. | ||
+ | *Satu pendapat di kelas: harus jujur dalam mengukur diri sendiri sebagai parameter penilaian pengetahuan mahasiswa/i. | ||
+ | *Pembelajaran Metode Numerik sebagai salah satu sarana pemahaman solusi dari suatu permasalahan (dalam konteks pembelajaran jurusan Teknik Mesin, biasanya bersangkutan dengan permasalahan suatu fenomena fisika). | ||
+ | *Pemberian tugas muhasabah tertulis selama belajar Metode Numerik sebagai prasyarat UAS. | ||
+ | *Pembelajaran ''hands-on'' untuk pembuatan Artificial Neural Network sederhana yang dapat memprediksi output rasio drag/lift untuk data yang didapatkan dari penugasan optimasi aerodinamika. |
Latest revision as of 18:01, 11 December 2019
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
Rabu, 27 November 2019 dan Rabu, 4 Desember 2019: Pertemuan 12 dan 13
- Presentasi mengenai progress tugas besar masing-masing kelompok.
- Materi: Neural Network
- Input untuk neural network: ada fungsi linear, fungsi langkah, fungsi logistik sinoid,fungsi ReLu (rectified linear unit)
- 7 General ANN (Artificial Neural Network)
- Pembuatan ANN
Rabu, 11 Desember 2019 : Pertemuan 14
- Membahas mengenai filosofi penggunaan neural network.
- Tujuan: menyelesaikan permasalahan yang tidak dapat dimodelkan dengan persamaan matematis/cara deterministik.
- Secara kualitatif, mahasiswa/i kelas Metode Numerik dinilai berdasarkan nilai tambah yang didapatkan selama proses pembelajaran dalam kelas maupun luar kelas.
- Filosofi penilaian: manusia tidak bisa dinilai berdasarkan cara terstandarisasi.
- Satu pendapat di kelas: harus jujur dalam mengukur diri sendiri sebagai parameter penilaian pengetahuan mahasiswa/i.
- Pembelajaran Metode Numerik sebagai salah satu sarana pemahaman solusi dari suatu permasalahan (dalam konteks pembelajaran jurusan Teknik Mesin, biasanya bersangkutan dengan permasalahan suatu fenomena fisika).
- Pemberian tugas muhasabah tertulis selama belajar Metode Numerik sebagai prasyarat UAS.
- Pembelajaran hands-on untuk pembuatan Artificial Neural Network sederhana yang dapat memprediksi output rasio drag/lift untuk data yang didapatkan dari penugasan optimasi aerodinamika.