Difference between revisions of "Metnum03-Anbia Maulana"
Anbiamaulana (talk | contribs) (→Example 3.3) |
Anbiamaulana (talk | contribs) (→Pertemuan 5) |
||
Line 674: | Line 674: | ||
Fz = 0 | Fz = 0 | ||
+ | |||
+ | = Pertemuan 6 = | ||
+ | |||
+ | Hari ini Pak dai akan menjelaskan tentang |
Revision as of 12:46, 14 December 2020
Pertemuan Metode Numerik 03
Contents
Pendahuluan
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيْمِ
السَّلاَمُ عَلَيْكُمْ وَرَحْمَةُ اللهِ وَبَرَكَاتُهُ
Nama : Anbia Maulana Pujiantoro
NPM: 1806181842
Pertemuan 1: 9 November 2020
PR Mengenai Pemahaman Metode Numerik
Metode Numerik merupakan mata kuliah di Semester 5. Metode numerik merupakan teknik penyelesaian permsalahan yang diformulasikan secara matematis dengan menggunakan operasi hitungan (aritmatik) yaitu operasi tambah, kurang, kali, dan bagi. Metode ini digunakan karena banyak permasalahan matematis tidak dapat diselesaikan menggunakan metode analitik. Jikapun terdapat penyelesaiannya secara analitik, proses penyelesaiaannya sering kali cukup rumit dan memakan banyak waktu sehingga tidak efisien.
Terdapat keuntungan dan kerugian terkait penggunaan metode numerik. Keuntungan dari metode ini antara lain:
1. Solusi persoalan selalu dapat diperoleh. 2. Dengan bantuan komputer, perhitungan dapat dilakukan dengan cepat serta hasil yang diperoleh dapat dibuat sedekat mungkin dengan nilai sesungguhnya. Tampilan hasil perhitungan dapat disimulasikan.
Tahapan Penyelesaian Menggunakan Metode Numerik
Terdapat beberapa tahapan dalam menyelesaikan suatu permasalahan dengan metode numerik. Tahapan-tahapan tersebut antara lain:
Pemodelan Persoalan dunia nyata dimodelkan ke dalam persamaan matematika. Persamaan matematika yang terbentuk dapat berupa persamaan linier, non-linier, dan sebagainya sesuai dengan persoalan yang dihadapi.
Penyederhanaan Model Model matematika yang dihasilkan dari tahap 1 mungkin saja terlalu kompleks. Semakin kompleks suatu model, semakin rumit penyelesaiaannya, sehingga model perlu disederhanakan.
Seberapa sederhana model yang akan kita buat? tergantung pada permasalahan apa yang hendak pembaca selesaikan. Model yang terlalu sederhana akan tidak cocok digunakan untuk digunakan sebagai pendekatan sistem nyata atau lingkungan yang begitu kompleks. Penyederhanaan dapat berupa asumsi sejumlah variabel yang terlibat tidak signifikan, atau asumsi kondisi reaktor (steady atau non-steady).
Formulasi Numerik Setelah model matematika sederhana diperoleh, tahap selanjutnya adalah memformulasikan model matematika secara numerik. Tahapan ini terdiri atas: + menentukan metode numerik yang akan dipakai bersama-sama dengan analisis galat (error) awal. + menyusun algoritma dari metode numerik yang dipilih.
Sejauh ini yang telah saya pelajari sebelum UTS mencakup 3 materi besar yaitu mencari akar-akar, regresi linier, dan turunan numerik.
1. Mencari Akar-Akar
Persamaan non-linier dapat diartikan sebagai persamaan yang tidak mengandung syarat seperti persamaan linier, sehingga persamaan non-linier dapat merupakan Beberapa metode yang saya pelajari adalah metode pencarian akar menggunakan Closed methods (Bracketing Method) dan Open Methods.
Close method
Metode tertutup disebut juga metode bracketing. Disebut sebagai metode tertutup karena dalam pencarian akar-akar persamaan non-linier dilakukan dalam suatu selang [x,y] merupakan metode untuk mencari akar-akar dengan dan tingkat error untuk mengetahui seberapa besar error saat iteration
Metode yang saya pelajari ada 3 yaitu Graphical Methods, Bisection Methods, dan False-Position Methods.
- Table / graphic method
- Bisection Methods
Metode ini merupakan salah satu jenis metode incremental search method yang menggunakan batas atas dan batas bawah untuk mempersempit area pencarian akar-akar.
- False-Position Methods
Metode ini sangat mirip dengan metode Bisection. Hal yang membedakan metode False-Position dengan Bisection adalah penentuan titik tengah dari batas-batas yang ditentukan. Penentuan titik tengah dari False-Position Method menggunakan persamaan berikut.
Open Method
Metode Open Methods merupakan metode pencarian yang hanya menggunakan 1 titik untuk menemukan akar-akar. Metode ini dapat menggunakan turunan suatu fungsi untuk menentukan titik pengujian baru yang semakin dekat dengan nilai akar-akar yang diinginakn. Metode yang saya pelajari ada 3 yaitu Fixed-Point Iteration, Newton-Rapshon, dan Secant Method
- Fixed-Point Iteration Metode ini disebut juga metode iterasi sederhana, adalah metode yang memisahkan x dengan sebagian x yang lain sehingga diperoleh: x=g(x)
- Newton-Raphson
Metode Newton-Raphson adalah metode pencarian akar suatu fungsi f(x) dengan pendekatan satu titik, dimana fungsi f(x) mempunyai turunan. Metode ini menggunakan pendekatan satu titik sebagai titik awal. Semakin dekat titik awal yang kita pilih dengan akar sebenarnya, maka semakin cepat konvergen ke akarnya.
contoh soal :
Tentukan akar dari persamaan 4x3 – 15x2 + 17x – 6 = 0 menggunakan Metode Newton Raphson. Penyelesaian : f(x) = 4x3 – 15x2 + 17x – 6 f’(x) = 12x2 – 30x + 17
- Secant Method
Metode ini merupakan metode modifikasi Newton-Raphson dimana metode Newton-Raphson tidak digunakan (karena f'(x) sulit ditemukan atau tidak mungkin ditemukan). Persaman untuk metode Secant adalah sebagai berikut
2. Regresi Linier
regresi linear adalah sebuah pendekatan untuk memodelkan hubungan antara variable terikat Y dan satu atau lebih variable bebas yang disebut X. Salah satu kegunaan dari regresi linear adalah untuk melakukan prediksi berdasarkan data-data yang telah dimiliki sebelumnya. Hubungan di antara variable-variabel tersebut disebut sebagai model regresi linear.
Persamaan umum Regresi Linier adalah sebagai berikut:
dimana:
3. Turunan Numerik
Turunan Numerik adalah menentukan hampiran nilai turunan fungsi f yang diberikan dalam bentuk tabel. Terdiri dari 3 penyelesaian untuk permasalahan tertentu
a. Forward difference approximation
b. backward difference approximation
c. central difference approximation
Tugas 1 : 16 November 2020
Untuk Tugas mengenai bagaimana penggunaan OpenModelica berikut saya akan menjelaskan bagaiman applikasi OpenModelica dapat menyelesaikan problem di kehidupan sehari-hari maupun berkaitan dengan mata kuliah yang lainya Pada tugas ini saya mencoba menggunakan open modelica dalam menyelesaikan soal thermal resistance. Berikut ini adalah soal dari thermal resistance beserta hasilnya.
Berikut soalnya
Dengan melakukan coding dengan openmodelica, maka hasil sebagai berikut
Lalu menghasilkan, hasil apabila di compare adalah sesuai dengan pembahasan
Untuk Video tutorial berikut file terlampir (Mohon maaf sedang uploading, file sebesar 340 MB namun upload velocity saya sangat2 lambat, segera setelah sudah diupload)
Disclaimer : Saya mempelajari & soal dari saudara Gandes, namun insyallah saya sudah paham
Pertemuan 2 : 16 November 2020
Hari ini Pak Dai menjelaskan tentang bagaimana membuat syntax sederhana untuk menghasilkan semua nilai Namun karena Openmodelica Error di MAC, maka saya mengerjakan di python
Berikut untuk hasil saya yang dikerjakan
Dimana X = 1, 3, 4, 5, 7, 9, 2, 6, 5,400
Mean = 44.2
Untuk grafik akan saya tambahkan karena saya harus belajar terlebih dahulu pak, besok setelah UTS akan saya input disini
Tugas 2
Assalamualaikum pak dai, mohon maaf berhubung saya menggunakan MACOS, saya melakukan iterasi menggunakan Python dan Visual Code
Dibawah ini merupakan gauss elimination yang saya akan coba eliminasi. Berikut refrensi yang saya pelajari https://www.youtube.com/watch?v=ZDxONtacA_4
Dengan soal sebagai berikut :
Lalu diubah menjadi bentuk
A -> [3, -2, 5, 2]
B ->[ 4 , 5, 8, 1, 4]
C -> [ 1, 1, 2, 1, 5]
D ->[2, 7, 6, 5, 7]
Apabila dilakukan secara manual menghasilkan
Tutorial / Step :
1. Melakukan install pada Terminal menggunakan code Import numpy as py
2. Lalu membuka python
3. Numpy sudah terinstall
Pada aplikasi Python terdapat model untuk menyelesaikan permasalahan aljabar simultan dengan menggunakan metode Gauss Elimination. Berikut ialah model yang saya buat dengan software Visual code:
1. Terlihat bahwa coding seperti ini
2. Melakukan Print (x) 3. Didapatkan hasil sebagai berikut
Dengan kesimpulan bahwa syntax berhasil sama dengan contoh
X(0) = 28,7 X(1) = 2,16 X(2) = -16 X(3) = 6.06
Pertemuan 3
Hari ini Pak Dai memberi tugas untuk membuktikan persamaan berikut
Dengan persamaan
K1 = [ 30, 20, 0, 19.62] ; K2 = [ -20, 30, -10, 29.42] ; k3 = [0, -10, 10, 24.525] ;
Menggunakan syntax sebagai berikut
import numpy as array, zeros
a = array([[30, 20, 0], [-20, 30, -10], [0, -10, 10],float)
b = array ( [19.62,29.42,24.525], float) n = len(b) x = zeros(n,float)
#elimination
for k in range (n-1): for i in range(k+1,n) : if a[i,k] == 0: continue factor = a[k,k] / a[i/k] for j in range(k,n) : a[i,j] = a[k,j] - a[i,j]*factor b [i] = b [k] - b[i]*factor
print[a] print[b] #back subtitution
x[n-1] = b[n-1] / a[n-1, n-1] for i in range (n-2,-1,-1) : sum_ax = 0 for j in range (i+1,n) : sum_ax += a[i,j] * x[j] x[i] = (b[i] - sum_ax) / a[i,i]
print ['The solution of system : '] print [x]
Berikut hasil syntax saya pak, namun seperti komputer saya masih kurang package Python Numpy
Tugas 3
Berikut adalah tugas yang diberikan, saya dapat menyelesaikanya
Persamaan tersebut diselesaikan dengan cara eliminasi Gauss, berikut adalah yang saya modelkan
setelah melakukan melakukan pengecekan dan tidak ada masalah, saya melakukan simulasi untuk menemukan nilai x1,x2, dan x3 dari persamaan matriks tersebut. Setelah melakukan simulasi, saya melakukan plotting untuk melihat hasil yang ditemukan
dapat dilihat bahwa nilai x1 = 7.3575; x2 = 10.0552; x3 = 12.5077, sesuai dengan hasil yang ada di buku Metode Numerik.
Setelah pertemuan ini, pak Dai memberikan PR untuk mengerjakan soal berikut:
Penyelesaian :
1. Mengubah sebuah problem menjadi matrix, lalu dibuat masukan menjadi syntax yang sudah ada sebelumnya, namun kita harus memahami persoalan tersebut sehingga dapat mendapatkan kesimpulan
Menerapkan kondisi batas dan beban
Diketahui:
- Kondisi batas untuk node 1 dan 3 adalah fixed
- External force pada node 4 dan 5
Dengan menerapkan Hukum Hooke, F= k. x, maka dalam persamaan matrix menjadi [F]=[K].[U]. Didapat:
Defleksi
Lalu saya memasukan ke syntax dimana dengan rumus :
Menghasilkan hasil sebagai berikut :
Untuk mendapatkan nilai gaya reaksi
Saya memasukan kedalam syntax :
Dan menghasilkan data sebagai berikut :
Defleksi Total
Menghasilkan :
Didapatkan U2x=-0.00976 inch dan U6x=-0.01209 inch
Pertemuan 4
Pertanyaan no 4
Untuk Jawaban no 8
Untuk Coding pertanyaan 4
- Class
| class="wikitable" |- | style='border-style: none none solid solid;' | Fungsi Utama
class QuizSoal1 parameter Real [:,7] inisiasi = [1, 1, 2, 0, 10e-4, 200e9, 1.00; 2, 2, 3, 0, 10e-4, 200e9, 1.00; 3, 1, 4, 308.66, 10e-4, 200e9, 1.60; 4, 2, 4, 270.00, 10e-4, 200e9, 1.25; 5, 3, 4, 231.34, 10e-4, 200e9, 1.60]; parameter Integer [:,2] node = [1, 2; 2, 3; 1, 4; 2, 4; 3, 4]; parameter Integer y = size(node,1); parameter Integer x = 2*(size(node_load,1)); parameter Integer z = size(Boundary,1); parameter Integer [:] Boundary = {1,3}; parameter Real [:,3] node_load = [1, 0, 0; 2, -1035.28, -3863.70; 3, 0, 0; 4, -1035.28, -3863.70]; parameter Real [2*(size(node_load,1))] load = {0,0,-1035.28,-3863.70,0,0,-1035.28,-3863.70}; Real [y] k;
Real [y,4,4] Ke; Real [y,x,x] Kg; Real [x,x] KgTot; Real [x,x] KgB; Real [x] U; Real [x] R; equation k = {(inisiasi[i,5] * inisiasi[i,6] / inisiasi[i,7]) for i in 1:size(inisiasi,1)};
Ke = StiffnessMatrixElement(inisiasi); Kg = StiffnessMatrixGlobal(node, x, y, Ke); KgTot = SumStiffnessMatrixGlobal(x, y, Kg); KgB = BoundaryStiffnessMatrixGlobal(x, z, KgTot, Boundary); U = GaussJordan(x, KgB, load); R = ReactionForce(x, KgTot, U, load); end QuizSoal1;
|}
Hasil yang didapat sebagai berikut:
Untuk menyelesaikan soal no.8 saya menggunakan coding berikut:
- Class
Fungsi Utama class QuizSoal1 parameter Real [:,9] inisiasi = [1, 1, 2, -0.8, 0, -0.6, 15e-4, 70e9, 2.5; 2, 1, 3, -0.8, -0.6, 0, 15e-4, 70e9, 2.5; 3, 1, 4, -0.8, 0, 0.6, 15e-4, 70e9, 2.5]; parameter Integer [:,2] node = [1, 2; 1, 3; 1, 4]; parameter Integer y = size(node,1); parameter Integer x = 3*(size(node_load,1)); parameter Integer z = size(Boundary,1); parameter Integer [:] Boundary = {2,3,4}; parameter Real [:,4] node_load = [1, 0, -5000, 0; 2, 0, 0, 0; 3, 0, 0, 0; 4, 0, 0, 0]; parameter Real [x] load = {0,-5000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; Real [y] k; Real [y,6,6] Ke; Real [y,x,x] Kg; Real [x,x] KgTot; Real [x,x] KgB; Real [x] U; Real [x] R; equation k = {(inisiasi[i,7] * inisiasi[i,8] / inisiasi[i,9]) for i in 1:y}; Ke = StiffnessMatrixElement(inisiasi); Kg = StiffnessMatrixGlobal(node, x, y, Ke); KgTot = SumStiffnessMatrixGlobal(x, y, Kg); KgB = BoundaryStiffnessMatrixGlobal(x, z, KgTot, Boundary); U = GaussJordan(x, KgB, load); R = ReactionForce(x, KgTot, U, load); end QuizSoal1; |
Pertemuan 5
Fahmi menjelaskan mengenai codingnya dan saya mencoba untuk melakukan simulasi dan mengerjakan syntax2 tertentu
- looping menggunakan fungsi for. - bentuk array. - fungsi if. - floating number dan bagaimana cara menghilangkannya. - protected variable. - specialization class dan function.
Menggunakan gauss jordan
Menghasilkan
tugas 5
1. Melakukan inisiasi syntax
2. Melakukan programing dengan Matriks stiffness Global
3. Didapatkan hasil sebagai berikut
Example 3.3
Pak dai memberikan contoh soal yang harus diselesaikan menggunakan ilmu yang diberika oleh fahmi
menggunakan coding sebagai berikut
|- | style='border-style: none none solid solid;' | Fungsi Utama
class QuizSoal1 //inisiasi = [ elemen#, dX, dY, dZ, A, E] parameter Real [:,6] inisiasi = [1, 6, 0, -3, 1.56, 10.6e6; //isi sesuai data 2, 0, 0, -6, 1.56, 10.6e6; 3, 0, 6, -3, 1.56, 10.6e6; 4, -6, 0, -3, 1.56, 10.6e6; 5, -6, 6, 0, 1.56, 10.6e6; 6, 0, 6, 3, 1.56, 10.6e6];
//node = [ i, j] parameter Integer [size(inisiasi,1),2] node = [1, 2; //isi sesuai data 1, 3; 1, 4; 2, 3; 2, 4; 3, 4];
//jumlah node parameter Integer n = 4; //isi sesuai data
//titik node boundary xyz parameter Integer [:] Boundary_xyz = {1}; //isi sesuai data
//titik node boundary xy parameter Integer [:] Boundary_xy = {4}; //isi sesuai data
//titik node boundary xz parameter Integer [:] Boundary_xz = {0}; //isi sesuai data
//titik node boundary yz parameter Integer [:] Boundary_yz = {0}; //isi sesuai data
//titik node boundary x parameter Integer [:] Boundary_x = {3}; //isi sesuai data
//titik node boundary y parameter Integer [:] Boundary_y = {0}; //isi sesuai data
//titik node boundary z parameter Integer [:] Boundary_z = {0}; //isi sesuai data //load = [ F1x, F1y, F1z,..., Fnx, Fny, Fnz] parameter Real [3*n] load = {0, 0, 0, //isi sesuai data 0, -200, 0, 0, 0, 0, 0, 0, 0};
Real [size(inisiasi,1)] L; Real [size(inisiasi,1)] k; Real [size(inisiasi,1),6,6] Ke; Real [size(inisiasi,1),3*n,3*n] Kg; Real [3*n,3*n] KgTot; Real [3*n,3*n] KgB; Real [3*n] U; Real [3*n] R;
//check force Real [3] F;
equation L = {(sqrt(inisiasi[i,2]^2 + inisiasi[i,3]^2 + inisiasi[i,4]^2)) for i in 1:size(inisiasi,1)};
k = {(inisiasi[i,5] * inisiasi[i,6] / L[i]) for i in 1:size(inisiasi,1)};
Ke = StiffnessMatrixElement(inisiasi);
Kg = StiffnessMatrixGlobal(n, node, Ke);
KgTot = SumStiffnessMatrixGlobal(Kg);
KgB = BoundaryStiffnessMatrixGlobal(KgTot, Boundary_xyz, Boundary_xy, Boundary_xz, Boundary_yz, Boundary_x, Boundary_y, Boundary_z);
U = GaussJordan(KgB, load);
R = ReactionForce(KgTot, U, load);
F = CheckForce(load,R);
end QuizSoal1;
Menghasilkan
Matrix Displacement dimana U = (U1x, U2x, ...)
Matrix gaya reaksi
Menghasilkan F = 0
Fx = 0
Fy = 0
Fz = 0
Pertemuan 6
Hari ini Pak dai akan menjelaskan tentang