Difference between revisions of "Muhammad Luqman Sugiyono"
(→Pertemuan 4) |
|||
Line 65: | Line 65: | ||
print(line) | print(line) | ||
print("") | print("") | ||
− | |||
# Performs and returns the gauss elimination | # Performs and returns the gauss elimination | ||
# @A : matrix | # @A : matrix | ||
− | |||
− | |||
def gauss(A): | def gauss(A): | ||
n = len(A) | n = len(A) |
Revision as of 14:10, 25 September 2019
Muhammad Luqman Sugiyono lahir di Bogor, pada 10 September 1999, merupakan seorang mahasiswa Teknik Mesin Universitas Indonesia angkatan tahun 2018. Luqman dibesarkan di Bogor. Luqman merupakan lulusan dari SMAN 3 Bogor. Saat ini, Luqman tinggal di Kos Pondok Bukit Pisang.
Pertemuan 1
Mengapa kita sebagai anak mesin perlu belajar kalkulus? Kalkulus merupakan ilmu hitung dasar. Sebagai anak mesin, kita akan banyak dihadapkan dengan masalah. Masalah ini dapat diselesaikan dengan hitungan matematis. Dalam perhitungan tersebut, dibutuhkan logika matematika (seperti permodelan, penyederhanaan, simulasi, dll) yang baik sehingga penyelesaian masalahnya tepat. Karena itulah, kita perlu belajar kalkulus.
Apa itu Python? Python merupakan salah satu bahasa pemograman yang ada di dunia ini. Python dikenal sebagai bahasa yang mudah dipelajari dan dipahami, karena struktur sintaksnya rapi. Bahasa ini sangat penting, seperti sebuah bahasa yang kita gunakan untuk berkomunikasi pada umumnya, dimana bahasa ini dapat dimengerti oleh manusia maupun komputer. Logika manusia perlu di-compile sehingga jadilah bahasa yang dimengerti oleh komputer. Bahasa Python ini kita gunakan ketika kita akan meminta bantuan komputer untuk menyelesaikan masalah kita.
Kita dapat menyelesaikan masalah dengan metode matematika. Terkadang kita mengerti logika penyelesaian masalah, namun kita tidak mampu menghitungnya karena perhitungan yang rumit. Disinilah hadir Python. Komputer tidak akan kesulitan untuk menghitung banyak hal dan bilangan, selama kita meminta tolong kepada komputer dengan bahasa yang dapat dimengerti komputer. Kita dapat memberi tahu komputer dengan menuliskan langkah-langkah pengerjaannya. US bisa memprediksi kapan badai akan datang hanya dengan meminta tolong komputer untuk menyelesaikan model matematika dengan model numeris. Komputer ini tidak mengerti ilmu kalkulus melainkan hanya mengerti tambah kurang kali dan bagi. Kitalah yang menyusun langkah-langkah pengerjaannya.
Flowchart dapat digunakan untuk membantu menyusun langkah-langkah sistematis. Flowchart juga dapat memudahkan pembacaan logika.
asas yang baik sebagai mahasiswa di UI:
hari ini harus lebih baik dari kemarin.
kalau hari ini lebih baik dari kemarin, maka berungtung. kalau hari ini sama dengan kemaren, ia merugi. kalau hari ini lebih buruk dari kemarin, ia adalah orang yg celaka
Berikut ini adalah hasil program yang telah saya uji coba:
Pertemuan 2
Saat ini sudah mulai memasuki revolusi industri 4.0, dimana semua orang sudah harus melek akan teknologi. Terlebih lagi, kita sebagai calon insinyur teknik mesin, harus memahami akan numerik. Kenapa demikian? Karena daya tampung otak kita tidak akan cukup menyimpan dan mengingat seluruh informasi yang tersedia saat ini. Kita butuh bantuan komputer. Komputer itu memang dirancang untuk menampung, mengingat, bahkan mengolah data-data informasi. Komputer sampai saat ini sudah berkempang sangat pesat, mulai dari software maupun hardware. Komputer zaman dahulu masih 32bit, namun yang sekarang sudah banyak beredar ialah versi 64bit, dimana besarnya bit ini merepresentasikan kecepatan dalam mengolah data.
Lalu kita diingatkan untuk selalu belajar dan belajar. Pak DAI menyampaikan, bahwa kalau kita semakin banyak mempelajari, maka kita akan semakin menunduk. Hal itu dikarenakan bahwa kita akan semakain sadar kalau ilmu yang kita miliki ini masih sangat sedikit. Intinya adalah tetap rendah hati. Kita yang hanya tahu sedikit ini jangan pernah sombong. Jangan juga melemah sehingga kita menjadi generasi yang idiot. Harus selalu semangat untuk membuka mata pada dunia. Jangan mau disetir oleh keadaan. Nah agar tidak mudah disetir, maka kita harus tahu akan ilmunya. Disinilah kesempatan besar untuk mempelajari metode numerik.
Berikut ini adalah hasil pembelajaran tentang tuples dan list:
Pertemuan 3
Pada pertemuan ketiga, kami ditantang untuk membuat sebuah program python yang mampu menjawab sebuah nilai di barisan fibonacci ke-n. Kira-kira seperti inilah program pyhton yang telah saya diskusikan bersama teman saya:
Pertemuan 4
Pada pertemuan keempat, kami ditantang untuk membuat sebuah program python yang mampu menjawab eliminasi Gauss dari sebuh matriks. Eliminasi Gauss adalah suatu cara mengoperasikan nilai-nilai di dalam matriks sehingga menjadi matriks yang lebih sederhana. Caranya adalah dengan melakukan operasi baris sehingga matriks tersebut menjadi matriks yang eselon-baris. Ini dapat digunakan sebagai salah satu metode penyelesaian persamaan linear dengan menggunakan matriks. Caranya dengan mengubah persamaan linear tersebut ke dalam matriks teraugmentasi dan mengoperasikannya. Setelah menjadi matriks Eselon-baris, lakukan substitusi balik untuk mendapatkan nilai dari variabel-variabel tersebut.
Eliminasi Gauss ini disempurnakan kembali dengan yang namanya Eliminasi Gauss Jordan. Dalam aljabar linear, eliminasi Gauss-Jordan adalah versi dari eliminasi Gauss. Pada metode eliminasi Gauss-Jordan kita membuat nol elemen-elemen di bawah maupun di atas diagonal utama suatu matriks. Hasilnya adalah matriks tereduksi yang berupa matriks diagonal satuan (semua elemen pada diagonal utama bernilai 1, elemen-elemen lainnya nol).
Berikut ini adalah kode program python yang telah saya pelajari:
from fractions import Fraction
def pprint(A):
n = len(A) for i in range(0, n): line = "" for j in range(0, n+1): line += str(A[i][j]) + "\t" if j == n-1: line += "| " print(line) print("")
- Performs and returns the gauss elimination
- @A : matrix
def gauss(A):
n = len(A)
for i in range(0, n): # Search for maximum in this column maxE1 = abs(A[i][i]) maxRow = i for k in range(i+1, n): # compares rows, first row can't start with zero if abs(A[k][i]) < maxE1 or maxE1 == 0: maxE1 = abs(A[k][i]) maxRow = k
# Swap maximum row with current row (column by column) for k in range(i, n+1): tmp = A[maxRow][k] A[maxRow][k] = A[i][k] A[i][k] = tmp
# Make all rows below this one 0 in current column for k in range(i+1, n): c = -A[k][i]/A[i][i] for j in range(i, n+1): if i == j: A[k][j] = 0 else: A[k][j] += c * A[i][j]
# Print echelon matrix print("Echelon Matrix:\t") pprint(A)
# Solve equation Ax = b for echelon matrix x = [0 for i in range(n)] for i in range(n - 1, -1, -1): # there is no solution if A[i][i] == 0: return [0 for i in range(n)] # normal solution else: x[i] = A[i][n]/A[i][i] for k in range(i-1, -1, -1): A[k][n] -= A[k][i]*x[i]
return x
- test code
print('Please input the number of variables:') n = int(input())
- creates a matrix of zeros
A = [[0 for j in range(n+1)] for i in range(n)]
- Read input data
print("Please enter each row separated by a new line:") for i in range(0, n):
line = map(Fraction, input().split(" ")) for j, el in enumerate(line): A[i][j] = el
print("Please enter the solution column with values separated by spaces:") line = input().split(" ") lastLine = list(map(Fraction, line)) for i in range(0, n):
A[i][n] = lastLine[i]
- Print input
print("\nMatrix:") pprint(A)
- Calculate solution
x = gauss(A)
- Print solution
print("Result:")
- check results
solution = False for i in range(n):
if x[i] != 0: solution = True
- a solution exists
if solution:
for i in range(len(x)): print("x", i+1, " = ", x[i])
- a solution does not exist
else:
print("No Solution")