Difference between revisions of "Dwi Refarianto Nugroho"

From ccitonlinewiki
Jump to: navigation, search
(PERTEMUAN KEEMPAT)
(TUGAS UAS METNUM)
 
(16 intermediate revisions by 2 users not shown)
Line 20: Line 20:
 
Teknik Perkapalan
 
Teknik Perkapalan
  
 +
 +
== TUGAS METNUM ==
 +
 +
https://youtu.be/S906r2jHlss
  
  
Line 81: Line 85:
  
 
== PERTEMUAN KEEMPAT ==
 
== PERTEMUAN KEEMPAT ==
pada pertemua keempat, kita mempelajari python untuk menyelesaikan persamaan gauss-jordan yang berbentuk matriks.
+
pada pertemua keempat, kita mempelajari python untuk menyelesaikan persamaan gauss-jordan yang berbentuk matriks. kita belajar berbagai perintah di python seperti np. array, np zeros, float, dan lain-lain.
  
 
+
== python ==
== Headline text ==
 
 
import numpy as np
 
import numpy as np
  
Line 96: Line 99:
  
 
#--mendefinisikan ukuran matrix
 
#--mendefinisikan ukuran matrix
 +
 +
 +
 +
== TUGAS METNUM ==
 +
 +
[LINK NYA DIBAWAH]
 +
 +
