Fadhil Azharrisman
Metoda Numerik, Merupakan Cabang ilmu yang mempelajari metode atau langkah-langkah yang berkaitan dengan pemodelan matematika. tentu saja untuk mempelajari metode numerik dibutuhkan suatu bekal yang perlu disiapkan yaitu cabang ilmu kalkulus, karena dalam metoda numerik kita membutuhkan pendekatan-pendekatan yang didasari oleh ilmu kalkulus, sehingga oada pengerjaannya kita dapat meminimalisir terjadinya suatu kesalahan yang akan berakibat pada kesalahan dalam mengambil kesimpulan. Syarat dalam menganbil mata kuliah Metoda numerik tidak hanya bedasar pada mahasiswa Fakultas Teknik universitas Indonesia, akan tetapi hal yang mendasar yaitu mahasiswa ini haruslah mahasiswa yang berakal. Berakal yang dimaksud dalam konteks ini yaitu memiliki akal, dimana akal merupakan tali yang mengikat kita sehingga kita tidak lepas dari kodratnya manusia.contoh dari penerapan berakal yaitu penerapan ilmu matematika, dimana matematika dapan menjadi penolong dan dapat menyesatkan. Adapun tujuan dari pembelajaran Metoda numerik adalah mahasiswa dapat memahami konsep-konsep serta prinsip dalam menyelesaikan suatu masalah denhgan metoda numerik. serta mengaplikasikan ilmu yang diperoleh selama proses pembelajaran dalam konteks metoda numerik. selain tujuan yang tertulis di atas, adapun tujuan yang ingin ditanamkan oleh Aki DAI yaitu mahasiswa dapat mengenal siapa dirinya sendiri sehingga mahasiswa dapat lebih optimal dalam menyelesaikan masalah.
Pada pertemuan kedua, aki dai menjelaskan mengenai menyelsaikan masalah dengan menggunakan sebuah program serta menjelaskan tentang bagaimana kita membuat flowchart. pada metode numerik kita dapat menyelesaikan beberapa masalah teknik dengan urutan yang telah diajarkan oleh Aki Dai, yaitu: 1. Masalah teknik 2. Model Matematika 3. Metoda numerik 4. Algoritma (flow Chart) 5. program komputer 6. hasil Numerk 7. Visual 8. Intepretasi 9. Solusi Engineering
Masalah teknik terdapat banyak contoh masalah keteknikan dalam kehidupan sehari-hari, misalnya bagaimana seorang arsitek kapal menentukan jenis lambung kapal yang sesuai, atau memperhitungkan pressure drop, yaitu kerugian aliran dari pipa, agar aliran di dalam pipa dapat mengalir maka kita harus memperhitungkan daya yang sesuai yang dihasilkan oleh mesin pompa sehingga sesuai dengan pressure dropnya, karena jika semakin besar debit air yang dibutuhkan maka kita membutuhkan daya pompa yang besar pula. Dalam aplikasinya tahap menyelesaikan masalah dapat dilakukan melalui beberapa metode: 1. metode teoritis 2. metode Percobaan 3. metode komputasi
Menyelesaikan masalah dengan metode komputasi dilakukan apabila sudah tidak adanya teori yang dapat mendukung penyelesaian dan apabila kita melakukan percobaan biaya yang dikeluarkan relatif mahal. Metode numerik dilakukan apabila kita sudah tidak dapat menyelesaikan permodelan matematika. Adapun langkah-langkah untuk menyelsaikan masalah disebut Algoritma, merupakan instruksi yang akan dijalankan oleh komputer karena pada komputer hanya dimengerti bahasa biner atau angka, komputer hanya mengerti pertambahan dan pengurangan. adapun Python dan C+ merupakan bahasa pemrograman.
Algoritma disusun pada program, setelah kita dapat mensimulasikan program tersebut simulasi akan menjalankan program tersebut yang akan menghasilkan numerik lalu akan menghasilkan Visual, setelah diperoleh hasil kita akan mengintrepretasikan hasil tersebut setelah kita melakukan cek dari programnya karena menyelesaikan masalah dengan komputer sama seperti percobaan
print('PR METNUM') print('Misalkan ada persamaan linear dua variabel \n ax+by=c \n px+qy=r') a=float(input('nilai a=')) b=float(input('nilai b=')) c=float(input('nilai c=')) p=float(input('nilai p=')) q=float(input('nilai q=')) r=float(input('nilai r='))
if b==q:
m=a-p n=c-r x=n/m y=(c-(a*x))/b print('nilai x=',x,'nilai y=',y)
elif a==0:
y=c/b x=(r-q*(y))/p print('nilai x=',x,'nilai y=',y)
elif p==0:
y=r/q x=(c-b*(y))/a print('nilaix=',x,'nilai y=',y)
elif b==0:
x=c/a y=(r-p*(x))/q print('nilaix=',x,'nilai y=',y)
elif q==0:
x=r/p y=(c-a*(x))/b print('nilaix=',x,'nilai y=',y)
elif b!=q:
i=(a*q) j=(b*q) k=(c*q) ii=(p*b) jj=(q*b) kk=(r*b) x=(k-kk)/(i-ii) y=(c-(b*x))/a print('nilai x=',x,'nilai y=',y)
input()
tugas video
https://www.youtube.com/watch?v=sv0N8S-rRkw&feature=youtu.be A=np.array([[5,3,2],[3,2,5],[3,5,2]], float) print (A)
B=np.array([14,10,12], float) print (B)
n=len (B) print('matriks=', n) x=np.zeros((3),float) 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]
print (x)
for k in range (n-1,-1,-1):
x[k]=(B[k]-np.dot(A[k,k+1:n], x[k+1:n]))/A[k,k] print('X', str (k), '=', x[k])
13/03/2019 tugas FEM metode Numerik
import numpy as np from numpy import array
- 1. Menentukan Banyaknya pegas
N= eval(input('jumlah pegas pada sistem ini?'))
- nilai dari nodenya
ni=N+1
- nilai dari K
K= np.zeros((ni,ni),float)
- nilai K sama dengan jumlah nodenya
- 2. Mendefinisikan konstanta pegas
n_k=np.zeros(N)
for i in range (0,N):
print('nilai konstanta pegas yang ke-',i+1,' ?') n_k[i]= eval(input())
- 3.Membuat matriks global kekauannya
K[0,0]=n_k[0] K[N,N]=n_k[N-1]
- 4.Membuat Pola Matriksnya
- Pola 1
j_1=0 for i_1 in range (0,N):
j_1+=1 K[i_1,j_1]=-(n_k[i_1])
- Pola 2
i_2=0 for j_2 in range (0,N):
i_2+=1 K[i_2,j_2]=-(n_k[j_2])
- Pola 3
j_3=0 for i_3 in range (1,N):
j_3+=1 K[i_3,j_3]=n_k[i_3]+n_k[i_3-1]
print('matriks kekakuan global sistem pegas adalah:','\n',K)
- 5. Menentukan gaya yang bekerja
Fn= eval(input('berapakah gaya yang berkerja?'))
A=K[1:ni,1:ni]
n=len(A) #jumlah dari baris dan jumlah dari kolom
B=np.zeros(n, float) B[n-1]=Fn
- melakukan elminasi gauss
for k in range (0,n-1):
for i in range (k+1,n): if A[i,k] != 0.0 : #perintah jika sebuah baris yang akan dieliminasi, ada bagiannya yang tidak 0 maka akan di substract dengan pivot 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]
print('matrix A:','\n',A)
- back subt
U= np.zeros(n,float) for m in range (n-1, -1, -1):
U[m]=(B[m]-np.dot(A[m, m+1:n], U[m+1:n]))/A[m,m] print ('nilai U', m+2,'=',U[m])
- Menentukan Gaya reaksinya
F=-n_k[0]*U[0] print ('maka nilai gaya reaksinya adalah',F)
19 Maret 2019 pada pertemuan ini kita akan membahas bagaimana jika kita mendefine kalo misalnya ada x dan y, bedanya kalo kemaren pegas kalo ada dua sumbu, kalo sekarang misalnya pada batang, jadi sekarang ada 2 sumbu.
sebelum membuat algoritma pada piton kita harus memahami konsep dari finite elemen analisis dan statika struktur, kalo defleksi gaya yang bekerja pada dua dimensi, sedangkan kalo dua dimensi akan ada 2 gaya atau dua dimensi. kita mengunakan metode finite elemen yaitu membagi suatu bidang menjadi elemen elemen yang lebih kecil, kenapa kita harus membagi menjadi bagian yang lebih kecil, yaitu agar dapat diselesaikan dengan metode komputerisasi, kalo pegas dia akan mengalami defleksi adapun rumus daria pegas yaitu, F=kd yang mempengaruhi pegas memanjang dan memendek yaitu nilai k nya, jika kasus suatu kayu memiliki besar diameter memiliki diameter lebih besar maka akan memiliki kekuatan yang lebih besar. sehingga diperoleh persamaann K= AxE/L.
pada finite element kita akan mengenal istilah lokan dan global, istilah tersebut ditentukan untuk mengidentifikasikan situasinya. keseimbangan gaya sangat dibutuhkan dalam menyelesaikan masalah menggunakan FEA, untuk kasus kedua ini yaitu menggunakan dua elemen, kita menggunakan matriks untuk menentukan nilai k nya.
jadi intinya hanya ada 3 prosendur,
1. kesetimbangan gaya (displacement bergantung pada arah gaya) 2. Membuat pesamaan matematikannya, untuk nodal pada element satu 3. membuat matriks dari elemen satu dan elemen 2, lalu matriks di super posisi
*Langkah-langkah jelas ada dibukunya.
kuncinya buat dulu yang K elemen yang ada sin cos dan lain lai, lalu tulis sebagai array, lalu kalian bangun satu satu.
Tugas Eliminasi Gauss
import numpy as np from numpy import array
- perintah diatas merupakan perintah untuk mengidentifikasikan bahwa perintah ini merupakan perintah matriks,melalui Library Python
A=np.array ([[4,-2,1],[-2,4,-2],[1,-2,4]],float)
print (A,'\n')
- perintah diatas merupakan perintah untuk mengidentifikasikan nilai dari matriksnya,serta menuliskan matriks 3x3
B=np.array ([11,-16,17],float) print ('matriks B adalah','\n',B)
- perintah diatas merupakan perintah untuk mengidentifikasikan nilai dari matriks B
n=len(B)
- diatas merupakan mengidentifikasikan ukuran matriks
print('n adalah' + str(n)) x=np.zeros((3),float) for k in range (0,n-1):
for i in range (k+1,n): lam = A[i,k]/A[k,k] A[i, k:n] = A [i,k:n] - lam*A[k,k:n] B[i]=B[i] - lam*B[k]
print (A)
- perintah diatas merupakan perintah untuk mengeliminasi matriks yang sesuai dengan jangkauan yang telah ditentukan
for k in range (n-1,-1,-1):
x[k]=(B[k]-np.dot(A[k,k+1:n], x[k+1:n]))/A[k,k]
print ("Nilai X",str(k), '=' , x[k])
- perintah diatas merupakan perintah untuk mencari nilai x1, x2 dan x3
TUGAS ELEMEN TRUSS
import numpy as np
A1 = eval(input("Berapa nilai luas untuk penampang elemen ke-1? : ")) E1 = eval(input("Berapa nilai modulus young untuk elemen ke-1 ?: ")) L1 = eval(input("Berapa panjang untuk elemen ke-1? : ")) theta1 = eval(input("Berapa sudut theta untuk elemen ke-1 : ")) theta1 = theta1 * np.pi/180
k1 = A1 * E1 / L1 ke1 = np.array([[k1,-k1],[-k1,k1]],float)
R1 = np.array([[np.cos(theta1),np.sin(theta1),0,0],[0,0,np.cos(theta1),np.sin(theta1)]],float) R_T1 = np.zeros((4,2),float)
for i in range (0,2):
R_T1[0:4,i] = R1[i,0:4]
K_e_1 = np.dot(R_T1,(np.dot(ke1,R1)))
print(K_e_1) A2 = eval(input("Berapa nilai luas penampang untuk elemen ke-2? : ")) E2 = eval(input("Berapa nilai modulus young untuk elemen ke-2? : ")) L2 = eval(input("Berapa panjang untuk elemen ke-2? : ")) theta2 = eval(input("Berapa sudut untuk theta elemen ke-2? : ")) theta2 = theta2 * np.pi/180
k2 = A2 * E2 / L2 ke2 = np.array([[k2,-k2],[-k2,k2]],float) R2 = np.array([[np.cos(theta2),np.sin(theta2),0,0],[0,0,np.cos(theta2),np.sin(theta2)]],float) R_T2 = np.zeros((4,2),float)
for i in range (0,2):
R_T2[0:4,i] = R2[i,0:4]
K_e_2 = np.dot(R_T2,(np.dot(ke2,R2))) print(K_e_2) K_s_1 = np.zeros((6,6),float)
i_1 = 0 j_1 = 0
for i in range(0,6):
if i == 2 or i == 3: K_s_1[i]=np.zeros(6,float) else: for j in range (0,6): if j==2 or j==3: K_s_1[i,j] = 0
else : K_s_1[i,j] = K_e_1[i_1,j_1] j_1+=1 i_1+=1 j_1 =0
print(K_s_1)
- matriks super posisi K elemen 2
K_s_2 = np.zeros((6,6),float)
i_2 = 0 j_2 = 0
for i in range(0,6):
if i == 0 or i == 1: K_s_2[i]=np.zeros(6,float) else: for j in range (0,6): if j==0 or j==1: K_s_2[i,j] = 0
else : K_s_2[i,j] = K_e_2[i_2,j_2] j_2+=1
i_2 +=1 j_2 = 0
print(K_s_2)
Khasil = K_s_1 + K_s_2 print(Khasil)
TUGAS UAS METODA NUMERIK
import math def bracket (f,x1,h):
c = 1.618033989 f1 = f(x1) x2 = x1 + h f2 = f(x2) if f2 > f1: h = -h x2 = x1 + h f2 = f(x2) if f2 > f1: return x2,x1-h for i in range (100): h = c*h x3 = x2 + h f3 = f(x3) if f3 > f2: return x1,x3 x1 = x2 x2 = x3 f1 = f2 f2 = f3 print ("Bracket did not find a minimum")
def search(f,a,b,tol=1.0e-9):
nIter = int(math.ceil(-2.078087*math.log(tol/abs(b-a)))) R = 0.618033989 C = 1.0 - R x1 = R*a + C*b x2 = C*a + R*b f1 = f(x1) f2 = f(x2) for i in range(nIter): if f1 > f2: a = x1 x1 = x2 f1 = f2 x2 = C*a + R*b f2 = f(x2) else: b = x2 x2 = x1 f2 = f1 x1 = R*a + C*b f1 = f(x1) if f1 < f2: return x1,f1 else: return x2,f2
print("Aplikasi Optimasi Section Modulus L Stiffener") print("Kondisi Terikat : lebas alas > lebar atas > lebar tengah") b1 = eval(input("Nilai lebar bangun alas:")) b3 = eval(input("Nilai lebar bangun atas:")) b2 = eval(input("Nilai lebar bangun tengah:")) H = eval(input("Nilai tinggi L Stiffener:")) def f(x):
A1 = b1*(H-x)/2 A2 = b2*x A3 = b3*(H-x)/2 d1 = 1/2*(H-x)/2 d2 = 1/2*x+(H-x)/2 d3 = 3/4*(H-x)+x I1 = 1/12*b1*((H-x)/2)**3 I2 = 1/12*b2*x**3 I3 = 1/12*b3*((H-x)/2)**3 dc = H -(d1*A1+d2*A2+d3*A3)/(A1+A2+A3) I = I1-A1*(d1-dc)**2+I2-A2*(d2-dc)**2+I3-A3*(d3-dc)**2 Z = I/dc return Z
xStart = 0.0 h = 1.0 x1,x2 = bracket(f,xStart,h) y,fMin = search(f,x1,x2) print("sectional area awal",f(H)) A = -fMin/f(H)*100 print("efisiensi",A,"%") input("\nPress return to exit")
UNTUK PENJELASAN ADA PADA LINK:
https://youtu.be/XN5OuVyzlSA
LINK Power Point:
https://drive.google.com/file/d/1Tva6ONeUiTuLcFKDtb5Scl2VprQRCvGZ/view?usp=sharing
oleh: Fadhil Azharrisman