Difference between revisions of "Faril Ichfari"

From ccitonlinewiki
Jump to: navigation, search
(UAS : Optimasi menggunakan Golden Search Ratio)
 
(19 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 +
 +
== DATA DIRI ==
 +
 +
Faril Ichfari
 +
1706986782
 +
Teknik Perkapalan
 +
Departemen Teknik Mesin
 +
Universitas Indonesia
  
 
== Pertemuan 1 ==
 
== Pertemuan 1 ==
Line 19: Line 27:
 
Metode numerik ini terdiri dari langkah-langkah yang disebut algoritma, yang di proses melalui komputer. salah satu program untuk memecahkan masalah ini adalah "python". Setelah program berhasil disusun dan didapatkan hasil, maka dibuat simulasi untuk memvisualisasikan program yang menghasilkan numerik. Hasil perhitungan ini akan menghasilkan numerk, lalu akan dibuat visualisasinya. Hasil dari visual tersebut di analisa, tujuan dari analisa ini untuk mendapatkan error dan nantinya akan diperbaiki, sehingga akan dapat menghasilkan hasil yang paling sempurna yang dapat menyelesaikan masalah teknik.
 
Metode numerik ini terdiri dari langkah-langkah yang disebut algoritma, yang di proses melalui komputer. salah satu program untuk memecahkan masalah ini adalah "python". Setelah program berhasil disusun dan didapatkan hasil, maka dibuat simulasi untuk memvisualisasikan program yang menghasilkan numerik. Hasil perhitungan ini akan menghasilkan numerk, lalu akan dibuat visualisasinya. Hasil dari visual tersebut di analisa, tujuan dari analisa ini untuk mendapatkan error dan nantinya akan diperbaiki, sehingga akan dapat menghasilkan hasil yang paling sempurna yang dapat menyelesaikan masalah teknik.
  
 +
Permasalahan Teknik Perkapalan :
 +
Menghitung kekuatan pada bagian tengah kapal (midship)
  
 
== Tugas ==
 
== Tugas ==
Line 74: Line 84:
  
 
input()
 
input()
 +
 +
 +
== Pertemuan 3 ==
 +
Pada pertemuan ketiga tanggal 20 Februari 2019, menjelaskan salah satu program yaitu Python. Mengenalkan buku referensi yang dipakai yaitu "Jaan Kusalaas - numerical methods in engineering with python 3". Di pertemuan ini, mengajarkan menggunakan python untuk memecahkan perhitungan pada aljabar linear yaitu eleminasi gaus jordan. Beberapa bahasa python dijelaskan, antara lain :
 +
 +
n=jumlah baris/kolom
 +
i=baris ke..
 +
j=kolom ke..
 +
k= pivot (patokan baris)
 +
 +
 +
== Tugas ==
 +
 +
Pengertian dari koding dari elimination gauss
 +
 +
Pengertian dari programming elimination gauss
 +
 +
Terdapat 3 matriks yang
 +
A=[2,-4,5], [-2,8,-4], [1,-2,9]
 +
B=[12], [-16],[20]
 +
C=[2,-4,5,12], [-2,8,-4,-16], [1,-2,9,20]
 +
 +
Lalu terdapat kata-kata dari programming
 +
1. print ('Matrix dari persamaan adalah : ')
 +
print (c)
 +
 +
Yang berarti print c adalah menghasilkan matriks dari C, yaitu
 +
C=[2,-4,5,12], [-2,8,-4,-16], [1,-2,9,20]
 +
2. Lalu terdapat kata-kata
 +
n=len(b) 
 +
len merupakan mengembalikan panjang(jumlah anggota) dari suatu objek
 +
 +
Lalu n adalah 3 karena jumlah anggota dari matriks B
 +
 +
 +
 +
== Pertemuan 4 ==
 +
 +
Pada pertemuan kali ini, menjelaskan terkait salah satu pengaplikasian dari metode numerik, yaitu memecahkan masalah matematika memakai teori eleminasi gauss. Pengaplikasian ini memakai Python, ada beberapa bahasa dalam Python:
 +
 +
Numpy : library, dipakai untuk operasi matematika lebih lanjut. Contoh : matrix
 +
 +
Numpy dalam Pyhton dituliskan np
 +
 +
 +
Berikut contoh pemecahan masalah menggunakan numpy:
 +
 +
import numpy as np
 +
 +
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)
 +
 +
n=len(B)
 +
print ('ukuran matrixnya adalah=', 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]
 +
 +
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])
 +
 +
 +
== Pertemuan 5 ==
 +
 +
mencoba mengungkapkan apa yang belum kita bisa, itu menandakan kita masih punya akal.
 +
 +
== UAS : Optimasi menggunakan Golden Search Ratio ==
 +
 +
CODING :
 +
 +
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 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")
 +
 +
Video Pengerjaan :
 +
