Difference between revisions of "Michael Ahli"

From ccitonlinewiki
Jump to: navigation, search
 
Line 640: Line 640:
 
Berikut pula telah saya sajikan dalam bentuk Power Point Presentation :
 
Berikut pula telah saya sajikan dalam bentuk Power Point Presentation :
  
https://mega.nz/#!sz41UA5Q!axZlWYlnKbj805B6ngE_EeyGbHdBlsom_o76RvAnSVc
+
https://mega.nz/#!MuRnCQBK!j55OAA6_Lm4UkAJxWNXyT0865LOJ2_iucV_nSbZZMMc
  
  
berikut code yang saya gunakksn:
+
 
 +
berikut code yang saya gunakan:
  
  

Latest revision as of 19:23, 29 May 2019

Resume kelas Metode Numerik

6 Februari 2018

Kelas Metode Numerik dibawakan oleh Dr. Ahmad Indra yang akrab disapai aki DAI. Tujuan dari perkuliahan ini adalah untuk :

1. Dapat memahami konsep / prinsip & mampu menerapkannya.

2. Menjadi orang yang lebih mengenal mengenal siapa dirinya.


Kala itu di kelas Metode Numerik 2019 ditantang menjadi pribadi yang ber akal. Persoalannya adalah : Jika A = (x^2-1)/(x-1) dan x=1 maka berapakah A?


Salah seorang mahasiwa menjawab bahwa persoalan tersebut tidak dapat diselesaikan begitu saja karena titik x=1 tidak ada pada fungsi A sehingga harus didekati menggunakan metode limit.


Pemikiran yang mendalam diperlukan karena dalam metode numerik mahasiswa akan mempelajari algoritma (flowchart, pemrograman, metode iterative), penyelesaian persamaan, diferensiasi dan integral, optimasi dan studi kasus.


Sebagai penutup, aki DAI berpesan bahwa “akal adalah tali yang mengikat pikiran kita agar tetap pada koridor yang manusiawi.”

(Ditulis oleh : Michael Ahli/1706042270)

Naval Architecture and Marine Engineering



Programming menggunakan bahasa Phyton


Berikut merupakan Syntax yang saya gunakan dengan bahasa Phyton untuk menyelesaikan persamaan linier

ax + b = c

px + q =r



import numpy as np

print("Solusi Persamaan Linier Dua Variabel")

print("ax + by = c")

print("px + qy = r")

print("Silahkan input nilai")

a = int(input("input value of a :"))

b = int(input("input value of b :"))

c = int(input("input value of c :"))

p = int(input("input value of p :"))

q = int(input("input value of q :"))

r = int(input("input value of r :"))

x = np.array([[a,b],[p,q]])

y = np.array([c,r])

z = np.linalg.solve(x,y)



Menentukan Break Even Point Kost Menggunakan Phyton


Berikut video yang telah saya upload ke youtube :


https://youtu.be/OvKy9Dtomz8


Berikut syntaxnya :


import numpy as np

a=np.array([[3,1,5],[1,1,1],[1,5,3]],float)

b =np.array ([[215],[65], [205]], float)

c=np.array([[3,1,5,215],[1,1,1,65],[1,5,3,205]],float)

print ('Panjang (X1), Lebar (X2) dan Jumlah Kamar Kost (X3) Didapat dari Matrix :')

print (c)

n=len(b)

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]

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]
   panjang = x[0]
   lebar = x[1]
   kamar = x[2]

harga = int(input("Masukkan Harga Bangunan per Meter Kuadrat : Rp. "))

print("")

hargakos = panjang * lebar * harga

print("Rumah kostan senilai Rp. " , hargakos)

print("")

sewa = int(input("Masukkan Harga Sewa Kost per Bulan : Rp. "))

print("")

perawatan = int(input("Masukkan Estimasi Biaya Perawatan Kost : Rp. "))

print("")

cuan = hargakos / ((sewa - perawatan) * x[2] )

cuansetahun = cuan/12

print("Anda Akan Balik Modal Setelah Menunggu Selama ", round(cuan),"Bulan atau Selama", round(cuansetahun), "Tahun" )


FINITE ELEMENT METHOD

Metode menghitung kekuatan struktur dengan permodelan pegas


