Difference between revisions of "Raymond Lesmana"

From ccitonlinewiki
Jump to: navigation, search
 
(34 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
== AKAL ==
 
== AKAL ==
6 Februari 2019
 
 
 
Terdapat 2 dosen pengajar di kelas Metode Numerik ini yaitu Dr. Ahmad Indra Siswantara alias Aki Dai dan Dr. Gunawan. Beliau memberitahukan kepada kami mengenai 2 tujuan utama dari kelas Metode Numerik ini. Tujuan kelas ini adalah :
 
Terdapat 2 dosen pengajar di kelas Metode Numerik ini yaitu Dr. Ahmad Indra Siswantara alias Aki Dai dan Dr. Gunawan. Beliau memberitahukan kepada kami mengenai 2 tujuan utama dari kelas Metode Numerik ini. Tujuan kelas ini adalah :
  
Line 9: Line 7:
  
 
Dari kedua tujuan yang dipaparkan oleh beliau, hal yang menjadi prasyaratnya adalah BERAKAL. Manusia diberkahi dengan akal budi dari Tuhan Yang Maha Esa. Orang yang berakal adalah orang yang dapat membedakan mana yang benar dan salah. Dengan berakal sudah sepatutnya manusia menjadi pribadi yang baik dan bijaksana dalam konteks berpikir ataupun bertindak. Aki Dai berkata bahwa matematika adalah hal yang dapat memberikan jawaban dan sekaligus dapat menyesatkan. Tidak sedikit ilmuwan kelas dunia yang berubah menjadi atheis dikarenakan oleh pengetahuan yang dimilikinya. Hal ini yang disebutkan oleh Aki Dai sebagai matematika dapat menyesatkan kita.
 
Dari kedua tujuan yang dipaparkan oleh beliau, hal yang menjadi prasyaratnya adalah BERAKAL. Manusia diberkahi dengan akal budi dari Tuhan Yang Maha Esa. Orang yang berakal adalah orang yang dapat membedakan mana yang benar dan salah. Dengan berakal sudah sepatutnya manusia menjadi pribadi yang baik dan bijaksana dalam konteks berpikir ataupun bertindak. Aki Dai berkata bahwa matematika adalah hal yang dapat memberikan jawaban dan sekaligus dapat menyesatkan. Tidak sedikit ilmuwan kelas dunia yang berubah menjadi atheis dikarenakan oleh pengetahuan yang dimilikinya. Hal ini yang disebutkan oleh Aki Dai sebagai matematika dapat menyesatkan kita.
 
  
 
== Metode Numerik ==
 
== Metode Numerik ==
Line 26: Line 23:
  
 
Dari langkah-langkah pembelajaran di atas, kita sudah sepatutnya memahami betul mengenai persamaan aljabar simultan, differensial, dan integral di mata kuliah kalkulus yang sudah kita ambil sebelumnya. Mengapa hal tersebut sangatlah penting di mata kuliah ini karena untuk mengoptimasi sebuah keadaan atau kasus yang berhubungan dengan ''engineering'' untuk mendapatkan output maksimum dengan input minimum perlu dibuat sebuah perhitungan matematis yang dapat mendefinisikan dan mencari solusi dari masalah yang ada. Contoh untuk menghitung Stress ataupun tegangan yang ada kita perlu melalui perhitungan seperti ini :
 
Dari langkah-langkah pembelajaran di atas, kita sudah sepatutnya memahami betul mengenai persamaan aljabar simultan, differensial, dan integral di mata kuliah kalkulus yang sudah kita ambil sebelumnya. Mengapa hal tersebut sangatlah penting di mata kuliah ini karena untuk mengoptimasi sebuah keadaan atau kasus yang berhubungan dengan ''engineering'' untuk mendapatkan output maksimum dengan input minimum perlu dibuat sebuah perhitungan matematis yang dapat mendefinisikan dan mencari solusi dari masalah yang ada. Contoh untuk menghitung Stress ataupun tegangan yang ada kita perlu melalui perhitungan seperti ini :
 +
 
ΣF = 0
 
ΣF = 0
  
Line 31: Line 29:
  
 
dengan melakukan penurunan rumus seperti halnya diatas kita dapat menentukan dan mengetahui tegangan yang ada lalu kita dapat mengoptimasikan bagaimana pengaturan tegangan yang terbaik. Optimasi ini dilakukan dengan komputer karena kecepatan perhitungan atau komputasinya yang dapat memberikan solusi terbaik dari berbagai keadaan dan percobaan yang ada dengan kurun waktu yang cepat dikarenakan komputer dapat menghitung lebih cepat dari manusia. Kita mempelajari algoritma, flow chart, dan pemograman di mata kuliah sehingga kita mengetahui bagaimana komputer tersebut mengeksekusi sebuah sistem yang ada dan kita dapat mengerti bahasa pemograman sehingga kita dapat menuangkan apa yang kita mau lewat aplikasi yang kita buat.
 
dengan melakukan penurunan rumus seperti halnya diatas kita dapat menentukan dan mengetahui tegangan yang ada lalu kita dapat mengoptimasikan bagaimana pengaturan tegangan yang terbaik. Optimasi ini dilakukan dengan komputer karena kecepatan perhitungan atau komputasinya yang dapat memberikan solusi terbaik dari berbagai keadaan dan percobaan yang ada dengan kurun waktu yang cepat dikarenakan komputer dapat menghitung lebih cepat dari manusia. Kita mempelajari algoritma, flow chart, dan pemograman di mata kuliah sehingga kita mengetahui bagaimana komputer tersebut mengeksekusi sebuah sistem yang ada dan kita dapat mengerti bahasa pemograman sehingga kita dapat menuangkan apa yang kita mau lewat aplikasi yang kita buat.
 +
 +
 +
== Studi Kasus ==
 +
 +
Aki Dai mengajak kita berpikir mengenai persoalan matematis yang ada. Beliau memberikan contoh soal sebagai berikut :
 +
 +
[[File:Screenshot_(50).png]]
 +
 +
Apabila kita langsung memasukan x = 1, maka perhitungan yang didapat ialah 0/0 atau tidak terdefinisi. Menurut beliau, 0/0 bukanlah terdefinisi namun hanya Tuhan yang tahu jawabannya dan kita manusia tidak sampai kesana. Solusi yang dapat kita lakukan adalah melakukan penurunan sehingga didapat bahwa hasilnya adalah 2. Namun Aki Dai meminta kita untuk berpikir lebih dalam, dan salah seorang teman kami memnjawab persamaan itu tidak dapat diselesaikan begitu saja karena titik x = 1 tidak ada pada fungsi yang tersebut sehingga dilakukan pendekatan yang menggunakan limit. Cara berpikir yang logis dan matematis diperlukan untuk menyelesaikan permasalahan-permasalahan yang ada terutama pada mata kuliah Metode Numerik ini sehingga mata kuliah ini dapat menjadi bekal kita untuk semakin berkembang dan berpikir layaknya seorang ''engineer''.
 +
 +
 +
== Pertemuan 2 ==
 +
 +
Metode Numerik yang dilakukan mempermudah kita sebagai calon engineer untuk melakukan perhitungan dengan cepat. Oleh karena itu, banyak permasalahan di dunia yang dapat ditulis dalam rumus matematis dapat kita lakukan perhitungan dengan menggunakan metode numerik demi mendapat nilai yang paling ideal. Optimasi juga dapat dilakukan guna untuk mendapat nilai terbaik atau hasil terbaik dengan waktu yang singkat.
 +
 +
Kasus yang dapat diselesaikan dengan persamaan matematis
 +
 +
1. Optimasi bentuk propeller sehingga propulsi yang dihasilkan seoptimal mungkin
 +
 +
2. Optimasi peletakan kamar mesin sehingga tenaga yang dihasilkan lebih terjaga
 +
 +
== PR ==
 +
 +
'''Perintah :'''
 +
 +
1. Cetak ax +by = c dan px +qy=r
 +
 +
2. Cetak masukan nilai a,b,c dan p,q,r
 +
 +
3. Input nilai a,b,c dan p,q,r
 +
 +
4. Taruh nilai a,b dan p,q ke dalam satu matrix
 +
 +
5. Taruh nilai c dan r ke dalam matrix lainnya
 +
 +
6. Lakukan perhitungan dengan menggunakan numpy linear algebra
 +
 +
7. Cetak hasil x dan y
 +
 +
'''Flowchart :'''
 +
[[File:FlowchartRaymond.jpg]]
 +
 +
'''Coding :'''
 +
 +
import numpy as np
 +
 +
print("Hello this is linear algebra solution program :)")
 +
 +
print("ax + by = c")
 +
 +
print("px + qy = r")
 +
 +
print("Please input the value")
 +
 +
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)
 +
 +
