Difference between revisions of "Muhammad Fadhil Zuhdi"

From ccitonlinewiki
Jump to: navigation, search
(Review Materi Selasa, 10 Desember)
(Jawaban UAS)
 
(77 intermediate revisions by the same user not shown)
Line 1: Line 1:
=='''Profil'''==
+
==Profil==
  
 +
[[File:crop muka.jpg|200px|thumb|right]]
  
<p align="center">Nama: Muhammad Fadhil Zuhdi</p>
+
Saya Muhammad Fadhil Zuhdi, akrab dipanggil Fadhil yang merupakan mahasiswa teknik mesin angkatan 2017 dengan NPM 1706036186. Di wiki ini, saya akan menulis apa saja yang sudah saya pelajari di kelas metode numerik 02 bersama Pak DAI.
  
<p align="center">NPM: 1706036186</p>
+
==Pelajaran yang didapatkan bersama Pak Engkos==
 +
Sebelum UTS Metode Numerik, kami kuliah bersama Pak Engkos sebagai dosen kami. Saya mendapatkan beberapa materi yang tentang metode numerik seperti:
 +
*perhitungan deret Taylor
 +
*mencari akar-akar dengan metode bisection, secant, dan newton-rhapson
 +
*penyelesaian masalah dengan deret Taylor
 +
*interpolasi dan regresi linear dengan matriks
  
<p align="center">Jurusan: Teknik Mesin</p>
+
Hal yang belum saya pahami adalah pengaplikasiannya ke excel yang menurut saya sedikit rumit karena saya belum terlalu memahami pola maisng-masing metode
  