[https://youtu.be/S906r2jHlss]
 +
 +
 +
 +
== TUGAS METNUM FINITE ELEMENT METHOD ==
 +
 +
import numpy as np
 +
from numpy import array
 +
 +
print("Dibuat oleh Dwi Refarianto Nugroho_1706042024")
 +
print("")
 +
 +
#1. Menentukan jumlah pegas
 +
N= eval(input('berapa jumlah pegas yang ada pada sistem ini?'))
 +
 +
#nilai dari node
 +
ni=N+1
 +
#nilai K
 +
K= np.zeros((ni,ni),float)
 +
#nilai K sama dengan jumlah node nya
 +
 +
#2. Mendefinisikan konstanta pegas
 +
n_k=np.zeros(N)
 +
 +
for i in range (0,N):
 +
    print('berapakah nilai konstanta pegas yang ke- pada',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 Matriks
 +
 +
#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 berkerja
 +
Fn= eval(input('berapakah gaya yang berkerja?'))
 +
 +
A=K[1:ni,1:ni]
 +
       
 +
 +
n=len(A)    #number of rows and colomn, due too the matrix that is square matrix
 +
 +
B=np.zeros(n, float)
 +
B[n-1]=Fn
 +
 +
 +
#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 di eliminasi, 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])
 +
 +
# Determine the reaction force
 +
F=-n_k[0]*U[0]
 +
print ('maka nilai gaya reaksinya adalah',F)
 +
 +
 +
== TUGAS UAS METNUM ==
 +
 +
https://youtu.be/1y2dC9uV8nY
 +
 +
[https://drive.google.com/file/d/1jLZW1S9lB8sn1y3MilvFS5uXveTxfEFH/view?usp=sharing PPT UAS Metnum]
 +
 +
[https://drive.google.com/file/d/1l4TDW69jwe1bC4oq5DZg_8tNRGYkg2OQ/view?usp=sharing Python UAS Metnum]
 +
 +
== Coding UAS Metnum ==
 +
 +
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 di 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("Aplkasi Otimasi Section Modulus L Stiffner")
 +
print("Kondisi Terikat : lebar 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 T stiffner :"))
 +
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("optimal sectional area =",-fMin)
 +
print("sectional area awal" , f(H))
 +
A = -fMin/f(H)*100
 +
print ("efisiensi",A,"%")
 +
input ("\nPress return to exit")

Latest revision as of 13:06, 29 May 2019

PERTEMUAN PERTAMA

Assalamualaikum Wr. WB.

Pada saat perkuliahan pertemuan pertama Metode Numerik bersama Bapak Dr. Ir. Ahmad Indra Siswantara (yang memiliki sapaan Aki DAI) dan Bapak Dr. Gunawan S.T., M.T dijelaskan pertama adalah tujuan perkuliahan Metode Numerik yaitu

1. Memahami konsep/prinsip Metode Numerik dan mampu menerapkannya 2. Menjadi orang yang lebih mengenal siapa dirinya sendiri Selain itu di Metode Numerik kita mempelajari tentang 1. Algoritma, Flowchart, Pemrogaman, Metode Iterative 2. Penyelesaian Persamaan-persamaan , Aljabar Simultan 3. Differensial dan Intergral 4. Optimasi 5. Studi Kasus Aki DAI yang memiliki golongan darah M (Mechanical) menjelaskan juga apa saja yang dipelajari pada Metode Numerik. Pertama kita harus memahami bagaimana perhitungan yang akan dibantu dengan computer, tetapi pertama kita harus membuat perhitungan-perhitungan yang akan di input ke dalam computer dengan hasil yang sederhana.

Selain itu, juga dibahas contoh soal seperti A=x2-1/x-1 dengan x=1. Pada penyelesaiannya memang harus memakai limit dan tidak boleh langsung di input. Ada satu prasyarat untuk mempelajari Metode Numerik yaitu BERAKAL. Dijelaskan bahwa akal merupakan tali yang mengikat pikiran manusia supaya pemikirannya tetap berjalan pada koridor yang seharusnya. Selainitu disinggung juga tentang Muhasabah.

Dwi Refarianto Nugroho 1706042024 Teknik Perkapalan


TUGAS METNUM

https://youtu.be/S906r2jHlss


PERTEMUAN KEDUA

Pada pertemuan kedua, diajarkan bahwa permasalahan yang berkaitan dengan keteknikan dapat diselesaikan dengan permodelan matematis. Selain itu juga dijelaskan penggunaan flowchart yaitu dari; mulai-input-proses-solusi. Permasalahan seperti persamaan aljabar dapat diselesaikan seperti

ax+by=c px=qy=r

Disisi lain kita juga diajarkan untuk aktif dalam kelas. seperti saling memeberi pertanyaan dan jawaban supaya suasana pembelajaran terasa hidup. Disinggung juga mengenai dimensi, 1D, 2D, 3D dan diatasnya. 1D berupa garis, 2D berupa bidang datar, 3D berupa ruang.


Tugas Metnum

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


PERTEMUAN KETIGA

pada pertemuan ketiga diajarkan penggunaan python untuk menyelesaikan sistem persamaan matriks pada aljabar linier. Harus ada baris yang menjadi acuan dalam matriks tersebut. Dalam menggunakan python, pertama kita harus memahami bahasanya. Selain itu prinsip dari python adalah looping atau memiliki pola tertentu dalam komputasinya.

PERTEMUAN KEEMPAT

pada pertemua keempat, kita mempelajari python untuk menyelesaikan persamaan gauss-jordan yang berbentuk matriks. kita belajar berbagai perintah di python seperti np. array, np zeros, float, dan lain-lain.

python

import numpy as np

  1. 1 define the matrix A

A=np.array([[4,-2,1],[-2,4,-2],[1,-2,4]], float)

print (A, '\n')

B=np.array([11,-16,17],float) print ('matrix B adalah','\n',B)

  1. --mendefinisikan ukuran matrix


TUGAS METNUM

[LINK NYA DIBAWAH]

[1]


TUGAS METNUM FINITE ELEMENT METHOD

import numpy as np from numpy import array

print("Dibuat oleh Dwi Refarianto Nugroho_1706042024") print("")

  1. 1. Menentukan jumlah pegas

N= eval(input('berapa jumlah pegas yang ada pada sistem ini?'))

  1. nilai dari node

ni=N+1

  1. nilai K

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

  1. nilai K sama dengan jumlah node nya
  1. 2. Mendefinisikan konstanta pegas

n_k=np.zeros(N)

for i in range (0,N):

   print('berapakah nilai konstanta pegas yang ke- pada',i+1,' ?')
   n_k[i]= eval(input())
  1. 3.Membuat matriks global kekauannya

K[0,0]=n_k[0] K[N,N]=n_k[N-1]

  1. 4.Membuat Pola Matriks
  1. Pola 1

j_1=0 for i_1 in range (0,N):

   j_1+=1
   K[i_1,j_1]=-(n_k[i_1])
  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])
  1. 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)

  1. 5. Menentukan gaya yang berkerja

Fn= eval(input('berapakah gaya yang berkerja?'))

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


n=len(A) #number of rows and colomn, due too the matrix that is square matrix

B=np.zeros(n, float) B[n-1]=Fn


  1. 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 di eliminasi, 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)

  1. 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])
  1. Determine the reaction force

F=-n_k[0]*U[0] print ('maka nilai gaya reaksinya adalah',F)


TUGAS UAS METNUM

https://youtu.be/1y2dC9uV8nY

PPT UAS Metnum

Python UAS Metnum

Coding UAS Metnum

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 di 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("Aplkasi Otimasi Section Modulus L Stiffner") print("Kondisi Terikat : lebar 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 T stiffner :")) 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("optimal sectional area =",-fMin) print("sectional area awal" , f(H)) A = -fMin/f(H)*100 print ("efisiensi",A,"%") input ("\nPress return to exit")