xval = int(z[0])
 +
 +
yval = int(z[1])
 +
 +
print("x = ",xval)
 +
 +
print("y = ", yval)
 +
 +
 +
 +
[[File:Contoh1Raymond.png]]
 +
 +
 +
[[File:Contoh2Raymond.png]]
 +
 +
 +
== Pertemuan 3 ==
 +
 +
Pada pertemuan kali ini kita mempelajari mengenai bahasa pemograman Python. Python dapat kita gunakan untuk memecahkan berbagai macam permasalahan yang ada baik dalam hal matematis ataupun lainnya. Dengan menggunakan python kita dapat membuat sebuah aplikasi atau program yang dapat mempermudah kita melakukan perhitungan ataupun memecahkan masalah yang ada dengan pertimbangan berbagai macam aspek. Python juga dapat digunakan untuk membuat program optimasi yang ada untuk mendapat output terbaik. Kita dapat memecahkan permasalahan matematis seperti aljabar linear, persamaan kuadrat, aritmetika, dan banyak hal lainnya. Kita hanya perlu untuk menterjemahkan output yang kita mau ke dalam bahasa pemograman python.
 +
 +
== PR Eliminasi Gauss ==
 +
 +
1. Soal
 +
 +
[[File:PRRaymond1.png]]
 +
 +
 +
