Difference between revisions of "Rizkyawan Wibawa"
Line 114: | Line 114: | ||
b[k] = (b[k] - np.dot(A[k,k+1:n],b[k+1:n]))/A[k,k] | b[k] = (b[k] - np.dot(A[k,k+1:n],b[k+1:n]))/A[k,k] | ||
return b | 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)) |
Revision as of 17:43, 16 October 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))