=='''TUGAS REVIEW PELAJARAN KELAS METODE NUMERIK'''==
+
==Pertemuan Pertama (Rabu, 11 November 2020)==
*Resume 1, 3 September 2019[[https://ccitonline.com/wiki/index.php/Resume_1_3_September_2019_Muhammad_Fadhil_Zuhdi]]
 
*Resume 2, 10 September 2019[[https://ccitonline.com/wiki/index.php/Resume_2_10_September_2019_Muhammad_Fadhil_Zuhdi]]
 
*Resume 3, 17 September 2019[[https://ccitonline.com/wiki/index.php/Resume_3_10_September_2019_Muhammad_Fadhil_Zuhdi]]
 
*Resume 4, 24 September 2019[[https://ccitonline.com/wiki/index.php/Resume_4_10_September_2019_Muhammad_Fadhil_Zuhdi]]
 
  
=='''Tugas 1, 29 Oktober 2019'''==
+
Pada pertemuan pertama kelas Metode Numerik, saya belajar beberapa hal bersama Pak Ahmad Indra (DAI). Pertama, saya belajar cara menggunakan wiki air dari Pak Dai. Wiki Air adalah platform untuk para mahasiswa Pak Dai untuk menulis. Dari pertemuan ini, saya mendapatkan beberapa hal, yaitu konsep metode numerik, aplikasi metode numerik, penerapan metode numerik ke ranah teknik, dan menjadi orang yang beradab. Pak DAI juga menjelaskan bahwa komputer secanggih apapun tetap memiliki batasan karena komputer merupakan karya dari manusia yang penuh keterbatasan.
Mencari waktu untuk sebuah mobil mencapai kecepatan maksimal
 
  
[[File:Jawaban_tugas_1.jpg]]
+
Dari kelas ini, kami juga mendiskusikan tentang apa itu belajar. Manfaat belajar sangatlah banyak. Manfaat utama belajar adalah untuk mendapatkan ilmu. Namun, belajar pelajaran kehidupan juga sama pentingnya dengan belajar pelajaran akademis. Kita juga harus sering merenungkan aapa saja yang sudah kita pelajari. Kita harus merefleksikan diri sendiri sudah bermanfaatkah yang sudah kita pelajari dan sudah berapa banyak ilmu yang sudah kita amalkan.
  
[[File:Jawaban_geany.jpg]]
+
Kami diberikan tugas oleh Pak DAI tentang Open Modellica. Kami diperintahkan untuk belajar tentang Open Modellica, merekam dan menguploadnya ke Youtube, dan memberikan tautan video dari Youtube kami di wiki masing-masing.
  
=='''Tugas 2, 03 November 2019'''==
 
Video tutorial bagaimana cara mencari waktu sebuah untuk mencapai kecepatan maksimal oleh:
 
  
*Muhammad Fadhil Zuhdi (1706036186)
+
====Tugas OpenModelica 1====
*Ilham Hutama Putra (1706036450)
+
Sebelumnya kami diberikan tugas pembelajaran metode numerik dengan OpenModelica. Di sini, saya mengangkat permasalahan gaya gesek statis dengan mencari koefisien gaya gesek statis di OpenModelica. hasil pembelajaran saya dapat ditonton di tautan berikut:
*Afif Abdurrahman Ilmy (1706036280)
+
<youtube width="200" height="100">https://youtu.be/JeyiRPxiixE</youtube>
  
Hasil kerja kelompok kami:
+
Terima kasih!
[https://youtu.be/qlrqdJgJa6E]
 
  
== '''Resume Selasa, 5 November 2019''' ==
+
==Minggu ke-2 (Rabu, 18 November 2020)==
 +
Pada hari ini, kami belajar bagaimana cara menggunakan OpenModelica. Pak Dai mereview tugas-tugas kami dan membahas apa saja kesulitan yang dialami mahasiswa dalam mengerjakan tugas kemarin bersama asisten dosen, Bang Edo. Hampir setiap anak menceritakan yang dilakukannya bersama OpenModeilca untuk menyelesaikan permasalahan yang dipilih. Dalam kelas Pak Dai juga berpesan bahwa belajar sebagai manusia itu tidak akan habisnya. Kita akan selalu melakukan hal yang bernama "belajar" dari buaian sampe ke liang lahat. Manusia harus selalu berkembang dan harus lebih baik dari hari sebelumnya agar beruntung. Bila hari ini sama saja dengan hari kemarin, manusia itu telaj merugi, apalagi bila lebih buruk. Kemudian,
  
'''Mencari Waktu untuk Sebuah Mobil Menyentuh Kecepatan Maksimal dengan Metode Runge Kutta'''
+
Pak Dai kemudian memberikan tugas kepada kami. Untuk materi yang disampaikan berupa penggunaan open modellica dengan kelas 'class' dan 'function', yaitu dimana kita menuliskan fungsi pada kelas 'function' kemudian kita panggil melalui kelas 'class'. Kami diberikan tugas tentang materi itu.
  
Diberi sebuah studi case untuk mencari waktu sebuah mobil untuk mendapatkan kecepatan maksimal. Dari konsep awal, cara urutan berfikirnya adalah dari ''real life case'', membuat model matematika atau numerik, dan membuat hasil analisis. Pertama kita akan mendapatkan permasalahan ''engineering''. Dari permasalahan tersebut, model matematika atau numerik dibuat. Metode numerik dapat berupa: brainware, software, dan hardware. Kali ini, kita akan menggunakan software untuk menyelesaikan studi kasus ini. Setelah mendapatkan model matematikanya, kita menggunakan metode analisis yang ingin digunakan. Saat ini, kita akan menggunakan runge kutta method.
+
====Tugas OpenModelica 2====
 +
Kami diberikan tugas oleh Pak Dai dengan menggunakan OpenModelica memecahkan permasalahan dengan sistem persamaan linear bermetode array. Inilah hasil belajar, mohon disimak secara saksama.
 +
<youtube width="200" height="100">https://youtu.be/gu5krOHs3ao</youtube>
  
'''Runge Kutta Method'''
+
==Minggu ke-3 (Rabu, 25 November 2020)==
Metode Runge-Kutta adalah alternatif lain dari metode deret Taylor yang tidak membutuhkan perhitungan turunan. Metode ini berusaha mendapatkan derajat ketelitian yang lebih tinggi, dan sekaligus menghindarkan keperluan mencari turunan yang lebih tinggi dengan jalan mengevaluasi fungsi f(x, y) pada titik terpilih dalam setiap selang langkah. Metode Runge-Kutta adalah metode PDB yang paling popuper karena banyak dipakai dalam praktek.
+
Pada hari ini, kami mereview tugas yang diberikan kami pada hari kemarin. Beberapa dari kami menceritakan dan berbagi apa kami dapat dan pelajari selama mengerjakan tugas kemarin melalui screen share zoom room meeting. Kami belajar bahwa permasalahan teknik dapat diselesaikan dengan metode numerik. Dalam tahapnya, terlebih dahulu hal yang dilakukan adalah analisis terhadap masalah tersebut. Kemudian, membuat model matematika dari hasil analisis tersebut. Kemudian, model matematika tersebut di-convert ke metode numerik dengan bahasa komputer yang kemudian dapat menghasilkan solusi.
  
Bentuk umum metoda Range-Kutta orde-n ialah:
+
===Tugas minggu ke-3===
 +
Kami diberikan tugas oleh Pak Dai menyelesaikan masalah dari trusses berikut:
 +
[[File:Soal Trusses 2 Jos.jpg|700px]]
  
''yr+1 = yr + a1k1 + a2k2 + ... + an kn''
+
1. Membuat kelas panggil
 +
[[File: Screenshots (211).png|800px|center]]
 +
[[File: Screenshots (212).png|800px|center]]
 +
[[File: Screenshots (213).png|800px|center]]
 +
[[File: Screenshots (214).png|800px|center]]
 +
[[File: Screenshots (215).png|800px|center]]
  
dengan a1, a2, ..., an adalah tetapan, dan
 
*k1  =  hf (xr , yr)
 
*k2  =  hf (xr + p1h, yr + q11k1)
 
*k3  =  hf (xr + p2h, yr + q21k1 + q22k2)
 
*kn  =  hf (xr + pn-1h, yr + qn-1,1 k1 + qn-1,2 k2 + ... + qn-1, n-1 kn-1)
 
  
Nilai ai, pi, qij dipilih sedemikian rupa sehingga meminimumkan galat per langkah, dan persamaan (P.8.24) akan sama dengan metode deret Taylor dari orde setinggi mungkin.
+
2. Membuat fungsi panggil
*Galat per langkah metode Runge-Kutta orde-n        : O(hn+1)
+
*Matrice Formation
*Galat longgokan metode Runge-Kutta orde-n          : O(hn)
+
[[File: Screenshots (218).png|800px|center]]
Orde metode = n
+
[[File: Screenshots (219).png|800px|center]]
  
== '''Review Materi 19 November 2019''' ==
+
*Global Element Matrice
 +
[[File: Screenshots (220).png|800px|center]]
 +
[[File: Screenshots (221).png|800px|center]]
  
 +
*Reaction Matrice Equation
 +
[[File: Screenshots (222).png|800px|center]]
  
Materi hari ini yang diberikan adalah tentang optimasi. Optimasi ini dilakukan untuk mengoptimasi suatu output agar optimum. Bekal optimasi ini sangat penting konsepnya karena akan dipakai di kebanyakan riset.  
+
==Minggu ke-4 (Rabu, 2 Desember 2020)==
 +
===Kuis===
 +
Kuis Flowchart untuk no. 4
 +
[[File: 488929.jpg|400px|center]]
 +
[[File: 488930.jpg|400px|center]]
  
Hal yang pertama dilakukan adalah melihat karakteristik fungsi tersebut untuk dapat melihat titik optimum. Hal-hal apa saja yang dapat diubah sehingga sistem.
+
===Tugas Minggu ke-4===
 +
Diagram class dan Penyelesaian dengan OpenModellica dari soal berikut
 +
[[File: Pr4tin.jpeg|600px|thumb|center|Soal Tugas ke-4]]
  
Pembuatan tugas kelompok ini ada di sini: [http://air.eng.ui.ac.id/index.php?title=Report_Tugas_Kelompok_11_:_Metode_Numerik_2019]
+
Saya mempelajari terlebih dahulu dari suadara Josiah Enrico dan Fashal Firdaus Amrullah. Step-step yang harus dilakukan untuk
 +
Pertama, terlebih dahulu membuat kelas trusses. Kelas trusses berisi matriks gaya dari trusses. Kemudian membuat fungsi matriks kekakuan. Kemudian membuat fungsi matriks global. Kemudian membuat penjumlahan kekakuan matriks global. Setelah itu membuat gauss jordan. Kemudian, membuat reaction.
  
 +
*Kelas fungsi utama
 +
[[File: 225.png|600px|center|]]
 +
[[File: 226.png|600px|center|]]
 +
[[File: 227.png|600px|center|]]
  
== '''Review Materi Selasa, 26 November 2019''' ==
+
*matriks kekakuan elemen
Sebelumnya Pak Dai meminta untuk mempresentasikan progress hasil kerja kelompok kami yang mencari sudut optimal airfoil dengan CFD SOF dan python untuk hari ini. Namun pada hari ini, Pak Dai memutuskan untuk melaksanakan kuis untuk pertemuan ini.
+
[[File: 228.png|600px|center|]]
 +
[[File: 229.png|600px|center|]]
 +
[[File: 230.png|600px|center|]]
  
== '''Review Materi Selasa, 3 Desember 2019''' ==
+
*matriks kekakuan global
 +
[[File: 231.png|600px|center|]]
 +
[[File: 232.png|600px|center|]]
 +
[[File: 233.png|600px|center|]]
  
Pada hari ini, mahasiswa ajar metode numerik Pak Dai mempresentasikan hasil kerja kelompok kami tentang optimasi sudut airfoil. Berikut adalah hasil presentasi kami.
+
*Total matriks kekauan global
 +
[[File: 234.png|600px|center|]]
  
=== '''Spesimen Airfoil''' ===
+
*kondisi impelemntasi boundary
Airfoil yang ditest harus dalam bentuk file .slt. Pembuatan airfoil dapat dilaksanakan dengan Autodesk Inventor.
+
[[File: 235.png|600px|center|]]
 +
[[File: 236.png|600px|center|]]
  
[[File:Airfoil model.png|600px]]
+
*Gauss jordan
 +
[[File: 237.png|600px|center|]]
  
Spesifikasi airfoil yang akan digunakan:
+
*gaya reaksi
 +
[[File: 238.png|600px|center|]]
  
*(s1223-il) S1223
+
Hasil yang didapat
*Selig S1223 high lift low Reynolds number airfoil
+
[[File: jawaban pr 4.png|200px|center]]
*Max thickness 12.1% at 19.8% chord
 
*Max camber 8.1% at 49% chord
 
  
=== '''Simulasi Airfoil''' ===
+
==Minggu ke-6 (Rabu, 16 Desember 2020)==
Airfoil yang digunakan dites dengan aplikasi CFDSOF. CFDSOF dapat mencari gaya angkat dan gaya hambat pada suatu objek spesimen. Dalam kasus ini, spesimen adalah airfoil. Namun, terdapat kesalahan teknis saat menggunakan CFDSOF. Ketika memulai membuat mesh, terdapat kesalahan eror berupa kesalahan pada coding dan akan berpengaruh kepada proses selanjutnya. Langkah yang dapat dilakukan adalah dengan menggunakan aplikasi lain seperti XLFR.
+
"Aplikasi Metode Numerik dalam Kasus Optimasi"
  
[[File:Xlsfr.jpg|600px]]
+
Dalam minggu ini, kami diajarkan bagaimana cara menggunakan metode Bracket oleh Bu Candra. Fungsi dari metode ini bisa untuk optimasi. Detilnya, kami belajar tentang one dimentional unconstrained optimization. Sembari Bu Candra mengajarkan Bracket, kami juga ikut mencoba cara membuat metode Bracket di Open Modellica mengikuti Bu Candra. Berikut hasil dari metode bracket untuk optimasi yang saya lakukan:
  
Sama seperti menggunakan CFDSOF, hal yang perlu dilakukan adalah menentukan Angle of Attack, properti fluida yang melewati airfoil dan lamanya waktu untuk mengamati simulasi.
+
*untuk fungsinya
 +
[[File: 295.png|800px|center]]
  
=== '''Pencarian Nilai Fd dan Fl''' ===
+
*untuk modelnya
Setelah melakukan simulasi, kita hanya perlu mengintegrasi variabel pada simulasi. Lalu mengulanginya dengan variasi AoA yang divariasikan dengan waktu pengamatan yang sama. Maka akan didapatkan,
+
[[File: 296.png|800px|center]]
  
[[File:Fd fl.png|600px]]
+
*untuk hasilnya
 +
[[File: hasil bracket.png|800px|center]]
  
=== '''Optimasi Airfoil''' ===
+
==Tugas Besar==
 +
 +
'''Pendahuluan'''
 +
----
 +
Kami diberikan tugas besar untuk melakukan optimasi dalam pemilihan bahan material dan luas penampang trusses yang akan digunakan untuk membuat konstruksi. Desain yang akan kami gunakan adalah sebagai berikut:
 +
[[File:Tugas Besar Metnum Geometri Jos.jpg|center]]
  
Setelah didapatkan data-data Drag dan Lift Force, yang perlu dilakukan selanjutnya, mencari AoA yang tepat agar mendapatkan Drag Force yang kecil dan Lift Force yang besar. Oleh karena itu, diperlukan peran komputer untuk menghitung dengan bahasa pemrograman yaitu Python agar dapat mencari Sudut Optimasi. Untuk mencari optimasi, diperlukan formula berikut pada Python,
+
'''Alur Pengerjaan'''
 +
----
 +
Alur pengerjaan dibuat untuk  mengurutkan prioritas pekerjaan yang harus dikerjakan. Berikut urutan pengerjaan tugas besar ini,
 +
[[File:Alur Pengerjaan.png|500px|center]]
  
[[File:Optimasi 1.png|500px]]
 
  
[[File:Optimasi 2.png|500px]]
+
'''Mendifinisikan Permasalahan'''
 +
----
 +
#Jenis Material adalah besi siku;
 +
#Mencari optimasi dari material yang digunakan dengan optimasi elastisitas dan optimasi luas penampang;
 +
#Dimensi struktur adalah (p x l x t) = 0,6 m x 0,75 m x 1,8 m;
 +
#Terdapat dua gaya yang memberikan stress sebesar F1 = 2000 N dan F2 = 1000 N.
  
[[File:Optimasi 3.png|500px]]
+
'''Asumsi'''
 +
----
 +
Dalam permaslahan ini, tidak semua data yang dibutuhkan tersedia dan diketahui di soal. Maka, penulis membuat beberapa asumsi yaitu:
 +
#Struktur paling bawah dianggap sebagai lantai rata dengan tanah karena tidak diketahui tinggi lantai di atas tanah (Δh = 0)
 +
#Safety factor adalah 2
 +
#Beban terdistribusi dengan node karena bersifat trusses
 +
#Batas displacement adalah 0,001 m sebelum buckling pada trusses paling atas
 +
#Ketinggian trusses dianggap sama per lantai yaitu 0,6 m.
 +
----
 +
'''Data Material'''
 +
[[File:Data material.jpg|center]]
  
Setelah dituliskan formula untuk mencari formula, mendefinisikan variabel-variabel yang dibutuhkan agar dijadikan pertimbangan oleh bahasa pemrograman pada perhitungan. Proses perhitungan seperti berikut,
+
'''Model Numerik'''
 +
*Untuk perhitungan displacement, reaction force, stress, dan safety factor:
 +
model Trusses_3D_Tugas_Besar_Safety
 +
 +
//define initial variable
 +
parameter Integer Points=size(P,1); //Number of Points
 +
parameter Integer Trusses=size(C,1); //Number of Trusses
 +
parameter Real Yield=215e6; //Yield Strength (Pa)
 +
parameter Real Area=0.000224;  //Area L Profile (Dimension=0.03, Thickness=0,004) (m2)
 +
parameter Real Elas=193e9;    //Elasticity SS 304  (Pa)
 +
 +
//define connection
 +
parameter Integer C[:,2]=[1,5;
 +
                          2,6;
 +
                          3,7;
 +
                          4,8;
 +
                          5,6;  //1st floor
 +
                          6,7;  //1st floor
 +
                          7,8;  //1st floor
 +
                          5,8;  //1st floor
 +
                          5,9;
 +
                          6,10;
 +
                          7,11;
 +
                          8,12;
 +
                          9,10; //2nd floor
 +
                          10,11;//2nd floor
 +
                          11,12;//2nd floor
 +
                          9,12; //2nd floor
 +
                          9,13;
 +
                          10,14;
 +
                          11,15;
 +
                          12,16;
 +
                          13,14;//3rd floor
 +
                          14,15;//3rd floor
 +
                          15,16;//3rd floor
 +
                        13,16];//3rd floor
 +
                                                             
 +
//define coordinates (please put orderly)
 +
parameter Real P[:,6]=[0.3,-0.375,0,1,1,1;    //1
 +
                        -0.3,-0.375,0,1,1,1;    //2
 +
                        -0.3,0.375,0,1,1,1;    //3
 +
                        0.3,0.375,0,1,1,1;      //4
 +
                           
 +
                        0.3,-0.375,0.6,0,0,0;  //5
 +
                        -0.3,-0.375,0.6,0,0,0;  //6
 +
                        -0.3,0.375,0.6,0,0,0;  //7
 +
                        0.3,0.375,0.6,0,0,0;    //8
 +
                           
 +
                        0.3,-0.375,1.2,0,0,0;  //9
 +
                        -0.3,-0.375,1.2,0,0,0;  //10 
 +
                        -0.3,0.375,1.2,0,0,0;  //11
 +
                        0.3,0.375,1.2,0,0,0;    //12
 +
                           
 +
                        0.3,-0.375,1.8,0,0,0;  //13
 +
                        -0.3,-0.375,1.8,0,0,0;  //14
 +
                        -0.3,0.375,1.8,0,0,0;  //15
 +
                        0.3,0.375,1.8,0,0,0];  //16
 +
                         
 +
//define external force (please put orderly)
 +
parameter Real F[Points*3]={0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,  
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,0,
 +
                            0,0,-500,
 +
                            0,0,-1000,
 +
                            0,0,-1000,
 +
                            0,0,-500};
 +
 +
//solution
 +
Real displacement[N], reaction[N];
 +
Real check[3];
 +
 +
Real stress1[Trusses];
 +
Real safety[Trusses];
 +
Real dis[3];
 +
Real Str[3];
 +
 
 +
protected
 +
parameter Integer N=3*Points;
 +
Real q1[3], q2[3], g[N,N], G[N,N], G_star[N,N], id[N,N]=identity(N), cx, cy, cz, L, X[3,3];
 +
Real err=10e-10, ers=10e-4;
 +
 +
algorithm
 +
//Creating Global Matrix
 +
G:=id;
 +
for i in 1:Trusses loop
 +
  for j in 1:3 loop
 +
  q1[j]:=P[C[i,1],j];
 +
  q2[j]:=P[C[i,2],j];
 +
  end for;
 +
     
 +
    //Solving Matrix
 +
    L:=Modelica.Math.Vectors.length(q2-q1);
 +
    cx:=(q2[1]-q1[1])/L;
 +
    cy:=(q2[2]-q1[2])/L;
 +
    cz:=(q2[3]-q1[3])/L;
 +
    X:=(Area*Elas/L)*[cx^2,cx*cy,cx*cz;
 +
                      cy*cx,cy^2,cy*cz;
 +
                      cz*cx,cz*cy,cz^2];
 +
 +
    //Transforming to global matrix
 +
    g:=zeros(N,N);
 +
    for m,n in 1:3 loop
 +
      g[3*(C[i,1]-1)+m,3*(C[i,1]-1)+n]:=X[m,n];
 +
      g[3*(C[i,2]-1)+m,3*(C[i,2]-1)+n]:=X[m,n];
 +
      g[3*(C[i,2]-1)+m,3*(C[i,1]-1)+n]:=-X[m,n];
 +
      g[3*(C[i,1]-1)+m,3*(C[i,2]-1)+n]:=-X[m,n];
 +
    end for; 
 +
 +
  G_star:=G+g;
 +
  G:=G_star;
 +
end for;
 +
 +
//Implementing boundary
 +
for x in 1:Points loop
 +
  if P[x,4] <> 0 then
 +
    for a in 1:Points*3 loop
 +
      G[(x*3)-2,a]:=0;
 +
      G[(x*3)-2,(x*3)-2]:=1;
 +
    end for;
 +
  end if;
 +
  if P[x,5] <> 0 then
 +
    for a in 1:Points*3 loop
 +
      G[(x*3)-1,a]:=0;
 +
      G[(x*3)-1,(x*3)-1]:=1;
 +
    end for;
 +
  end if;
 +
  if P[x,6] <> 0 then
 +
    for a in 1:Points*3 loop
 +
      G[x*3,a]:=0;
 +
      G[x*3,x*3]:=1;
 +
    end for;
 +
  end if;
 +
end for;
 +
 +
//Solving displacement
 +
displacement:=Modelica.Math.Matrices.solve(G,F);
 +
 +
//Solving reaction
 +
reaction:=(G_star*displacement)-F;
 +
 +
//Eliminating float error
 +
for i in 1:N loop
 +
  reaction[i]:=if abs(reaction[i])<=err then 0 else reaction[i];
 +
  displacement[i]:=if abs(displacement[i])<=err then 0 else displacement[i];
 +
end for;
 +
 +
//Checking Force
 +
check[1]:=sum({reaction[i] for i in (1:3:(N-2))})+sum({F[i] for i in (1:3:(N-2))});
 +
check[2]:=sum({reaction[i] for i in (2:3:(N-1))})+sum({F[i] for i in (2:3:(N-1))});
 +
check[3]:=sum({reaction[i] for i in (3:3:N)})+sum({F[i] for i in (3:3:N)});
 +
 
 +
for i in 1:3 loop
 +
  check[i] := if abs(check[i])<=ers then 0 else check[i];
 +
end for;
 +
 +
//Calculating stress in each truss
 +
for i in 1:Trusses loop
 +
for j in 1:3 loop
 +
  q1[j]:=P[C[i,1],j];
 +
  q2[j]:=P[C[i,2],j];
 +
  dis[j]:=abs(displacement[3*(C[i,1]-1)+j]-displacement[3*(C[i,2]-1)+j]);
 +
end for;
 +
     
 +
    //Solving Matrix
 +
    L:=Modelica.Math.Vectors.length(q2-q1);
 +
    cx:=(q2[1]-q1[1])/L;
 +
    cy:=(q2[2]-q1[2])/L;
 +
    cz:=(q2[3]-q1[3])/L;
 +
    X:=(Elas/L)*[cx^2,cx*cy,cx*cz;
 +
                cy*cx,cy^2,cy*cz;
 +
                cz*cx,cz*cy,cz^2];
 +
   
 +
    Str:=(X*dis);
 +
    stress1[i]:=Modelica.Math.Vectors.length(Str);
 +
end for;
 +
 +
//Safety factor
 +
for i in 1:Trusses loop
 +
  if stress1[i]>0 then
 +
    safety[i]:=Yield/stress1[i];
 +
  else
 +
    safety[i]:=0;
 +
  end if;
 +
end for;
 +
 +
end Trusses_3D_Tugas_Besar_Safety;
  
[[File:Optimasi 4.jpg|400px]]
 
  
Dari hasil perhitungan optimasi sudut serang airfoil untuk mendapatkan Drag Force yang minimal dan Lift Force yang maksimal, didapatkan AoA yang optimum sebesar 18.25 derajat
+
*Untuk membuat kurva curve fitting:
 +
function Curve_Fitting
 +
 +
input Real X[:];
 +
input Real Y[size(X,1)];
 +
input Integer order=2;
 +
output Real Coe[order+1];
 +
 +
protected
 +
Real Z[size(X,1),order+1];
 +
Real ZTr[order+1,size(X,1)];
 +
Real A[order+1,order+1];
 +
Real B[order+1];
 +
 +
algorithm
 +
 +
for i in 1:size(X,1) loop
 +
  for j in 1:(order+1) loop
 +
  Z[i,j]:=X[i]^(order+1-j);
 +
  end for;
 +
end for;
 +
ZTr:=transpose(Z);
 +
 +
A:=ZTr*Z;
 +
B:=ZTr*Y;
 +
Coe:=Modelica.Math.Matrices.solve(A,B);
 +
 +
end Curve_Fitting;
  
== '''Review Materi Selasa, 10 Desember''' ==
 
Pada kelas hari ini, kami membahas tentang Artificial Neural Network (ANN). ANN adalah sistem komputasi yang terinspirasi dari jaringan saraf biologis yang membentuk otak hewan. Sistem semacam itu "belajar" untuk melakukan tugas dengan mempertimbangkan contoh-contoh, umumnya tanpa diprogram dengan aturan spesifik tugas. Misalnya, dalam pengenalan gambar, mereka mungkin belajar mengidentifikasi gambar yang mengandung kucing dengan menganalisis contoh gambar yang telah secara manual dilabeli sebagai "kucing" atau "tidak ada kucing" dan menggunakan hasil untuk mengidentifikasi kucing di gambar lain. Mereka melakukan ini tanpa sepengetahuan kucing sebelumnya, misalnya, bahwa mereka memiliki bulu, ekor, kumis dan wajah seperti kucing. Sebaliknya, mereka secara otomatis menghasilkan karakteristik identifikasi dari contoh yang mereka proses.
 
  
Kami menggunakan ANN untuk mencari sudut otpimal dari airfoil. Pertama, kita harus mendata gaya hambat (F drag) / gaya angkat (F lift) setiap sudut.
+
* Untuk golden section:
 +
model Opt_Gold
 +
 +
parameter Real xd[:];
 +
parameter Real yd[size(xd,1)];
 +
parameter Real xlo=87e-6;
 +
parameter Real xhi=504e-6;
 +
parameter Integer N=10; // maximum iteration
 +
parameter Real es=0.0001; // maximum error
 +
 +
Real f1[N], f2[N], x1[N], x2[N], ea[N], y[3];
 +
Real xopt,  fx;
 +
protected
 +
Real d, xl, xu, xint, R=(5^(1/2)-1)/2;
 +
 +
algorithm
 +
xl := xlo;
 +
xu := xhi;
 +
y  := Curve_Fitting(xd,yd);
 +
 
 +
for i in 1:N loop
 +
  d:= R*(xu-xl);
 +
  x1[i]:=xl+d;
 +
  x2[i]:=xu-d;
 +
  f1[i]:=y[1]*x1[i]^2+y[2]*x1[i]+y[3];
 +
  f2[i]:=y[1]*x2[i]^2+y[2]*x2[i]+y[3];
 +
  xint:=xu-xl;
 +
 
 +
  if f1[i]>f2[i] then
 +
    xl:=x2[i];
 +
    xopt:=x1[i];
 +
    fx:=f1[i];
 +
    else
 +
      xu:=x1[i];
 +
      xopt:=x2[i];
 +
      fx:=f2[i];
 +
  end if;
 +
 
 +
  ea[i]:=(1-R)*abs((xint)/xopt);
 +
  if ea[i]<es then
 +
    break;
 +
  end if;
 +
end for;
 +
 +
end Opt_Gold;
  
[[File: Grafik_drag_lift_vs._angle.PNG]]
+
'''Hasil Perhitungan'''
 +
----
 +
Koefisien yang didapat dari data harga variasi area dan variasi material adalah sebagai berikut (coef untuk variasi area dan coef 2-4 untuk variasi material)
 +
[[File:coef1.jpg|center]]
 +
[[File:coef2.jpg|center]]
  
Setelah mendapatkan data Frag/Flift vs. angle of attack, kita membuat algoritma di google colab. Google colab mirip fungsinya dengan Jupyter, hanya saja ada beberapa fitur yang berbeda.Kami memasukkan algoritma yang telah diberikan oleh asisten dosen, Bang Timo. Di dalamnya sudah ada normalize dan hasill output real vs. output prediction ANN.
+
Kemudian, coefisien tersebut digunakan untuk mendapatkan variasi yang tidak tersedia dari sumber
 +
[[File:Data tubes.jpg|center]]
  
[[File: Google_colab_1.PNG]]
 
  
[[File: Google_colab_2.PNG]]
+
=='''Jawaban UAS'''==
  
[[File: Google_colab_3.PNG]]
+
[[File: uas1.jpg|600px|left]]
  
[[File: Google_colab_4.PNG]]
+
[[File: uas2.jpg|600px|left]]
  
[[File: Google_colab_5.PNG]]
 
  
[[File: Google_colab_6.PNG]]
+
[[File: uas3.jpg|600px|left]]
  
[[File: Google_colab_7.PNG]]
+
 
 +
[[File: uas4.jpg|600px|left]]
 +
 
 +
 
 +
[[File: uas56.jpg|600px|left]]

Latest revision as of 18:00, 13 January 2021

Profil

Crop muka.jpg

Saya Muhammad Fadhil Zuhdi, akrab dipanggil Fadhil yang merupakan mahasiswa teknik mesin angkatan 2017 dengan NPM 1706036186. Di wiki ini, saya akan menulis apa saja yang sudah saya pelajari di kelas metode numerik 02 bersama Pak DAI.

Pelajaran yang didapatkan bersama Pak Engkos

Sebelum UTS Metode Numerik, kami kuliah bersama Pak Engkos sebagai dosen kami. Saya mendapatkan beberapa materi yang tentang metode numerik seperti:

  • perhitungan deret Taylor
  • mencari akar-akar dengan metode bisection, secant, dan newton-rhapson
  • penyelesaian masalah dengan deret Taylor
  • interpolasi dan regresi linear dengan matriks

Hal yang belum saya pahami adalah pengaplikasiannya ke excel yang menurut saya sedikit rumit karena saya belum terlalu memahami pola maisng-masing metode

Pertemuan Pertama (Rabu, 11 November 2020)

Pada pertemuan pertama kelas Metode Numerik, saya belajar beberapa hal bersama Pak Ahmad Indra (DAI). Pertama, saya belajar cara menggunakan wiki air dari Pak Dai. Wiki Air adalah platform untuk para mahasiswa Pak Dai untuk menulis. Dari pertemuan ini, saya mendapatkan beberapa hal, yaitu konsep metode numerik, aplikasi metode numerik, penerapan metode numerik ke ranah teknik, dan menjadi orang yang beradab. Pak DAI juga menjelaskan bahwa komputer secanggih apapun tetap memiliki batasan karena komputer merupakan karya dari manusia yang penuh keterbatasan.

Dari kelas ini, kami juga mendiskusikan tentang apa itu belajar. Manfaat belajar sangatlah banyak. Manfaat utama belajar adalah untuk mendapatkan ilmu. Namun, belajar pelajaran kehidupan juga sama pentingnya dengan belajar pelajaran akademis. Kita juga harus sering merenungkan aapa saja yang sudah kita pelajari. Kita harus merefleksikan diri sendiri sudah bermanfaatkah yang sudah kita pelajari dan sudah berapa banyak ilmu yang sudah kita amalkan.

Kami diberikan tugas oleh Pak DAI tentang Open Modellica. Kami diperintahkan untuk belajar tentang Open Modellica, merekam dan menguploadnya ke Youtube, dan memberikan tautan video dari Youtube kami di wiki masing-masing.


Tugas OpenModelica 1

Sebelumnya kami diberikan tugas pembelajaran metode numerik dengan OpenModelica. Di sini, saya mengangkat permasalahan gaya gesek statis dengan mencari koefisien gaya gesek statis di OpenModelica. hasil pembelajaran saya dapat ditonton di tautan berikut:

Terima kasih!

Minggu ke-2 (Rabu, 18 November 2020)

Pada hari ini, kami belajar bagaimana cara menggunakan OpenModelica. Pak Dai mereview tugas-tugas kami dan membahas apa saja kesulitan yang dialami mahasiswa dalam mengerjakan tugas kemarin bersama asisten dosen, Bang Edo. Hampir setiap anak menceritakan yang dilakukannya bersama OpenModeilca untuk menyelesaikan permasalahan yang dipilih. Dalam kelas Pak Dai juga berpesan bahwa belajar sebagai manusia itu tidak akan habisnya. Kita akan selalu melakukan hal yang bernama "belajar" dari buaian sampe ke liang lahat. Manusia harus selalu berkembang dan harus lebih baik dari hari sebelumnya agar beruntung. Bila hari ini sama saja dengan hari kemarin, manusia itu telaj merugi, apalagi bila lebih buruk. Kemudian,

Pak Dai kemudian memberikan tugas kepada kami. Untuk materi yang disampaikan berupa penggunaan open modellica dengan kelas 'class' dan 'function', yaitu dimana kita menuliskan fungsi pada kelas 'function' kemudian kita panggil melalui kelas 'class'. Kami diberikan tugas tentang materi itu.

Tugas OpenModelica 2

Kami diberikan tugas oleh Pak Dai dengan menggunakan OpenModelica memecahkan permasalahan dengan sistem persamaan linear bermetode array. Inilah hasil belajar, mohon disimak secara saksama.

Minggu ke-3 (Rabu, 25 November 2020)

Pada hari ini, kami mereview tugas yang diberikan kami pada hari kemarin. Beberapa dari kami menceritakan dan berbagi apa kami dapat dan pelajari selama mengerjakan tugas kemarin melalui screen share zoom room meeting. Kami belajar bahwa permasalahan teknik dapat diselesaikan dengan metode numerik. Dalam tahapnya, terlebih dahulu hal yang dilakukan adalah analisis terhadap masalah tersebut. Kemudian, membuat model matematika dari hasil analisis tersebut. Kemudian, model matematika tersebut di-convert ke metode numerik dengan bahasa komputer yang kemudian dapat menghasilkan solusi.

Tugas minggu ke-3

Kami diberikan tugas oleh Pak Dai menyelesaikan masalah dari trusses berikut: Soal Trusses 2 Jos.jpg

1. Membuat kelas panggil

Screenshots (211).png
Screenshots (212).png
Screenshots (213).png
Screenshots (214).png
Screenshots (215).png


2. Membuat fungsi panggil

  • Matrice Formation
Screenshots (218).png
Screenshots (219).png
  • Global Element Matrice
Screenshots (220).png
Screenshots (221).png
  • Reaction Matrice Equation
Screenshots (222).png

Minggu ke-4 (Rabu, 2 Desember 2020)

Kuis

Kuis Flowchart untuk no. 4

488929.jpg
488930.jpg

Tugas Minggu ke-4

Diagram class dan Penyelesaian dengan OpenModellica dari soal berikut

Soal Tugas ke-4

Saya mempelajari terlebih dahulu dari suadara Josiah Enrico dan Fashal Firdaus Amrullah. Step-step yang harus dilakukan untuk Pertama, terlebih dahulu membuat kelas trusses. Kelas trusses berisi matriks gaya dari trusses. Kemudian membuat fungsi matriks kekakuan. Kemudian membuat fungsi matriks global. Kemudian membuat penjumlahan kekakuan matriks global. Setelah itu membuat gauss jordan. Kemudian, membuat reaction.

  • Kelas fungsi utama
225.png
226.png
227.png
  • matriks kekakuan elemen
228.png
229.png
230.png
  • matriks kekakuan global
231.png
232.png
233.png
  • Total matriks kekauan global
234.png
  • kondisi impelemntasi boundary
235.png
236.png
  • Gauss jordan
237.png
  • gaya reaksi
238.png

Hasil yang didapat

Jawaban pr 4.png

Minggu ke-6 (Rabu, 16 Desember 2020)

"Aplikasi Metode Numerik dalam Kasus Optimasi"

Dalam minggu ini, kami diajarkan bagaimana cara menggunakan metode Bracket oleh Bu Candra. Fungsi dari metode ini bisa untuk optimasi. Detilnya, kami belajar tentang one dimentional unconstrained optimization. Sembari Bu Candra mengajarkan Bracket, kami juga ikut mencoba cara membuat metode Bracket di Open Modellica mengikuti Bu Candra. Berikut hasil dari metode bracket untuk optimasi yang saya lakukan:

  • untuk fungsinya
295.png
  • untuk modelnya
296.png
  • untuk hasilnya
Hasil bracket.png

Tugas Besar

Pendahuluan


Kami diberikan tugas besar untuk melakukan optimasi dalam pemilihan bahan material dan luas penampang trusses yang akan digunakan untuk membuat konstruksi. Desain yang akan kami gunakan adalah sebagai berikut:

Tugas Besar Metnum Geometri Jos.jpg

Alur Pengerjaan


Alur pengerjaan dibuat untuk mengurutkan prioritas pekerjaan yang harus dikerjakan. Berikut urutan pengerjaan tugas besar ini,

Alur Pengerjaan.png


Mendifinisikan Permasalahan


  1. Jenis Material adalah besi siku;
  2. Mencari optimasi dari material yang digunakan dengan optimasi elastisitas dan optimasi luas penampang;
  3. Dimensi struktur adalah (p x l x t) = 0,6 m x 0,75 m x 1,8 m;
  4. Terdapat dua gaya yang memberikan stress sebesar F1 = 2000 N dan F2 = 1000 N.

Asumsi


Dalam permaslahan ini, tidak semua data yang dibutuhkan tersedia dan diketahui di soal. Maka, penulis membuat beberapa asumsi yaitu:

  1. Struktur paling bawah dianggap sebagai lantai rata dengan tanah karena tidak diketahui tinggi lantai di atas tanah (Δh = 0)
  2. Safety factor adalah 2
  3. Beban terdistribusi dengan node karena bersifat trusses
  4. Batas displacement adalah 0,001 m sebelum buckling pada trusses paling atas
  5. Ketinggian trusses dianggap sama per lantai yaitu 0,6 m.

Data Material

Data material.jpg

Model Numerik

  • Untuk perhitungan displacement, reaction force, stress, dan safety factor:
model Trusses_3D_Tugas_Besar_Safety

//define initial variable
parameter Integer Points=size(P,1); //Number of Points
parameter Integer Trusses=size(C,1); //Number of Trusses
parameter Real Yield=215e6; //Yield Strength (Pa)
parameter Real Area=0.000224;   //Area L Profile (Dimension=0.03, Thickness=0,004) (m2)
parameter Real Elas=193e9;     //Elasticity SS 304  (Pa)

//define connection
parameter Integer C[:,2]=[1,5; 
                          2,6;
                          3,7;
                          4,8;
                          5,6;  //1st floor
                          6,7;  //1st floor
                          7,8;  //1st floor
                          5,8;  //1st floor
                          5,9;
                         6,10;
                         7,11;
                         8,12;
                         9,10; //2nd floor
                         10,11;//2nd floor 
                         11,12;//2nd floor
                          9,12; //2nd floor
                          9,13;
                         10,14;
                         11,15;
                         12,16;
                         13,14;//3rd floor
                         14,15;//3rd floor
                         15,16;//3rd floor
                        13,16];//3rd floor
                                                              
//define coordinates (please put orderly)
parameter Real P[:,6]=[0.3,-0.375,0,1,1,1;     //1
                       -0.3,-0.375,0,1,1,1;    //2
                       -0.3,0.375,0,1,1,1;     //3
                       0.3,0.375,0,1,1,1;      //4
                           
                       0.3,-0.375,0.6,0,0,0;   //5
                       -0.3,-0.375,0.6,0,0,0;  //6
                       -0.3,0.375,0.6,0,0,0;   //7
                       0.3,0.375,0.6,0,0,0;    //8
                            
                       0.3,-0.375,1.2,0,0,0;   //9
                       -0.3,-0.375,1.2,0,0,0;  //10  
                       -0.3,0.375,1.2,0,0,0;   //11
                       0.3,0.375,1.2,0,0,0;    //12
                            
                       0.3,-0.375,1.8,0,0,0;   //13
                       -0.3,-0.375,1.8,0,0,0;  //14
                       -0.3,0.375,1.8,0,0,0;   //15
                       0.3,0.375,1.8,0,0,0];   //16
                          
//define external force (please put orderly)
parameter Real F[Points*3]={0,0,0,
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,0, 
                            0,0,-500, 
                            0,0,-1000, 
                            0,0,-1000, 
                            0,0,-500}; 

//solution
Real displacement[N], reaction[N];
Real check[3];

Real stress1[Trusses];
Real safety[Trusses];
Real dis[3];
Real Str[3];
 
protected
parameter Integer N=3*Points;
Real q1[3], q2[3], g[N,N], G[N,N], G_star[N,N], id[N,N]=identity(N), cx, cy, cz, L, X[3,3];
Real err=10e-10, ers=10e-4;

algorithm
//Creating Global Matrix
G:=id;
for i in 1:Trusses loop
 for j in 1:3 loop
  q1[j]:=P[C[i,1],j];
  q2[j]:=P[C[i,2],j];
 end for;
      
   //Solving Matrix
   L:=Modelica.Math.Vectors.length(q2-q1);
   cx:=(q2[1]-q1[1])/L;
   cy:=(q2[2]-q1[2])/L;
   cz:=(q2[3]-q1[3])/L; 
   X:=(Area*Elas/L)*[cx^2,cx*cy,cx*cz;
                     cy*cx,cy^2,cy*cz;
                     cz*cx,cz*cy,cz^2];

   //Transforming to global matrix
   g:=zeros(N,N); 
   for m,n in 1:3 loop
     g[3*(C[i,1]-1)+m,3*(C[i,1]-1)+n]:=X[m,n];
     g[3*(C[i,2]-1)+m,3*(C[i,2]-1)+n]:=X[m,n];
     g[3*(C[i,2]-1)+m,3*(C[i,1]-1)+n]:=-X[m,n];
     g[3*(C[i,1]-1)+m,3*(C[i,2]-1)+n]:=-X[m,n];
   end for;  

 G_star:=G+g;
 G:=G_star;
end for;

//Implementing boundary
for x in 1:Points loop
 if P[x,4] <> 0 then
   for a in 1:Points*3 loop
     G[(x*3)-2,a]:=0;
     G[(x*3)-2,(x*3)-2]:=1;
   end for;
 end if;
 if P[x,5] <> 0 then
   for a in 1:Points*3 loop
     G[(x*3)-1,a]:=0;
     G[(x*3)-1,(x*3)-1]:=1;
   end for;
 end if;
 if P[x,6] <> 0 then
   for a in 1:Points*3 loop
     G[x*3,a]:=0;
     G[x*3,x*3]:=1;
   end for;
 end if;
end for;

//Solving displacement
displacement:=Modelica.Math.Matrices.solve(G,F);

//Solving reaction
reaction:=(G_star*displacement)-F;

//Eliminating float error
for i in 1:N loop
 reaction[i]:=if abs(reaction[i])<=err then 0 else reaction[i];
 displacement[i]:=if abs(displacement[i])<=err then 0 else displacement[i];
end for;

//Checking Force
check[1]:=sum({reaction[i] for i in (1:3:(N-2))})+sum({F[i] for i in (1:3:(N-2))});
check[2]:=sum({reaction[i] for i in (2:3:(N-1))})+sum({F[i] for i in (2:3:(N-1))});
check[3]:=sum({reaction[i] for i in (3:3:N)})+sum({F[i] for i in (3:3:N)});
  
for i in 1:3 loop
 check[i] := if abs(check[i])<=ers then 0 else check[i];
end for;

//Calculating stress in each truss
for i in 1:Trusses loop
for j in 1:3 loop
  q1[j]:=P[C[i,1],j];
  q2[j]:=P[C[i,2],j];
  dis[j]:=abs(displacement[3*(C[i,1]-1)+j]-displacement[3*(C[i,2]-1)+j]);
end for;
      
   //Solving Matrix
   L:=Modelica.Math.Vectors.length(q2-q1);
   cx:=(q2[1]-q1[1])/L;
   cy:=(q2[2]-q1[2])/L;
   cz:=(q2[3]-q1[3])/L; 
   X:=(Elas/L)*[cx^2,cx*cy,cx*cz;
                cy*cx,cy^2,cy*cz;
                cz*cx,cz*cy,cz^2];
   
   Str:=(X*dis);
   stress1[i]:=Modelica.Math.Vectors.length(Str);
end for;

//Safety factor
for i in 1:Trusses loop
 if stress1[i]>0 then
   safety[i]:=Yield/stress1[i];
 else
   safety[i]:=0;
 end if; 
end for;

end Trusses_3D_Tugas_Besar_Safety;


  • Untuk membuat kurva curve fitting:
function Curve_Fitting

input Real X[:];
input Real Y[size(X,1)];
input Integer order=2;
output Real Coe[order+1];

protected
Real Z[size(X,1),order+1];
Real ZTr[order+1,size(X,1)];
Real A[order+1,order+1];
Real B[order+1];

algorithm

for i in 1:size(X,1) loop
 for j in 1:(order+1) loop
 Z[i,j]:=X[i]^(order+1-j);
 end for;
end for;
ZTr:=transpose(Z);

A:=ZTr*Z;
B:=ZTr*Y;
Coe:=Modelica.Math.Matrices.solve(A,B);

end Curve_Fitting;


  • Untuk golden section:
model Opt_Gold

parameter Real xd[:];
parameter Real yd[size(xd,1)];
parameter Real xlo=87e-6;
parameter Real xhi=504e-6; 
parameter Integer N=10; // maximum iteration
parameter Real es=0.0001; // maximum error

Real f1[N], f2[N], x1[N], x2[N], ea[N], y[3];
Real xopt,  fx;
protected
Real d, xl, xu, xint, R=(5^(1/2)-1)/2;

algorithm
xl := xlo; 
xu := xhi;
y  := Curve_Fitting(xd,yd);
 
for i in 1:N loop
 d:= R*(xu-xl);
 x1[i]:=xl+d;
 x2[i]:=xu-d;
 f1[i]:=y[1]*x1[i]^2+y[2]*x1[i]+y[3];
 f2[i]:=y[1]*x2[i]^2+y[2]*x2[i]+y[3];
 xint:=xu-xl;
 
 if f1[i]>f2[i] then
   xl:=x2[i];
   xopt:=x1[i];
   fx:=f1[i];
   else
     xu:=x1[i];
     xopt:=x2[i];
     fx:=f2[i];
 end if;
 
 ea[i]:=(1-R)*abs((xint)/xopt);
 if ea[i]<es then
   break;
 end if;
end for;

end Opt_Gold;

Hasil Perhitungan


Koefisien yang didapat dari data harga variasi area dan variasi material adalah sebagai berikut (coef untuk variasi area dan coef 2-4 untuk variasi material)

Coef1.jpg
Coef2.jpg

Kemudian, coefisien tersebut digunakan untuk mendapatkan variasi yang tidak tersedia dari sumber

Data tubes.jpg


Jawaban UAS

Uas1.jpg
Uas2.jpg


Uas3.jpg


Uas4.jpg


Uas56.jpg