[[File:PRRaymond2.png]]
 +
 +
 +
2. Eliminasi Gauss Jordan halaman 41
 +
 +
[[File:PRhal40.png]]
 +
 +
 +
== Pertemuan 4 ==
 +
 +
Pada pertemuan kali ini kita diajarkan mengenai penggunaan numpy untuk menyelesaikan aljabar linear.  Kita mengimport numpy pada python dengan tujuan agar module numerical python yang akan dipergunakan untuk menyelesaikan masalah numerik sudah terpasang pada aplikasi yang kita buat. Mengakses numpy dengan syntax "np." seperti np.array atau np.linalg bergantung pada kebutuhan. np.array dipergunakan untuk mengakses sub bab array dari modul numerical python untuk membuat matriks. Syntax print sebuah text harus diberi tanda kutip seperti print("Hello World"). Untuk print sebuah text dan variable a dapat ditulis print("Variabel A adalah" , a). Len() digunakan untuk mengukur panjang baris dari matriks yang ada. Looping pada python bisa dipergunakan syntax for atau if dengan kondisi tertentu sesuai kasus yang ada seperti for k in range(0,n-1). Jarak menjorok ke dalam mengartikan bahwa syntax yang ada adalah bagian dari syntax sebelumnya sehingga saling berkaitan. Kita diajarkan mengenai bagaimana syntax eliminasi gauss jordan pada python
 +
 +
 +
== Tugas Break Even Point ==
 +
 +
Link Youtube :
 +
 +