https://youtu.be/4jx9QytiEjE


import numpy as np

print ("Berikut merupakan aplikasi menghitung Struktur vertikal dengan spesifikasi :")

print ("1. Terdiri dari tiga komponen struktur yang tersambung vertikal")

print ("2. Material berbeda")

print ("3. Dimensi berbeda")

print ("4. Kedua ujung tetap")

print ("5. Gaya yang bekerja pada struktur harus diketahui")


A1 = int(input("Masukkan Luas Permukaan Bidang Sambung Material 1 :"))

L1 = int(input("Masukkan Panjang Material 1 :"))

E1 = int(input("Masukkan Modulus Young Material 1 :"))

k1 = A1*E1/L1

print ("k1 =", k1)


A2 = int(input("Masukkan Luas Permukaan Bidang Sambung Material 2 :"))

L2 = int(input("Masukkan Panjang Material 2 :"))

E2 = int(input("Masukkan Modulus Young Material 2 :"))

k2 = A2*E2/L2

print ("k2 =", k2)


A3 = int(input("Masukkan Luas Permukaan Bidang Sambung Material 3 :"))

L3 = int(input("Masukkan Panjang Material 3 :"))

E3 = int(input("Masukkan Modulus Young Material 3 :"))

k3 = A3*E3/L3

print ("k3 =", k3)


F2 = int(input("Masukkan Gaya di sebelah kiri (vektor) :"))

F3 = int(input("Masukkan Gaya di sebelah kanan (vektor) :"))


ka = k1+k2

kb = k2+k3


a = np.array([[ka,-k2],[-k2,kb]],float)

b = np.array([F2,F3],float)

c = np.array([[ka,-k2],[-k2,kb],[F2,F3]],float)

n = len(b)

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]

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]


x2 = x[0]

x3 = x[1]


F1 = x2*(-k1)

F4 = x3*(-k3)


print ("Kalkulasi deformasi antara material 1 dan 2 sebesar :", x2)

print ("Kalkulasi deformasi antara material 2 dan 3 sebesar :", x3)

print ("Gaya pada ujung kiri struktur sebesar :", F1)

print ("Gaya pada ujung kanan struktur sebesar :", F4)


FINITE ELEMENT METHOD 2 MATERIAL DENGAN BATAS DEFLEKSI


import numpy as np

N = 2

y = N+1

K = np.zeros((y,y),float)

k_peg = np.zeros(N)

E = np.zeros(N)

L = np.zeros(N)

A = np.zeros(N)

for i in range (0,N):

   print("Input luas material ", i+1," ?")
   A[i]=eval(input())
   print("Input nilai Modulus Young material ", i+1," ?")
   E[i]=eval(input())
   print("Input panjang material ", i+1," ?")
   L[i]=eval(input())
  k_peg[i] = float(A[i] * E[i]/L[i])
   print("Nilai konstanta pegas ke - ", i+1, "adalah ",k_peg[i])


print("Berapa gap ke fixed structure")

De=eval(input())


K[0,0] = k_peg[0]


K[N,N] = k_peg[N-1]


j_1 = 0

for i_1 in range (0,N):

   j_1 += 1
   K[i_1,j_1] =- (k_peg[i_1])


i_2 = 0

for j_2 in range (0,N):

   i_2 += 1
   K[i_2,j_2] =- (k_peg[j_2])


j_3 = 0

for i_3 in range(1,N):

   j_3 += 1
   K[i_3,j_3]= k_peg[i_3]+k_peg[i_3 - 1]

print("Matriks kekakuan global sisem pegas adalah : ")

print("")

print (K)


gaya = eval(input("Input besaran gaya? "))



A = K[1:y , 1:y]


n = len(A)


B = np.zeros((n,1),float)

B[0] = gaya

B[1] = 0



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:n] = A[i, k:n] - lam*A[k, k:n]


           B[i]=B[i] - lam*B[k]


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])


if (U[n-1]>De):


   print("Defleksi maksimum!")

else:

   print("Defleksi senilai : ",U[n-1])c


ELIMINASI GAUSS JORDAN


import numpy as np #memasukan module numpy kedalam phyton

from numpy import array #dari module numpy mengimport array secara spesifik



