Difference between revisions of "Oimolala Putrawan"
(79 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | + | Assalamualaikum | |
− | * | + | |
− | + | == Oimolala Putrawan == | |
+ | Nama : Oimolala Putrawan (Oi) | ||
+ | |||
+ | NPM : 1706036412 | ||
+ | |||
+ | |||
+ | == Pertemuan ke-1 4 September 2019 == | ||
+ | Hari/Tanggal : Rabu, 4 September 2019 | ||
+ | |||
+ | Kenapa saya harus belajar kalkulus? | ||
+ | |||
+ | |||
+ | Saya belajar kalkulus untuk meningkatkan kemampuan bermatematika saya yang kelak berguna untuk memahami fenomena fisik yang terjadi. selain itu belajar kalkulus meningkatkan kemampuan berpikir dan pola pikir saya. | ||
+ | |||
+ | |||
+ | == '''Apa itu Python?''' == | ||
+ | |||
+ | |||
+ | Python merupakan salah satu general purpose high-programing language, yang berarti memiliki sintaks yang mudah dimengerti oleh manusia. Diciptakan pertama kali oleh Guido von Rossum pada 1991. Python dengan bantuan beberapa libraries memiliki banyak kegunaan seperti web developing, scientific computing, sebagai scripting language pada software finite element method, dan yang paling menarik penggunaan python sebagai bahasa yang paling digunakan untuk artificial intelligence terutama pada machine learning. | ||
+ | |||
+ | == Pertemuan ke-2 11 September 2019 == | ||
+ | |||
+ | Pada pertemuan kedua ini, Pak Dai berpesan pada kami semua bahwa kita harus mengenal komputer untuk memehamai bagaimana komputer bekerja sehingga kita dapat memaksimalkan kegunaan komputer tersebut. Komputer merupakan sebuah alat teknologi yang dapat melaksanakan perintah dan menyelesaikan suatu persoalan dengan algoritma. Bahasa yang dipahami komputer adalah bahasa simbol binary yang terdiri dari angka 0 dan 1. Manusia adalah makhluk paling cerdas, tetapi memiliki memori yang terbatas dan mudah lelah jika melakukan pekerjaan yang berulang. Oleh sebab itu, manusia membuat komputer untuk alat bantu untuk mengingat dan menyelesaikan berbagai masalah terutama kegiatan yang bersifat iterasi. | ||
+ | |||
+ | Selain itu, pada pertemuan ini pak DAI mengajak kami berdisukusi tentang teknologi 5.0. Pak DAI berpendapat teknologi 5.0 adalah Pancasila, karena teknologi harus empowering human, bukan sebaliknya. Akan tetapi, komputer tetap harus diberikan perintah oleh manusia, sebab komputer tidak bisa memerintah dirinya sendiri. Lebih jauh lagi pak DAI mengajak kami merenung perihal kecerdasan dan kerendahan hati. Menurut pak DAI, semakin pintar seseorang, maka orang tersebut akan semakin menunduk atau rendah hati. Seseorang yang cerdas, semakin banyak ilmunya maka ia akan berpikir menggunakan hati, karena otaknya sudah dipenuhi oleh ilmu. Komputer tidak mempunyai hati, sehingga manusia tetap diperlukan untuk mengontrol dan memberi perintah komputer agar beroperasi secara maksimal. | ||
+ | |||
+ | |||
+ | Pak Radhon berpesan kepada kami untuk mencari suatu website atau platform untuk belajar python. Lalu install python pada laptop masing-masing. | ||
+ | |||
+ | |||
+ | == Pertemuan ke-3 18 September 2019 == | ||
+ | |||
+ | While Loop Fibonacci | ||
+ | |||
+ | a, b = 0, 1 | ||
+ | while a< 100: | ||
+ | print (a) | ||
+ | a, b = b, a+b | ||
+ | |||
+ | For Loop Fibonacci | ||
+ | |||
+ | a, b = 0, 1 | ||
+ | for i in range(0,100): | ||
+ | print(a) | ||
+ | a, b= b, a+b | ||
+ | |||
+ | |||
+ | Function Fibonacci | ||
+ | |||
+ | def fib(n): | ||
+ | a = 0 | ||
+ | b = 1 | ||
+ | if n < 0: | ||
+ | print("Incorrect input") | ||
+ | elif n == 0: | ||
+ | return a | ||
+ | elif n == 1: | ||
+ | return b | ||
+ | else: | ||
+ | for i in range(2,n): | ||
+ | c = a + b | ||
+ | a = b | ||
+ | b = c | ||
+ | return b | ||
+ | |||
+ | == Submission Tugas == | ||
+ | |||
+ | |||
+ | TUGAS 1 | ||
+ | |||
+ | [[File:Tugas 1]] | ||
+ | |||
+ | TUGAS 2 | ||
+ | |||
+ | Fibonacci with Python | ||
+ | |||
+ | [[File : Tugas 2 Function Approach]] | ||
+ | |||
+ | [[File : Tugas 2 Loop (while) Approach]] | ||
+ | |||
+ | [[File : Tugas 2 Loop (for) Approach]] | ||
+ | |||
+ | == Pertemuan ke-4 25 September 2019 == | ||
+ | |||
+ | Pada pertemuan hari ini kami mempelajari pengertian dari Pemodelan Komputer. Dalam mempelajari sesuatu sebaiknya kita memahami konsepnya terlebih dahulu. | ||
+ | |||
+ | Pada modeling, kita perlu melakukannya secara akurat dan reliable. Karena apa yang telah di design hasilnya harus dipastikan berfungsi secara baik, reliable dan berfungsi secara optimal. Akan tetapi dalam pelaksanannya, manusia memiliki keterbatasan dalam mencapai keakuratan model, tetapi hal ini bisa diatasi dengan menghitung secara pendekatan. Seperti menghitung 0/0 hasilnya bukanlah tidak ada namun kita yang tidak tahu bagaimana melakukan pendekatanya. Nilai ini hanya Tuhan yang tahu. | ||
+ | |||
+ | Numerical Computing -> Pemodelan Komputer Pemodelan Komputer terdiri dari modelling dan computation. | ||
+ | |||
+ | Selanjutnya kita belajar definisi dari model | ||
+ | |||
+ | Model adalah sebuah representasi yang di asumsikan agar dapat mensimplifikasi dari keadaan real yang | ||
+ | sulit menjadi lebih mudah. Hasil dari pemodelan tidak dapat dijadikan hasil akhir, dikarnakan adanya | ||
+ | banyak asumsi-asumsi ideal yang digunakan. Karena itulah hasilnya tidak akan sama dengan simulasi yang | ||
+ | dilakukan | ||
+ | |||
+ | Asumsi disederhanakan lagi kedaan aktual simulasi komputer. | ||
+ | |||
+ | Permodelan dibagi menjadi 3 bagian, yaitu : 1. Representasi 2. Asumsi 3. Simplifikasi | ||
+ | |||
+ | Contoh--> desain pada fondasi. untuk menghitung kekuatan fondasi menahan force. Fondasi didesign dalam bentuk 2D dan di asumsikan Modulus Elastisitas pada semua titik di permukaan sama, lalu disimplifikasi dengan menggunakan design 2D. Dari berbagai model yang kita buat, dibutuhkan pengetahuan dalam membangun persamaan aljabar dan memodelkan persamaan dalam komputasi. Untuk itu kita harus giat belajar serta berlatih sejak dini untuk menggunakan komputasi. Selain itu ada juga aplikasi dari komputasi yaitu Diskritisasi yaitu membuat sesuatu yang kontinu menjadi titik-titik yang berhingga. | ||
+ | |||
+ | == Pertemuan ke-5 02 Oktober 2019 == | ||
+ | Setiap permasalahan yang ada dapat dimodelkan. dengan memodelkan permasalahan, kita dapat lebih jernih dalam melihat suatu permasalahannya sehingga akan solusi yang kita buat menjadi lebih efektif dan efisien. Permodelan dan problem solving dapat dilakukan dengan pemrograman. Salah satunya dengan menggunakan Bahasa Python sebagai alat penyelesaian masalah. | ||
+ | |||
+ | Pada pertemuan kali ini, kami diberi penjelasan oleh asisten dosen tentang aljabar simultan. Lalu kami diberi contoh modelling spring system yang terdiri dari beberapa pegas yang dihubungkan dalam susunan seri. Asisten dosen menjelaskan tentang penggunaan simultan pada sistem tunggal menjadi sebuah persamaan linier dengan cara menerjemahkan persamaan yang biasa kita gunakan menjadi sebuah matrix sehingga kami dapat melakukan modelling pada spring system yang memiliki lebih banyak pegas. Modelling matriks ini nantinya dapat disolve menggunakan metode Gauss Jordan dengan Python. Saat menggunakan input, eval harus digunakan sehingga menjadi angka, tanpa eval dia akan menganggapnya sebagai string. Syntax eval juga dapat diubah menjadi int (interger) atau float untuk angka dengan decimal tergantung angka yang ingin dimasukan. Selain itu pada pertemuan ini mempelajari mengenai Cara menyusun Matrix Pegas yang bukan Tunggal yaitu dengan menggunakan Superposisi Matrix. Lalu, diberikan contoh pemodelan sistem ganda di pegas seri. | ||
+ | |||
+ | == Pertemuan ke-6 09 Oktober 2019 == | ||
+ | Pada pertemuan hari ini belajar mengenai pemecahan masalah aljabar. Dalam masalah matematika terutama aljabar pada umumnya banyak dipakai untuk memodelkan suatu permasalahan fisika dan pada saat ini komputer memiliki peran dalam pemodelan masalah tersebut. Dalam penyelesaian komputer berguna sebagai alat bantu karena komputer dapat diandalkan dalam operasi berulang dan konstan. | ||
+ | |||
+ | Alur teknik penyelesaian masalah Aljabar | ||
+ | |||
+ | 1. Metode Eliminasi | ||
+ | |||
+ | 2. Metode Gauss | ||
+ | |||
+ | 3. Trial & Error | ||
+ | |||
+ | Selain itu, pak Dai juga berpesan: | ||
+ | |||
+ | "Pak DAI ingin mahasiswanya bukan hanya sekedar pintar namun juga cerdas, apa itu cerdas?. Menurut beliau cerdas adalah berpikir lebih | ||
+ | dibandingan orang lain disekitarnya, orang yang memiliki pemikiran yang futuristik. Seperti orang tersebut sudah menjadwalkan/menata apa | ||
+ | yang saya ingin lakukan di akhir hari."- Pak DAI | ||
+ | |||
+ | == Pertemuan ke-6 16 Oktober 2019 (QUIZ) == | ||
+ | Pada pertemuan ini pak DAI mengadakan kuis dadakan yang membuat kami terkejut dan kebingungan. Materi kuisnya adalah gauss elimination mulai dari algoritma hingga hasil dari python | ||
+ | |||
+ | == UTS [23 Oktober] == | ||
+ | |||
+ | UTS | ||
+ | #cara 1 | ||
+ | 3A | ||
+ | |||
+ | mass1 = eval(input("Massa Benda 1 ? ")) #menginput m1 | ||
+ | mass2 = eval(input("Massa Benda 2 ? "))#menginput m2 | ||
+ | mass3 = eval(input("Massa Benda 3 ? ")) #meninput m3 | ||
+ | mass4 = eval(input("Massa Benda 4 ? ")) | ||
+ | g = eval(input("Gravitasi ? ")) #input g | ||
+ | sinus@ = ((mass1+mass2+mass3)/mass4)#hitung sin theta | ||
+ | T1 = mass1*sinus@*g #hitung T1 | ||
+ | T2 = mass2*sinus@*g + T1 #hitung T2 | ||
+ | T3 = mass3*sinus@*g + T2 #hitung T3 | ||
+ | print("T1", T1) | ||
+ | print("T2",T2) | ||
+ | print("T3", T3) | ||
+ | print("Sin theta = ", sinus@,"") | ||
+ | |||
+ | #cara 2 | ||
+ | |||
+ | #Cara 2 | ||
+ | m1 = eval(input("Massa Benda 1 ? ")) | ||
+ | m2 = eval(input("Massa Benda 2 ? ")) | ||
+ | m3 = eval(input("Massa Benda 3 ? ")) | ||
+ | m4 = eval(input("Massa Benda 4 ? ")) | ||
+ | g = eval(input("Gravitasi ? ")) | ||
+ | sinusa = ((m1+m2+m3)/m4) | ||
+ | Matrx=[[1,0,0,m1*sinusa*g],[1,1,0,(2*m1+m2)*sinusa*g],[2,1,1,((2*(2*m1+m2))+m3)*sinusa*g]] #Matrix yg mau di gauss | ||
+ | def PrintMatrix(Matrix): #untuk print | ||
+ | for i in range(len(Matrix)): | ||
+ | for j in range(len(Matrix[i])): | ||
+ | print(Matrix[i][j],end="\t") | ||
+ | print() | ||
+ | def MultiplyRow(Row,Scalar): #untuk kali | ||
+ | for i in range(len(Row)): | ||
+ | Row[i]=Row[i]*Scalar | ||
+ | def AddRow(Matrix,RowNR1,RowNR2,multi=1): #untuk tambah | ||
+ | for i in range(len(Matrix[RowNR2])): | ||
+ | Matrix[RowNR2][i]+=Matrix[RowNR1][i]*multi | ||
+ | def SwitchRow(Matrix,RowNR1,RowNR2): #untuk tukar | ||
+ | bufrow=Matrix[RowNR1] | ||
+ | Matrix[RowNR1]=Matrix[RowNR2] | ||
+ | Matrix[RowNR2]=bufrow | ||
+ | return 0 | ||
+ | def ZeroRowsBelow(Matrix,RowNR,CollumnNR): #untuk menghindari eror 0 | ||
+ | for i in range(len(Matrix)-RowNR-1): | ||
+ | if not(Matrix[RowNR][CollumnNR]==0): | ||
+ | AddRow(Matrix,RowNR,i+1+RowNR,-float(Matrix[i+1+RowNR][CollumnNR])/Matrix[RowNR][CollumnNR]) | ||
+ | #print(i) | ||
+ | def SolveMatrix(Matrix): #untuk mensolve | ||
+ | #Bring To Row-Echelon Form | ||
+ | for i in range(len(Matrex)): | ||
+ | ZeroRowsBelow(Matrex,i,i) | ||
+ | #Make Row-Echelon 1 | ||
+ | for i in range(len(Matrex)): | ||
+ | if not(Matrex[i][i]==0): | ||
+ | MultiplyRow(Matrex[i],1./Matrex[i][i]) | ||
+ | #diulang lagi | ||
+ | for i in range(len(Matrex)): | ||
+ | for j in range(i): | ||
+ | if not(Matrex[i][i]==0): | ||
+ | AddRow(Matrex,i,j,-float(Matrex[j][i])/Matrex[i][i]) | ||
+ | def IsRRowEchelon(Matrix): #cek selsai | ||
+ | for i in range(len(Matrix)): | ||
+ | pos=[1,0] | ||
+ | if not(Matrix[i][i] in pos): | ||
+ | return 0 | ||
+ | return 1 | ||
+ | def CheckForEqualRows(Matrix):#cek nilai | ||
+ | newlist=[] | ||
+ | for i in Matrix: | ||
+ | if i not in newlist: | ||
+ | newlist.append(i) | ||
+ | return newlist | ||
+ | MatrixNew=[] | ||
+ | for j in range(len(Matrex)): | ||
+ | RowNew=[] | ||
+ | for i in range(len(Matrex[j])): | ||
+ | RowNew.append(Matrex[j][i]) | ||
+ | MatrixNew.append(RowNew) | ||
+ | Matrex=MatrixNew | ||
+ | PrintMatrix(Matrex) | ||
+ | print() | ||
+ | while True: | ||
+ | SolveMatrix(Matrex) | ||
+ | Matrex=CheckForEqualRows(Matrex) | ||
+ | if IsRRowEchelon(Matrex): | ||
+ | break | ||
+ | PrintMatrix(Matrex)#print matrix | ||
+ | print("") | ||
+ | print("Solusinya") | ||
+ | print("T1 = ",Matrex[0][3]) | ||
+ | print("T2 = ",Matrex[1][3]) | ||
+ | print("T3 = ",Matrex[2][3]) | ||
+ | print("Sin Theta = ",Matrex[0][3]/(m1*g)) | ||
+ | |||
+ | |||
+ | 3B | ||
+ | |||
+ | cd=eval(input("drag coefficient: ")) #input coef drag | ||
+ | Vawal=0 #kondisi diam | ||
+ | m=eval(input("mass (kg): ")) #massa | ||
+ | a=eval(input("acceleration (m/s^2): ")) #perc | ||
+ | Vakhir=eval(input("top speed (m/s): ")) #vtop | ||
+ | fdrag=(cd*Vakhir**(3/2))/m #gayagesek | ||
+ | Ftotal=a-fdrag | ||
+ | Atotal = Ftotal #dibagi m | ||
+ | t=(Vakhir-Vawal)/Atotal #hitung waktu | ||
+ | print("Waktu untuk mencapai Vakhir: ",t, "detik") | ||
+ | |||
+ | Video Muhasabah | ||
+ | [[File:OiMuhas.mp4]] | ||
+ | |||
+ | Tugas 30 Oktober 2019 | ||
+ | def derivative_velocity(acc, vfinal): #Function | ||
+ | return (9.8*sina-(1/2)*(1/m)*(cd)**(3/2)-miu*9.8) | ||
+ | cd=eval(input("drag coefficient: ")) #input coef drag | ||
+ | miu = eval(input("friction coef: ")) | ||
+ | Vinitial=0 #stationary condition | ||
+ | sina = 0.5 | ||
+ | m=eval(input("mass (kg): ")) #mass | ||
+ | accceleration=eval(input("acceleration (m/s^2): ")) | ||
+ | #perc | ||
+ | Vakhir=eval(input("top speed (m/s): ")) | ||
+ | #vtop | ||
+ | xawal = 0 #boundary condition x awal soal | ||
+ | yinit = 0 #boundary condition y awal soal | ||
+ | x = Vfinal #the asked x | ||
+ | h = 1 #delta used | ||
+ | number = (int)((x - xawal)/h) calculate the increment | ||
+ | for i in range(1, angka + 1): | ||
+ | k1 = h * Derivative_velocity(xawal, yinit) #runge kutta formula | ||
+ | k2 = h * Derivative_velocity(xawal + 0.5 * h, yinit + 0.5 * k1) | ||
+ | k3 = h * Derivative_velocity(xawal + 0.5 * h, yinit + 0.5 * k2) | ||
+ | k4 = h * Derivative_velocity(xawal + h, yinit + k3) | ||
+ | yinit = yinit + (1 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) sum value of k1,k2,k3,k4 to the nwe y' and divide it | ||
+ | xawal = xawal + h | ||
+ | #sum xawal increase delta h | ||
+ | print("time needed", yinit,"second") | ||
+ | |||
+ | '''Tugas [30 Oktober]''' | ||
+ | |||
+ | # x0 dan y sebagai titik asal, x sebagai t yang diinput, dan h sebagai tingkat peningkatan, di sini digunakan h = 0.001 supaya cukup | ||
+ | akurat | ||
+ | x0 = 0 | ||
+ | y = 0 | ||
+ | h = 0.001 | ||
+ | x = float(input("Nilai t: ")) # perintah untuk memasukkan nilai t sebagai x | ||
+ | |||
+ | if 0 <= x < 2: # untuk 0 <= t < 2 | ||
+ | def dydx(x, y): # dydx menyatakan persamaan awal dalam soal | ||
+ | return (4 * x - 30 * y) # diperoleh 4x - 30y karena diketahui di soal m = 2,5 kg dan k = 75 N/m, P(t) dinyatakan dalam x | ||
+ | |||
+ | def rungeKutta(x0, y0, x, h): # perhitungan Runge-Kutta | ||
+ | n = (int)((x - x0) / h) | ||
+ | y = y0 | ||
+ | for i in range(1, n + 1): | ||
+ | k1 = h * dydx(x0, y) | ||
+ | k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1) | ||
+ | k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2) | ||
+ | k4 = h * dydx(x0 + h, y + k3) | ||
+ | y = y + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4) | ||
+ | x0 = x0 + h | ||
+ | return y | ||
+ | |||
+ | print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h)) | ||
+ | |||
+ | elif x >= 2: # untuk t > 2 | ||
+ | def dydx(x, y): # dydx menyatakan persamaan awal dalam soal | ||
+ | return (8 - 30 * y) # diperoleh 8 - 30y karena diketahui di soal P(t) = 20 N , m = 2,5 kg , k = 75 N/m | ||
+ | |||
+ | def rungeKutta(x0, y0, x, h): # perhitungan Runge-Kutta | ||
+ | n = (int)((x - x0) / h) | ||
+ | y = y0 | ||
+ | for i in range(1, n + 1): | ||
+ | k1 = h * dydx(x0, y) | ||
+ | k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1) | ||
+ | k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2) | ||
+ | k4 = h * dydx(x0 + h, y + k3) | ||
+ | y = y + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4) | ||
+ | x0 = x0 + h | ||
+ | return y | ||
+ | |||
+ | print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h)) # print nilai y pada t yang diinput | ||
+ | |||
+ | else: | ||
+ | print("Nilai t harus positif.") # memberitahu nilai t harus positif jika t yang dimasukkan negatif | ||
+ | |||
+ | == Pertemuan ke-9 30 Oktober 2019== | ||
+ | Hari ini kita belajar permodelan fisika menggunakan metode Runge-Kutta. Metode ini sekilas terlihat sedikit rumit dibandingkan dengan cara metode gauss elimination. tetapi setelah dicoba, metode ini tidak begitu sulit. | ||
+ | |||
+ | == Pertemuan ke-10 6 November 2019 == | ||
+ | Pada pertemuan kali ini kita belajar bagaimana cara untuk berpikir dengan benar. metode numerik merupakan salah satu tools untuk membuat kita berpikir lebih baik. Pada kelas hari ini pak DAI menyampaikan pesan bahwa menyelesaikan masalah dimulai dengan mengetahui apa masalahnya terlebih dahulu, bukan hanya diketahui, ditanya, dijawan dan mencocokkan persamaan-persamaan yang ada.Kami diharapkan menjadi sarjana yang mampu merumuskan masalah ddan menyusun solusinya. Sebelum menyelesaikan suatu permaalahan dengan metode numerik, pertama-tama kita perlu memahami permasalahannya terlebih dahulu. Metode numerik sudah tersusun secara terstruktur dan dibukukan. namun karena perkembangan teknologi sangat cepat, metode numerik belum bisa untuk mengikuti perkembangan terhadap metode-metode baru yang ada seperti AI (artificial intelligence). menurut pak Dai, mengetahui masalah bukan hanya diketahui ini dan itu saja kemudian memasukkan kedalam persamaan yang sudah ada. Pekerjaan itu merupakan pekerjaan operator. Sebagai mahasiswa teknik mesin kita harus bisa merumuskan dan menyusun masalah menjadi suatu persamaan bukan hanya menerapkan persamaan-persamaan yang sudah ada. | ||
+ | |||
+ | |||
+ | == Pertemuan ke-11 13 November 2019 == | ||
+ | Pada pertemuan kali ini kita mempelajari beberapa proses pengelolaan data seperti Regresi linier, curve fitting, least square. Lalu kita belajar bagaimana cara menentukan metode tepat untuk membuat suatu grafik dengan pendekatan regresi linier. Kita perlu memahami fenomoena fisiknya terlebih dahulu agar kita bisa memiliki gambaran terhadap grafik yang akan terbentuk. Selain itu, kita juga dapat mengetahui jika ada yang tidak sesuai dengan grafik yang kita buat. Kita juga belajar tentang optimasi. Optimasi merupakan salah satu metode yang digunakan untuk menentukan nilai minimum dan maksimum dari suatu fungsi, mencari mana yang lebih ideal antar nilai minimum atau maksimumnya. Nilai minimum merupakan error dari fungsi itu sendiri. Optimasi tanpa batasan lebih sulit dibandingkan sebelumnya karena terdapat lebih dari satu variabel. contoh ,fungsi f(x,y) akan berada pada titik optimum bila derivasi pertama nilainyadisamakan dengan nol. Dengan demikian bisa dikatakan variabel x dan y berada pada titik stasioner pada x=xo dan y= yo. | ||
+ | |||
+ | == Optimasi Air Foil == | ||
+ | Dapat dilihat di : [http://air.eng.ui.ac.id/index.php?title=Kelompok_14[[Kelompok 14]]] | ||
+ | |||
+ | == Pertemuan ke-15 11 Desember 2019 == | ||
+ | Pada pertemuan ini kami dikelas belajar ANN, Artificial Neural Network Artificial (ANN) atau Jaringan Syaraf Tiruan merupakan sebuah teknik atau pendekatan pengolahan informasi yang terinspirasi oleh cara kerja sistem saraf biologis, khususnya pada sel otak manusia dalam memproses informasi. Elemen kunci dari teknik ini adalah struktur sistem pengolahan informasi yang bersifat unik dan beragam untuk tiap aplikasi. Neural Network terdiri dari sejumlah besar elemen pemrosesan informasi (neuron) yang saling terhubung dan bekerja bersama-sama untuk menyelesaikan sebuah masalah tertentu, yang pada umumnya dalah masalah klasifikasi ataupun prediksi.Dengan step pembuatan Ann adalah: | ||
+ | |||
+ | 1. Data Preprocessing | ||
+ | |||
+ | 2. Add input layers | ||
+ | |||
+ | 3. Random w init | ||
+ | |||
+ | 4. Add hidden layers | ||
+ | |||
+ | 5. Select optimizer, loss, and performance matrixs | ||
+ | |||
+ | 6. compile the model | ||
+ | |||
+ | 7. use model .fit to train the model | ||
+ | |||
+ | 8. evaluate the model | ||
+ | |||
+ | 9. Adjust optimization parameters or model if needed | ||
+ | |||
+ | Dengan memasukan Data yang telah diberikan asdos, didapat kesimpulan Val_accuracy hanya 25 persen saja namun itulah hasil yang terbaik, Dapat dilihat hasil grafik output real = output prediction. |
Latest revision as of 18:28, 17 December 2019
Assalamualaikum
Contents
- 1 Oimolala Putrawan
- 2 Pertemuan ke-1 4 September 2019
- 3 Apa itu Python?
- 4 Pertemuan ke-2 11 September 2019
- 5 Pertemuan ke-3 18 September 2019
- 6 Submission Tugas
- 7 Pertemuan ke-4 25 September 2019
- 8 Pertemuan ke-5 02 Oktober 2019
- 9 Pertemuan ke-6 09 Oktober 2019
- 10 Pertemuan ke-6 16 Oktober 2019 (QUIZ)
- 11 UTS [23 Oktober]
- 12 Pertemuan ke-9 30 Oktober 2019
- 13 Pertemuan ke-10 6 November 2019
- 14 Pertemuan ke-11 13 November 2019
- 15 Optimasi Air Foil
- 16 Pertemuan ke-15 11 Desember 2019
Oimolala Putrawan
Nama : Oimolala Putrawan (Oi)
NPM : 1706036412
Pertemuan ke-1 4 September 2019
Hari/Tanggal : Rabu, 4 September 2019
Kenapa saya harus belajar kalkulus?
Saya belajar kalkulus untuk meningkatkan kemampuan bermatematika saya yang kelak berguna untuk memahami fenomena fisik yang terjadi. selain itu belajar kalkulus meningkatkan kemampuan berpikir dan pola pikir saya.
Apa itu Python?
Python merupakan salah satu general purpose high-programing language, yang berarti memiliki sintaks yang mudah dimengerti oleh manusia. Diciptakan pertama kali oleh Guido von Rossum pada 1991. Python dengan bantuan beberapa libraries memiliki banyak kegunaan seperti web developing, scientific computing, sebagai scripting language pada software finite element method, dan yang paling menarik penggunaan python sebagai bahasa yang paling digunakan untuk artificial intelligence terutama pada machine learning.
Pertemuan ke-2 11 September 2019
Pada pertemuan kedua ini, Pak Dai berpesan pada kami semua bahwa kita harus mengenal komputer untuk memehamai bagaimana komputer bekerja sehingga kita dapat memaksimalkan kegunaan komputer tersebut. Komputer merupakan sebuah alat teknologi yang dapat melaksanakan perintah dan menyelesaikan suatu persoalan dengan algoritma. Bahasa yang dipahami komputer adalah bahasa simbol binary yang terdiri dari angka 0 dan 1. Manusia adalah makhluk paling cerdas, tetapi memiliki memori yang terbatas dan mudah lelah jika melakukan pekerjaan yang berulang. Oleh sebab itu, manusia membuat komputer untuk alat bantu untuk mengingat dan menyelesaikan berbagai masalah terutama kegiatan yang bersifat iterasi.
Selain itu, pada pertemuan ini pak DAI mengajak kami berdisukusi tentang teknologi 5.0. Pak DAI berpendapat teknologi 5.0 adalah Pancasila, karena teknologi harus empowering human, bukan sebaliknya. Akan tetapi, komputer tetap harus diberikan perintah oleh manusia, sebab komputer tidak bisa memerintah dirinya sendiri. Lebih jauh lagi pak DAI mengajak kami merenung perihal kecerdasan dan kerendahan hati. Menurut pak DAI, semakin pintar seseorang, maka orang tersebut akan semakin menunduk atau rendah hati. Seseorang yang cerdas, semakin banyak ilmunya maka ia akan berpikir menggunakan hati, karena otaknya sudah dipenuhi oleh ilmu. Komputer tidak mempunyai hati, sehingga manusia tetap diperlukan untuk mengontrol dan memberi perintah komputer agar beroperasi secara maksimal.
Pak Radhon berpesan kepada kami untuk mencari suatu website atau platform untuk belajar python. Lalu install python pada laptop masing-masing.
Pertemuan ke-3 18 September 2019
While Loop Fibonacci
a, b = 0, 1 while a< 100: print (a) a, b = b, a+b
For Loop Fibonacci
a, b = 0, 1 for i in range(0,100): print(a) a, b= b, a+b
Function Fibonacci
def fib(n): a = 0 b = 1 if n < 0: print("Incorrect input") elif n == 0: return a elif n == 1: return b else: for i in range(2,n): c = a + b a = b b = c return b
Submission Tugas
TUGAS 1
File:Tugas 1
TUGAS 2
Fibonacci with Python
File:Tugas 2 Function Approach
File:Tugas 2 Loop (while) Approach
File:Tugas 2 Loop (for) Approach
Pertemuan ke-4 25 September 2019
Pada pertemuan hari ini kami mempelajari pengertian dari Pemodelan Komputer. Dalam mempelajari sesuatu sebaiknya kita memahami konsepnya terlebih dahulu.
Pada modeling, kita perlu melakukannya secara akurat dan reliable. Karena apa yang telah di design hasilnya harus dipastikan berfungsi secara baik, reliable dan berfungsi secara optimal. Akan tetapi dalam pelaksanannya, manusia memiliki keterbatasan dalam mencapai keakuratan model, tetapi hal ini bisa diatasi dengan menghitung secara pendekatan. Seperti menghitung 0/0 hasilnya bukanlah tidak ada namun kita yang tidak tahu bagaimana melakukan pendekatanya. Nilai ini hanya Tuhan yang tahu.
Numerical Computing -> Pemodelan Komputer Pemodelan Komputer terdiri dari modelling dan computation.
Selanjutnya kita belajar definisi dari model
Model adalah sebuah representasi yang di asumsikan agar dapat mensimplifikasi dari keadaan real yang sulit menjadi lebih mudah. Hasil dari pemodelan tidak dapat dijadikan hasil akhir, dikarnakan adanya banyak asumsi-asumsi ideal yang digunakan. Karena itulah hasilnya tidak akan sama dengan simulasi yang dilakukan
Asumsi disederhanakan lagi kedaan aktual simulasi komputer.
Permodelan dibagi menjadi 3 bagian, yaitu : 1. Representasi 2. Asumsi 3. Simplifikasi
Contoh--> desain pada fondasi. untuk menghitung kekuatan fondasi menahan force. Fondasi didesign dalam bentuk 2D dan di asumsikan Modulus Elastisitas pada semua titik di permukaan sama, lalu disimplifikasi dengan menggunakan design 2D. Dari berbagai model yang kita buat, dibutuhkan pengetahuan dalam membangun persamaan aljabar dan memodelkan persamaan dalam komputasi. Untuk itu kita harus giat belajar serta berlatih sejak dini untuk menggunakan komputasi. Selain itu ada juga aplikasi dari komputasi yaitu Diskritisasi yaitu membuat sesuatu yang kontinu menjadi titik-titik yang berhingga.
Pertemuan ke-5 02 Oktober 2019
Setiap permasalahan yang ada dapat dimodelkan. dengan memodelkan permasalahan, kita dapat lebih jernih dalam melihat suatu permasalahannya sehingga akan solusi yang kita buat menjadi lebih efektif dan efisien. Permodelan dan problem solving dapat dilakukan dengan pemrograman. Salah satunya dengan menggunakan Bahasa Python sebagai alat penyelesaian masalah.
Pada pertemuan kali ini, kami diberi penjelasan oleh asisten dosen tentang aljabar simultan. Lalu kami diberi contoh modelling spring system yang terdiri dari beberapa pegas yang dihubungkan dalam susunan seri. Asisten dosen menjelaskan tentang penggunaan simultan pada sistem tunggal menjadi sebuah persamaan linier dengan cara menerjemahkan persamaan yang biasa kita gunakan menjadi sebuah matrix sehingga kami dapat melakukan modelling pada spring system yang memiliki lebih banyak pegas. Modelling matriks ini nantinya dapat disolve menggunakan metode Gauss Jordan dengan Python. Saat menggunakan input, eval harus digunakan sehingga menjadi angka, tanpa eval dia akan menganggapnya sebagai string. Syntax eval juga dapat diubah menjadi int (interger) atau float untuk angka dengan decimal tergantung angka yang ingin dimasukan. Selain itu pada pertemuan ini mempelajari mengenai Cara menyusun Matrix Pegas yang bukan Tunggal yaitu dengan menggunakan Superposisi Matrix. Lalu, diberikan contoh pemodelan sistem ganda di pegas seri.
Pertemuan ke-6 09 Oktober 2019
Pada pertemuan hari ini belajar mengenai pemecahan masalah aljabar. Dalam masalah matematika terutama aljabar pada umumnya banyak dipakai untuk memodelkan suatu permasalahan fisika dan pada saat ini komputer memiliki peran dalam pemodelan masalah tersebut. Dalam penyelesaian komputer berguna sebagai alat bantu karena komputer dapat diandalkan dalam operasi berulang dan konstan.
Alur teknik penyelesaian masalah Aljabar
1. Metode Eliminasi
2. Metode Gauss
3. Trial & Error
Selain itu, pak Dai juga berpesan:
"Pak DAI ingin mahasiswanya bukan hanya sekedar pintar namun juga cerdas, apa itu cerdas?. Menurut beliau cerdas adalah berpikir lebih dibandingan orang lain disekitarnya, orang yang memiliki pemikiran yang futuristik. Seperti orang tersebut sudah menjadwalkan/menata apa yang saya ingin lakukan di akhir hari."- Pak DAI
Pertemuan ke-6 16 Oktober 2019 (QUIZ)
Pada pertemuan ini pak DAI mengadakan kuis dadakan yang membuat kami terkejut dan kebingungan. Materi kuisnya adalah gauss elimination mulai dari algoritma hingga hasil dari python
UTS [23 Oktober]
UTS
#cara 1 3A
mass1 = eval(input("Massa Benda 1 ? ")) #menginput m1 mass2 = eval(input("Massa Benda 2 ? "))#menginput m2 mass3 = eval(input("Massa Benda 3 ? ")) #meninput m3 mass4 = eval(input("Massa Benda 4 ? ")) g = eval(input("Gravitasi ? ")) #input g sinus@ = ((mass1+mass2+mass3)/mass4)#hitung sin theta T1 = mass1*sinus@*g #hitung T1 T2 = mass2*sinus@*g + T1 #hitung T2 T3 = mass3*sinus@*g + T2 #hitung T3 print("T1", T1) print("T2",T2) print("T3", T3) print("Sin theta = ", sinus@,"")
#cara 2
#Cara 2 m1 = eval(input("Massa Benda 1 ? ")) m2 = eval(input("Massa Benda 2 ? ")) m3 = eval(input("Massa Benda 3 ? ")) m4 = eval(input("Massa Benda 4 ? ")) g = eval(input("Gravitasi ? ")) sinusa = ((m1+m2+m3)/m4) Matrx=[[1,0,0,m1*sinusa*g],[1,1,0,(2*m1+m2)*sinusa*g],[2,1,1,((2*(2*m1+m2))+m3)*sinusa*g]] #Matrix yg mau di gauss def PrintMatrix(Matrix): #untuk print for i in range(len(Matrix)): for j in range(len(Matrix[i])): print(Matrix[i][j],end="\t") print() def MultiplyRow(Row,Scalar): #untuk kali for i in range(len(Row)): Row[i]=Row[i]*Scalar def AddRow(Matrix,RowNR1,RowNR2,multi=1): #untuk tambah for i in range(len(Matrix[RowNR2])): Matrix[RowNR2][i]+=Matrix[RowNR1][i]*multi def SwitchRow(Matrix,RowNR1,RowNR2): #untuk tukar bufrow=Matrix[RowNR1] Matrix[RowNR1]=Matrix[RowNR2] Matrix[RowNR2]=bufrow return 0 def ZeroRowsBelow(Matrix,RowNR,CollumnNR): #untuk menghindari eror 0 for i in range(len(Matrix)-RowNR-1): if not(Matrix[RowNR][CollumnNR]==0): AddRow(Matrix,RowNR,i+1+RowNR,-float(Matrix[i+1+RowNR][CollumnNR])/Matrix[RowNR][CollumnNR]) #print(i) def SolveMatrix(Matrix): #untuk mensolve #Bring To Row-Echelon Form for i in range(len(Matrex)): ZeroRowsBelow(Matrex,i,i) #Make Row-Echelon 1 for i in range(len(Matrex)): if not(Matrex[i][i]==0): MultiplyRow(Matrex[i],1./Matrex[i][i]) #diulang lagi for i in range(len(Matrex)): for j in range(i): if not(Matrex[i][i]==0): AddRow(Matrex,i,j,-float(Matrex[j][i])/Matrex[i][i]) def IsRRowEchelon(Matrix): #cek selsai for i in range(len(Matrix)): pos=[1,0] if not(Matrix[i][i] in pos): return 0 return 1 def CheckForEqualRows(Matrix):#cek nilai newlist=[] for i in Matrix: if i not in newlist: newlist.append(i) return newlist MatrixNew=[] for j in range(len(Matrex)): RowNew=[] for i in range(len(Matrex[j])): RowNew.append(Matrex[j][i]) MatrixNew.append(RowNew) Matrex=MatrixNew PrintMatrix(Matrex) print() while True: SolveMatrix(Matrex) Matrex=CheckForEqualRows(Matrex) if IsRRowEchelon(Matrex): break PrintMatrix(Matrex)#print matrix print("") print("Solusinya") print("T1 = ",Matrex[0][3]) print("T2 = ",Matrex[1][3]) print("T3 = ",Matrex[2][3]) print("Sin Theta = ",Matrex[0][3]/(m1*g))
3B
cd=eval(input("drag coefficient: ")) #input coef drag Vawal=0 #kondisi diam m=eval(input("mass (kg): ")) #massa a=eval(input("acceleration (m/s^2): ")) #perc Vakhir=eval(input("top speed (m/s): ")) #vtop fdrag=(cd*Vakhir**(3/2))/m #gayagesek Ftotal=a-fdrag Atotal = Ftotal #dibagi m t=(Vakhir-Vawal)/Atotal #hitung waktu print("Waktu untuk mencapai Vakhir: ",t, "detik")
Video Muhasabah
Tugas 30 Oktober 2019 def derivative_velocity(acc, vfinal): #Function return (9.8*sina-(1/2)*(1/m)*(cd)**(3/2)-miu*9.8) cd=eval(input("drag coefficient: ")) #input coef drag miu = eval(input("friction coef: ")) Vinitial=0 #stationary condition sina = 0.5 m=eval(input("mass (kg): ")) #mass accceleration=eval(input("acceleration (m/s^2): ")) #perc Vakhir=eval(input("top speed (m/s): ")) #vtop xawal = 0 #boundary condition x awal soal yinit = 0 #boundary condition y awal soal x = Vfinal #the asked x h = 1 #delta used number = (int)((x - xawal)/h) calculate the increment for i in range(1, angka + 1): k1 = h * Derivative_velocity(xawal, yinit) #runge kutta formula k2 = h * Derivative_velocity(xawal + 0.5 * h, yinit + 0.5 * k1) k3 = h * Derivative_velocity(xawal + 0.5 * h, yinit + 0.5 * k2) k4 = h * Derivative_velocity(xawal + h, yinit + k3) yinit = yinit + (1 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) sum value of k1,k2,k3,k4 to the nwe y' and divide it xawal = xawal + h #sum xawal increase delta h print("time needed", yinit,"second")
Tugas [30 Oktober]
# x0 dan y sebagai titik asal, x sebagai t yang diinput, dan h sebagai tingkat peningkatan, di sini digunakan h = 0.001 supaya cukup akurat x0 = 0 y = 0 h = 0.001 x = float(input("Nilai t: ")) # perintah untuk memasukkan nilai t sebagai x
if 0 <= x < 2: # untuk 0 <= t < 2 def dydx(x, y): # dydx menyatakan persamaan awal dalam soal return (4 * x - 30 * y) # diperoleh 4x - 30y karena diketahui di soal m = 2,5 kg dan k = 75 N/m, P(t) dinyatakan dalam x
def rungeKutta(x0, y0, x, h): # perhitungan Runge-Kutta n = (int)((x - x0) / h) y = y0 for i in range(1, n + 1): k1 = h * dydx(x0, y) k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1) k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2) k4 = h * dydx(x0 + h, y + k3) y = y + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4) x0 = x0 + h return y
print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h))
elif x >= 2: # untuk t > 2 def dydx(x, y): # dydx menyatakan persamaan awal dalam soal return (8 - 30 * y) # diperoleh 8 - 30y karena diketahui di soal P(t) = 20 N , m = 2,5 kg , k = 75 N/m
def rungeKutta(x0, y0, x, h): # perhitungan Runge-Kutta n = (int)((x - x0) / h) y = y0 for i in range(1, n + 1): k1 = h * dydx(x0, y) k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1) k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2) k4 = h * dydx(x0 + h, y + k3) y = y + (1.0 / 6.0) * (k1 + 2 * k2 + 2 * k3 + k4) x0 = x0 + h return y
print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h)) # print nilai y pada t yang diinput
else: print("Nilai t harus positif.") # memberitahu nilai t harus positif jika t yang dimasukkan negatif
Pertemuan ke-9 30 Oktober 2019
Hari ini kita belajar permodelan fisika menggunakan metode Runge-Kutta. Metode ini sekilas terlihat sedikit rumit dibandingkan dengan cara metode gauss elimination. tetapi setelah dicoba, metode ini tidak begitu sulit.
Pertemuan ke-10 6 November 2019
Pada pertemuan kali ini kita belajar bagaimana cara untuk berpikir dengan benar. metode numerik merupakan salah satu tools untuk membuat kita berpikir lebih baik. Pada kelas hari ini pak DAI menyampaikan pesan bahwa menyelesaikan masalah dimulai dengan mengetahui apa masalahnya terlebih dahulu, bukan hanya diketahui, ditanya, dijawan dan mencocokkan persamaan-persamaan yang ada.Kami diharapkan menjadi sarjana yang mampu merumuskan masalah ddan menyusun solusinya. Sebelum menyelesaikan suatu permaalahan dengan metode numerik, pertama-tama kita perlu memahami permasalahannya terlebih dahulu. Metode numerik sudah tersusun secara terstruktur dan dibukukan. namun karena perkembangan teknologi sangat cepat, metode numerik belum bisa untuk mengikuti perkembangan terhadap metode-metode baru yang ada seperti AI (artificial intelligence). menurut pak Dai, mengetahui masalah bukan hanya diketahui ini dan itu saja kemudian memasukkan kedalam persamaan yang sudah ada. Pekerjaan itu merupakan pekerjaan operator. Sebagai mahasiswa teknik mesin kita harus bisa merumuskan dan menyusun masalah menjadi suatu persamaan bukan hanya menerapkan persamaan-persamaan yang sudah ada.
Pertemuan ke-11 13 November 2019
Pada pertemuan kali ini kita mempelajari beberapa proses pengelolaan data seperti Regresi linier, curve fitting, least square. Lalu kita belajar bagaimana cara menentukan metode tepat untuk membuat suatu grafik dengan pendekatan regresi linier. Kita perlu memahami fenomoena fisiknya terlebih dahulu agar kita bisa memiliki gambaran terhadap grafik yang akan terbentuk. Selain itu, kita juga dapat mengetahui jika ada yang tidak sesuai dengan grafik yang kita buat. Kita juga belajar tentang optimasi. Optimasi merupakan salah satu metode yang digunakan untuk menentukan nilai minimum dan maksimum dari suatu fungsi, mencari mana yang lebih ideal antar nilai minimum atau maksimumnya. Nilai minimum merupakan error dari fungsi itu sendiri. Optimasi tanpa batasan lebih sulit dibandingkan sebelumnya karena terdapat lebih dari satu variabel. contoh ,fungsi f(x,y) akan berada pada titik optimum bila derivasi pertama nilainyadisamakan dengan nol. Dengan demikian bisa dikatakan variabel x dan y berada pada titik stasioner pada x=xo dan y= yo.
Optimasi Air Foil
Dapat dilihat di : Kelompok 14
Pertemuan ke-15 11 Desember 2019
Pada pertemuan ini kami dikelas belajar ANN, Artificial Neural Network Artificial (ANN) atau Jaringan Syaraf Tiruan merupakan sebuah teknik atau pendekatan pengolahan informasi yang terinspirasi oleh cara kerja sistem saraf biologis, khususnya pada sel otak manusia dalam memproses informasi. Elemen kunci dari teknik ini adalah struktur sistem pengolahan informasi yang bersifat unik dan beragam untuk tiap aplikasi. Neural Network terdiri dari sejumlah besar elemen pemrosesan informasi (neuron) yang saling terhubung dan bekerja bersama-sama untuk menyelesaikan sebuah masalah tertentu, yang pada umumnya dalah masalah klasifikasi ataupun prediksi.Dengan step pembuatan Ann adalah:
1. Data Preprocessing
2. Add input layers
3. Random w init
4. Add hidden layers
5. Select optimizer, loss, and performance matrixs
6. compile the model
7. use model .fit to train the model
8. evaluate the model
9. Adjust optimization parameters or model if needed
Dengan memasukan Data yang telah diberikan asdos, didapat kesimpulan Val_accuracy hanya 25 persen saja namun itulah hasil yang terbaik, Dapat dilihat hasil grafik output real = output prediction.