[https://youtu.be/u7iWKrZzLyA]
 +
 +
 +
 +
== Pertemuan 5 ==
 +
Membahas mengenai peralihan dan peregangan. Apabila luas bangunan tidak dapat dicapai hanya dengan satu lantai maka akan dibuat lantai-lantai baru hingga luas yang dicapai memadai. Optimasi mengenai struktur atau fondasi dari rumah.
 +
 +
 +
== Tugas Program Pegas ==
 +
 +
video youtube : https://youtu.be/dH5keiMH0-Y
 +
 +
 +
import numpy as np
 +
 +
#menentukan jumlah pegas
 +
 +
N = eval(input("berapa jumlah pegas ? "))
 +
 +
y = N+1
 +
 +
K = np.zeros((y,y),float)
 +
 +
#mendefinisikan array berisi konstanta pegas
 +
 +
k_peg = np.zeros(N)
 +
 +
for i in range (0,N):
 +
 +
    print("berapa nilai konstanta pegas yang ke ", i+1 , "?")
 +
 +
    k_peg[i] = eval(input())
 +
 +
#membuat matriks global kekuatan
 +
 +
K[0,0] = k_peg[0]
 +
 +
K[N,N] = k_peg[N-1]
 +
 +
#pola1
 +
 +
j_1 = 0
 +
 +
for i_1 in range (0,N):
 +
 +
    j_1 += 1
 +
 +
    K[i_1,j_1] =- (k_peg[i_1])
 +
 +
#pola2
 +
 +
i_2 = 0
 +
 +
for j_2 in range (0,N):
 +
 +
    i_2 += 1
 +
 +
    K[i_2,j_2] =- (k_peg[j_2])
 +
 +
#pola3
 +
 +
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)
 +
 +
 +
#menentukan gaya yang bekerja
 +
 +
gaya = eval(input("berapa gaya yang bekerja ? "))
 +
 +
A = K[1:y , 1:y]
 +
 +
n = len(A)
 +
 +
B = np.zeros(n,float)
 +
 +
B[n-1] = gaya
 +
 +
#eliminasi gauss
 +
 +
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]
 +
 +
print("Matriks A : ")
 +
 +
print("")
 +
 +
print(A)
 +
 +
 +
#back substitution
 +
 +
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])
 +
 +
#reaction force
 +
 +
f1 = k_peg[0] * U[0]
 +
 +
print("Maka nilai F1 adalah : ", f1)
 +
 +
 +
== Flowchart ==
 +
 +
[[File:Reaction_Force.jpeg]]
 +
 +
 +
== Tugas Pegas ==
 +
 +
Video Youtube :
 +
 +
[https://youtu.be/4hnhg3T15ek]
 +
 +
import numpy as np
 +
 +
#menentukan jumlah pegas
 +
 +
N =2
 +
 +
y = N+1
 +
 +
K = np.zeros((y,y),float)
 +
 +
#mendefinisikan array berisi konstanta pegas
 +
 +
k_peg = np.zeros(N)
 +
 +
D = np.zeros(N)
 +
 +
E = np.zeros(N)
 +
 +
L = np.zeros(N)
 +
 +
A_1 = np.zeros(N)
 +
 +
A = np.zeros(N)
 +
 +
E_L = np.zeros(N)
 +
 +
for i in range (0,N):
 +
 +
    print("Berapakah nilai diameter material " , i+1 , " ?")
 +
 +
    D[i] = eval(input())
 +
 +
    print("Berapakah nilai modulus young material ", i+1 , " ?")
 +
 +
    E[i] = eval(input())
 +
 +
    print("Berapakah nilai panjang material ", i+1 ," ?")
 +
 +
    L[i] = eval(input())
 +
 +
    A_1 [i] = float(D[i]*D[i])
 +
 +
    A[i] = float(A_1[i] * 0.785)
 +
 +
    E_L[i] = float(E[i] / L[i])
 +
 +
    k_peg[i] = float(A[i] * E_L[i])
 +
 +
    print("Nilai konstanta pegas ke-" , i+1 , "adalah ",k_peg[i])
 +
 +
print("Berapakah jarak antara Titik B dengan Material ?")
 +
 +
h = eval(input())
 +
 +
#membuat matriks global kekuatan
 +
 +
K[0,0] = k_peg[0]
 +
 +
K[N,N] = k_peg[N-1]
 +
 +
#pola1
 +
 +
j_1 = 0
 +
 +
for i_1 in range (0,N):
 +
 +
    j_1 += 1
 +
 +
    K[i_1,j_1] =- (k_peg[i_1])
 +
 +
#pola2
 +
 +
i_2 = 0
 +
 +
for j_2 in range (0,N):
 +
 +
    i_2 += 1
 +
 +
    K[i_2,j_2] =- (k_peg[j_2])
 +
 +
 +
#pola3
 +
 +
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 sistem pegas adalah : ")
 +
 +
print("")
 +
 +
print (K)
 +
 +
 +
#menentukan gaya yang bekerja
 +
 +
gaya = eval(input("berapa gaya yang bekerja ? "))
 +
 +
A = K[1:y , 1:y]
 +
 +
n = len(A)
 +
 +
B = np.zeros((n,1),float)
 +
 +
B[0] = gaya
 +
 +
#eliminasi gauss
 +
 +
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]
 +
 +