[https://www.youtube.com/channel/UCnM8lVEXtZZmW4oNJWGiqLg?view_as=subscriber]
 +
 +
Power Point :
 +
[https://drive.google.com/file/d/1ubQa-yt80ILuQGn5DYtGdlcjFGuwUf-I/view?usp=sharing]

Latest revision as of 17:18, 29 May 2019

DATA DIRI

Faril Ichfari 1706986782 Teknik Perkapalan Departemen Teknik Mesin Universitas Indonesia

Pertemuan 1

Metode Numerik

Pada pertemuan pertama metode numerik, di kelas diberikan penjelasan terkait apa saja hal yang akan kita pelajari selama perkuliahan ini dan peraturan yang berlaku selama perkuliahan berlangsung. tujuan dan metode perkuliahan juga dijelaskan. tujuan dari mempelajari metode numerik adalah : 1. memahami konsep/prinsip dan mampu menerapkannya 2. menjadi orang yang lebih mengenal dirinya

Yang saya dapat di perkuliahan ini, metode numerik digunakan jika secara perhitungan menggunakan metode manual tidak mendapat angka yang real atau pasti, jadi metode numerik digunakan untuk menyelesaikan perhitungan tersebut yang tidak dapat dihitung di metode biasa. Metode numerik juga merupakan lanjutan dari kalkulus dan matematika teknik

Di kelas ini juga pak DAI memberikan penjelasan terkait Akal. Kita sebagai manusia harus berakal, dimana akal itu diibaratkan tali yang mengikat atau mengililingi otak kita agar kita tidak melampaui batas manusiawi pak DAI juga menjelaskan bahwa matematika itu bisa bermaksud 2 hal, bisa membantu dan bisa menyesatkan.


Pertemuan 2

Pada pertemuan kedua metode numerik, mempeajari bagaimana masalah teknik dibuat menjadi model matematis sehingga dapat dipecahkan. Langkahnya melalu teoritis lalu dilakukan percobaan. Metode numerik salah satu model matematis yang memiliki perhitungan untuk menyelesaikannya. Metode numerik ini terdiri dari langkah-langkah yang disebut algoritma, yang di proses melalui komputer. salah satu program untuk memecahkan masalah ini adalah "python". Setelah program berhasil disusun dan didapatkan hasil, maka dibuat simulasi untuk memvisualisasikan program yang menghasilkan numerik. Hasil perhitungan ini akan menghasilkan numerk, lalu akan dibuat visualisasinya. Hasil dari visual tersebut di analisa, tujuan dari analisa ini untuk mendapatkan error dan nantinya akan diperbaiki, sehingga akan dapat menghasilkan hasil yang paling sempurna yang dapat menyelesaikan masalah teknik.

Permasalahan Teknik Perkapalan : Menghitung kekuatan pada bagian tengah kapal (midship)

Tugas

print ('Persamaan linear dua variabel \n ax + by = c\n px + qy = r ')

a = float(input(" masukan nilai a =")) b = float(input(" masukan nilai b =")) c = float(input(" masukan nilai c =")) p = float(input(" masukan nilai p =")) q = float(input(" masukan nilai q =")) r = float(input(" masukan nilai r ="))


if a == p :

  i = b - q
  j = c - r
  y = j/i
  x = (c -(b*y))/a
  print("nilai y=",y,"nilai x =",x)

elif a == 0:

  y = c / b
  x = (r - (q * y)) / p
  print("nilai y=", y, "nilai x =", x)

elif b == 0:

  x = c / a
  y = (r - (p * x)) / q
  print("nilai y=", y, "nilai x =", x)

elif p == 0:

  y = r / q
  x = (c - (a * y)) / b
  print("nilai y=", y, "nilai x =", x)

elif q == 0:

  x = r / p
  y = (c - (a * x)) / b
  print("nilai y=", y, "nilai x =", x)

elif a != p :

  a2= a*p
  b2=b*p
  c2=c*p
  p2=p*a
  q2=q*a
  r2=r*a
  i2 = b2 - q2
  j2 = c2 - r2
  y = j2 / i2
  x = (c - (b * y))/a
  print("nilai y=", y, "nilai x =", x)

input()


Pertemuan 3

Pada pertemuan ketiga tanggal 20 Februari 2019, menjelaskan salah satu program yaitu Python. Mengenalkan buku referensi yang dipakai yaitu "Jaan Kusalaas - numerical methods in engineering with python 3". Di pertemuan ini, mengajarkan menggunakan python untuk memecahkan perhitungan pada aljabar linear yaitu eleminasi gaus jordan. Beberapa bahasa python dijelaskan, antara lain :

n=jumlah baris/kolom i=baris ke.. j=kolom ke.. k= pivot (patokan baris)


Tugas

Pengertian dari koding dari elimination gauss

Pengertian dari programming elimination gauss

Terdapat 3 matriks yang A=[2,-4,5], [-2,8,-4], [1,-2,9] B=[12], [-16],[20] C=[2,-4,5,12], [-2,8,-4,-16], [1,-2,9,20]

Lalu terdapat kata-kata dari programming 1. print ('Matrix dari persamaan adalah : ') print (c)

Yang berarti print c adalah menghasilkan matriks dari C, yaitu C=[2,-4,5,12], [-2,8,-4,-16], [1,-2,9,20] 2. Lalu terdapat kata-kata n=len(b) len merupakan mengembalikan panjang(jumlah anggota) dari suatu objek

Lalu n adalah 3 karena jumlah anggota dari matriks B


Pertemuan 4

Pada pertemuan kali ini, menjelaskan terkait salah satu pengaplikasian dari metode numerik, yaitu memecahkan masalah matematika memakai teori eleminasi gauss. Pengaplikasian ini memakai Python, ada beberapa bahasa dalam Python:

Numpy : library, dipakai untuk operasi matematika lebih lanjut. Contoh : matrix

Numpy dalam Pyhton dituliskan np


Berikut contoh pemecahan masalah menggunakan numpy:

import numpy as np

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)

n=len(B) print ('ukuran matrixnya adalah=', 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]

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


Pertemuan 5

mencoba mengungkapkan apa yang belum kita bisa, itu menandakan kita masih punya akal.

UAS : Optimasi menggunakan Golden Search Ratio

CODING :

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

Video Pengerjaan : [1]

Power Point : [2]