A = np.array([[4,-2,1],[-2,4,-2],[1,-2,4]],float) #membuat matrix A 3x3 dengan nilai yang dimasukan disamping dengan tipe data float


print(A,"\n") #memunculkan matrix A


B = np.array([11,-16,17],float) #Membuat Matriks B 1x3 dengan nilai seperti disamping dengan tipe data float


print("Matriks B adalah","\n",B)#memunculkan matrix B


n = len(B) # n adalah panjang dari matrix B


print ('n adalah ' + str(n))#memunculkan n adalah panjang dari matrix B

x = np.zeros((3),float) #membuat matrix berisi nol dengan ukuran 3

for k in range (0,n-1): #menentukan baris yang ingin dijadikan pivot

   for i in  range (k+1,n): #baris - baris yang ada di bawah pivot
       if A[i,k] != 0.0 : #artinya jika pada matrix a baris ke - i pada data yang ke - k nilainya tidak sama dengan 0, berarti perintah yang 

selanjutnya akan dijalankan

           lam = A[i,k]/A[k,k] #lamda untuk mengalikan pivot
           A[i, k:n] = A[i, k:n] - lam*A[k, k:n] #baris di bawah pivot akan dikurangi dengan pivot yang sudah dikali dengan lamda
           B[i]=B[i]-lam*B[k] #pengurangan baris di bawah pivot juga dilakukan pada matrix b 
           

print(A) #print matrix A

for k in range (n-1,-1,-1): #nilai k dalam range n-1 sampai -1 dengan interval -1, berarti mencari nilai x dari baris yang paling bawah

   x[k]=(B[k]-np.dot(A[k,k+1:n], x[k+1:n]))/A[k,k] #data ke - k pada matrix b dikurang dengan hasil perkalian dot matrix a baris ke - k dengan matrix 

x dan semuanya akan dibagi dengan matrix a baris ke - k data ke - k


   print ("nilai X", str(k),"=", x[k]) #memunculkan hasil dari x untuk k yang masuk dalam range
   


APLIKASI TRUSS


import numpy as np


A1 = eval(input("Berapa nilai luas penampang elemen 1: "))

E1 = eval(input("Berapa nilai modulus young elemen 1 : "))

L1 = eval(input("Berapa panjang elemen 1 : "))

theta1 = eval(input("Berapa sudut theta elemen 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 elemen 2: "))

E2 = eval(input("Berapa nilai modulus young elemen 2 : "))

L2 = eval(input("Berapa panjang elemen 2 : "))

theta2 = eval(input("Berapa sudut theta elemen 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)


  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)



Optimasi Struktur


Berikut saya telah sajikan dalam bentuk video:

https://youtu.be/0uzmtEjdH24

Berikut pula telah saya sajikan dalam bentuk Power Point Presentation :

https://mega.nz/#!MuRnCQBK!j55OAA6_Lm4UkAJxWNXyT0865LOJ2_iucV_nSbZZMMc


berikut code yang saya gunakan:


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

def search(f,a,b,tol=1.0e-9):

       nIter = int(math.ceil(-2.078087*math.lo

g(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 tinggi komponen vertikal T Stiffner")

b1 = eval(input("Nilai lebar tampak bawah :"))

b2 = eval(input("Nilai lebar tampak atas :"))

H = eval(input("Nilai tinggi T stiffner :"))

def f(y):

   A1 = b1*y
   A2 = b2*(H-y)
   I1 = 1/12*b1*y**3
   I2 = 1/12*b2*(H-y)**3
   d1 = 1/2*y
   d2 = (1/2*(H-y))+y
   dc = H-((A1*d1)+(A2*d2))/(A1+A2)
   Itot = (I1+(A1*(dc-d1)**2)+I2+(A2*(dc-d2)**2))
   Z = Itot/dc
   return Z

yStart = 0.0 # Starting value of y

h = 0.01 # Size of first step used in bracketing

a,b = bracket(f,yStart,h)

yOpt,fOpt = search(f,a,b)

B = H-yOpt

print("Optimal tinggi komponen vertikal =",B)

print("Sectional Modulus mula mula =",f(H))

print("Optimal Sectional modulus =",fOpt)

D = eval(input("D="))

print(f(D))

A = fOpt/f(H)*100

print("Efisiensi yang didapat sebesar =",A,"%")