print("Matriks A : ")
 +
 +
print("")
 +
 +
print(A)
 +
 +
 +
#back substitution
 +
 +
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] > h):
 +
 +
    print("Defleksi melebihi batas maksimum!")
 +
 +
else:
 +
 +
    print("Defleksi senilai : ", U[n-1])
 +
 +
 +
== UAS OPTIMASI STIFFENER I ==
 +
 +
Saya melakukan optimasi untuk bentuk stiffener I dengan metode gold search yang saya jelaskan dalam bentuk video. Video dapat diakses dengan mengakses link dibawah ini. Terimakasih
 +
 +
[https://youtu.be/hVeSaQFoZzw]
 +
 +
Power Point yang saya buat dapat diakses di :
 +
[https://drive.google.com/file/d/1pqkFodqSIE1eet6FID8nBqlSk6aWFGVP/view?usp=sharing]
 +
 +
Coding Python :
 +
 +
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 tinggi benda I Stiffner")
 +
 +
def f(x):
 +
    b1 = 20
 +
    b2 = 10
 +
    H = 35
 +
    A1 = b1*(H-x)/2
 +
    A2 = b2*x
 +
    A3 = b1*(H-x)/2
 +
    d1 = 1/2*(H-x)/2
 +
    d2 = 1/2*x+(H-x)
 +
    d3 = 3/2*(H-x)+x
 +
    I1 = 1/12*b1*(H-x)**3
 +
    I2 = 1/12*b2*x**3
 +
    I3 = 1/12*b1*(H-x)**3
 +
    dc =(d1*A1+d2*A2+d3*A3)/(A1+A2+A3)
 +
    I = I1-A1*(dc-d1)**2+I2-A2*(dc-d2)**2+I3-A3*(dc-d3)**2
 +
    Z = I/dc
 +
    return Z
 +
 +
xStart = 0.0
 +
h = 1.0
 +
x1,x2 = bracket(f,xStart,h)
 +
x,fMin = search(f,x1,x2)
 +
print("x =",x)
 +
print("Optimal sectional area =",-fMin)
 +
print("sectional area awal",f(35))
 +
input("\nPress return to exit")

Latest revision as of 20:02, 29 May 2019

AKAL

Terdapat 2 dosen pengajar di kelas Metode Numerik ini yaitu Dr. Ahmad Indra Siswantara alias Aki Dai dan Dr. Gunawan. Beliau memberitahukan kepada kami mengenai 2 tujuan utama dari kelas Metode Numerik ini. Tujuan kelas ini adalah :

A. Mehamami konsep / prinsip dan mampu menenerapkannya

B. Menjadi orang yang lebih mengenal siapa dirinya

Dari kedua tujuan yang dipaparkan oleh beliau, hal yang menjadi prasyaratnya adalah BERAKAL. Manusia diberkahi dengan akal budi dari Tuhan Yang Maha Esa. Orang yang berakal adalah orang yang dapat membedakan mana yang benar dan salah. Dengan berakal sudah sepatutnya manusia menjadi pribadi yang baik dan bijaksana dalam konteks berpikir ataupun bertindak. Aki Dai berkata bahwa matematika adalah hal yang dapat memberikan jawaban dan sekaligus dapat menyesatkan. Tidak sedikit ilmuwan kelas dunia yang berubah menjadi atheis dikarenakan oleh pengetahuan yang dimilikinya. Hal ini yang disebutkan oleh Aki Dai sebagai matematika dapat menyesatkan kita.

Metode Numerik

Dalam perkuliahan yang dilakukan ini ada 5 langkah pembelajaran untuk dapat memahami dan menguasai mata kuliah ini secara maksimal. Langkah tersebut sebagai berikut :

1. Algoritma, Flowchart, Pemograman, Metode iterative

2. Penyelesaian Persamaan-Persamaan Aljabar Simultan

3. Differensial dan Integral

4. Optimasi

5. Studi Kasus

Dari langkah-langkah pembelajaran di atas, kita sudah sepatutnya memahami betul mengenai persamaan aljabar simultan, differensial, dan integral di mata kuliah kalkulus yang sudah kita ambil sebelumnya. Mengapa hal tersebut sangatlah penting di mata kuliah ini karena untuk mengoptimasi sebuah keadaan atau kasus yang berhubungan dengan engineering untuk mendapatkan output maksimum dengan input minimum perlu dibuat sebuah perhitungan matematis yang dapat mendefinisikan dan mencari solusi dari masalah yang ada. Contoh untuk menghitung Stress ataupun tegangan yang ada kita perlu melalui perhitungan seperti ini :

ΣF = 0

Dσ = 0

dengan melakukan penurunan rumus seperti halnya diatas kita dapat menentukan dan mengetahui tegangan yang ada lalu kita dapat mengoptimasikan bagaimana pengaturan tegangan yang terbaik. Optimasi ini dilakukan dengan komputer karena kecepatan perhitungan atau komputasinya yang dapat memberikan solusi terbaik dari berbagai keadaan dan percobaan yang ada dengan kurun waktu yang cepat dikarenakan komputer dapat menghitung lebih cepat dari manusia. Kita mempelajari algoritma, flow chart, dan pemograman di mata kuliah sehingga kita mengetahui bagaimana komputer tersebut mengeksekusi sebuah sistem yang ada dan kita dapat mengerti bahasa pemograman sehingga kita dapat menuangkan apa yang kita mau lewat aplikasi yang kita buat.


Studi Kasus

Aki Dai mengajak kita berpikir mengenai persoalan matematis yang ada. Beliau memberikan contoh soal sebagai berikut :

Screenshot (50).png

Apabila kita langsung memasukan x = 1, maka perhitungan yang didapat ialah 0/0 atau tidak terdefinisi. Menurut beliau, 0/0 bukanlah terdefinisi namun hanya Tuhan yang tahu jawabannya dan kita manusia tidak sampai kesana. Solusi yang dapat kita lakukan adalah melakukan penurunan sehingga didapat bahwa hasilnya adalah 2. Namun Aki Dai meminta kita untuk berpikir lebih dalam, dan salah seorang teman kami memnjawab persamaan itu tidak dapat diselesaikan begitu saja karena titik x = 1 tidak ada pada fungsi yang tersebut sehingga dilakukan pendekatan yang menggunakan limit. Cara berpikir yang logis dan matematis diperlukan untuk menyelesaikan permasalahan-permasalahan yang ada terutama pada mata kuliah Metode Numerik ini sehingga mata kuliah ini dapat menjadi bekal kita untuk semakin berkembang dan berpikir layaknya seorang engineer.


Pertemuan 2

Metode Numerik yang dilakukan mempermudah kita sebagai calon engineer untuk melakukan perhitungan dengan cepat. Oleh karena itu, banyak permasalahan di dunia yang dapat ditulis dalam rumus matematis dapat kita lakukan perhitungan dengan menggunakan metode numerik demi mendapat nilai yang paling ideal. Optimasi juga dapat dilakukan guna untuk mendapat nilai terbaik atau hasil terbaik dengan waktu yang singkat.

Kasus yang dapat diselesaikan dengan persamaan matematis

1. Optimasi bentuk propeller sehingga propulsi yang dihasilkan seoptimal mungkin

2. Optimasi peletakan kamar mesin sehingga tenaga yang dihasilkan lebih terjaga

PR

Perintah :

1. Cetak ax +by = c dan px +qy=r

2. Cetak masukan nilai a,b,c dan p,q,r

3. Input nilai a,b,c dan p,q,r

4. Taruh nilai a,b dan p,q ke dalam satu matrix

5. Taruh nilai c dan r ke dalam matrix lainnya

6. Lakukan perhitungan dengan menggunakan numpy linear algebra

7. Cetak hasil x dan y

Flowchart : FlowchartRaymond.jpg

Coding :

import numpy as np

print("Hello this is linear algebra solution program :)")

print("ax + by = c")

print("px + qy = r")

print("Please input the value")

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)

xval = int(z[0])

yval = int(z[1])

print("x = ",xval)

print("y = ", yval)


Contoh1Raymond.png


Contoh2Raymond.png


Pertemuan 3

Pada pertemuan kali ini kita mempelajari mengenai bahasa pemograman Python. Python dapat kita gunakan untuk memecahkan berbagai macam permasalahan yang ada baik dalam hal matematis ataupun lainnya. Dengan menggunakan python kita dapat membuat sebuah aplikasi atau program yang dapat mempermudah kita melakukan perhitungan ataupun memecahkan masalah yang ada dengan pertimbangan berbagai macam aspek. Python juga dapat digunakan untuk membuat program optimasi yang ada untuk mendapat output terbaik. Kita dapat memecahkan permasalahan matematis seperti aljabar linear, persamaan kuadrat, aritmetika, dan banyak hal lainnya. Kita hanya perlu untuk menterjemahkan output yang kita mau ke dalam bahasa pemograman python.

PR Eliminasi Gauss

1. Soal

PRRaymond1.png


PRRaymond2.png


2. Eliminasi Gauss Jordan halaman 41

PRhal40.png


Pertemuan 4

Pada pertemuan kali ini kita diajarkan mengenai penggunaan numpy untuk menyelesaikan aljabar linear. Kita mengimport numpy pada python dengan tujuan agar module numerical python yang akan dipergunakan untuk menyelesaikan masalah numerik sudah terpasang pada aplikasi yang kita buat. Mengakses numpy dengan syntax "np." seperti np.array atau np.linalg bergantung pada kebutuhan. np.array dipergunakan untuk mengakses sub bab array dari modul numerical python untuk membuat matriks. Syntax print sebuah text harus diberi tanda kutip seperti print("Hello World"). Untuk print sebuah text dan variable a dapat ditulis print("Variabel A adalah" , a). Len() digunakan untuk mengukur panjang baris dari matriks yang ada. Looping pada python bisa dipergunakan syntax for atau if dengan kondisi tertentu sesuai kasus yang ada seperti for k in range(0,n-1). Jarak menjorok ke dalam mengartikan bahwa syntax yang ada adalah bagian dari syntax sebelumnya sehingga saling berkaitan. Kita diajarkan mengenai bagaimana syntax eliminasi gauss jordan pada python


Tugas Break Even Point

Link Youtube :

[1]


Pertemuan 5

Membahas mengenai peralihan dan peregangan. Apabila luas bangunan tidak dapat dicapai hanya dengan satu lantai maka akan dibuat lantai-lantai baru hingga luas yang dicapai memadai. Optimasi mengenai struktur atau fondasi dari rumah.


Tugas Program Pegas

video youtube : https://youtu.be/dH5keiMH0-Y


import numpy as np

  1. menentukan jumlah pegas

N = eval(input("berapa jumlah pegas ? "))

y = N+1

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

  1. mendefinisikan array berisi konstanta pegas

k_peg = np.zeros(N)

for i in range (0,N):

   print("berapa nilai konstanta pegas yang ke ", i+1 , "?")
   k_peg[i] = eval(input())
  1. membuat matriks global kekuatan

K[0,0] = k_peg[0]

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

  1. pola1

j_1 = 0

for i_1 in range (0,N):

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

i_2 = 0

for j_2 in range (0,N):

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

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)


  1. menentukan gaya yang bekerja

gaya = eval(input("berapa gaya yang bekerja ? "))

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

n = len(A)

B = np.zeros(n,float)

B[n-1] = gaya

  1. eliminasi gauss

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]

print("Matriks A : ")

print("")

print(A)


  1. back substitution

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. reaction force

f1 = k_peg[0] * U[0]

print("Maka nilai F1 adalah : ", f1)


Flowchart

Reaction Force.jpeg


Tugas Pegas

Video Youtube :

[2]

import numpy as np

  1. menentukan jumlah pegas

N =2

y = N+1

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

  1. mendefinisikan array berisi konstanta pegas

k_peg = np.zeros(N)

D = np.zeros(N)

E = np.zeros(N)

L = np.zeros(N)

A_1 = np.zeros(N)

A = np.zeros(N)

E_L = np.zeros(N)

for i in range (0,N):

   print("Berapakah nilai diameter material " , i+1 , " ?")
   D[i] = eval(input())
   print("Berapakah nilai modulus young material ", i+1 , " ?")
   E[i] = eval(input())
   print("Berapakah nilai panjang material ", i+1 ," ?")
   L[i] = eval(input())
   A_1 [i] = float(D[i]*D[i])
   A[i] = float(A_1[i] * 0.785)
   E_L[i] = float(E[i] / L[i])
   k_peg[i] = float(A[i] * E_L[i])
   print("Nilai konstanta pegas ke-" , i+1 , "adalah ",k_peg[i])

print("Berapakah jarak antara Titik B dengan Material ?")

h = eval(input())

  1. membuat matriks global kekuatan

K[0,0] = k_peg[0]

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

  1. pola1

j_1 = 0

for i_1 in range (0,N):

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

i_2 = 0

for j_2 in range (0,N):

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


  1. pola3

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 sistem pegas adalah : ")

print("")

print (K)


  1. menentukan gaya yang bekerja

gaya = eval(input("berapa gaya yang bekerja ? "))

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

n = len(A)

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

B[0] = gaya

  1. eliminasi gauss

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]

print("Matriks A : ")

print("")

print(A)


  1. back substitution

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

   print("Defleksi melebihi batas maksimum!")

else:

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


UAS OPTIMASI STIFFENER I

Saya melakukan optimasi untuk bentuk stiffener I dengan metode gold search yang saya jelaskan dalam bentuk video. Video dapat diakses dengan mengakses link dibawah ini. Terimakasih

[3]

Power Point yang saya buat dapat diakses di : [4]

Coding Python :

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 tinggi benda I Stiffner")

def f(x):

   b1 = 20
   b2 = 10
   H = 35
   A1 = b1*(H-x)/2
   A2 = b2*x
   A3 = b1*(H-x)/2
   d1 = 1/2*(H-x)/2
   d2 = 1/2*x+(H-x)
   d3 = 3/2*(H-x)+x
   I1 = 1/12*b1*(H-x)**3
   I2 = 1/12*b2*x**3
   I3 = 1/12*b1*(H-x)**3
   dc =(d1*A1+d2*A2+d3*A3)/(A1+A2+A3)
   I = I1-A1*(dc-d1)**2+I2-A2*(dc-d2)**2+I3-A3*(dc-d3)**2
   Z = I/dc
   return Z

xStart = 0.0 h = 1.0 x1,x2 = bracket(f,xStart,h) x,fMin = search(f,x1,x2) print("x =",x) print("Optimal sectional area =",-fMin) print("sectional area awal",f(35)) input("\nPress return to exit")