Difference between revisions of "Iman Herlana"

From ccitonlinewiki
Jump to: navigation, search
Line 48: Line 48:
 
Di pertemuan ini, kita kembali dipersilahkan untuk mempresentasikan hasil kerja kita masing masing. Ternyata apa yang diharapkan pak Dai adalah kita mencoba membuat rumus sendiri. mayoritas mahasiswa kelas Metode Numerik 02 mengerjakan tugasnya dengan menggunakan rumus yang sudah ada pada Open Modellica. ada salah satu mahasiswa yang membuat rumus sendiri yaitu bang Cristo. Berikut code yang digunakan oleh bang Cristo (disalin langsung dari milik bang Cristo sehingga hak milik adalah milik bang Cristo)
 
Di pertemuan ini, kita kembali dipersilahkan untuk mempresentasikan hasil kerja kita masing masing. Ternyata apa yang diharapkan pak Dai adalah kita mencoba membuat rumus sendiri. mayoritas mahasiswa kelas Metode Numerik 02 mengerjakan tugasnya dengan menggunakan rumus yang sudah ada pada Open Modellica. ada salah satu mahasiswa yang membuat rumus sendiri yaitu bang Cristo. Berikut code yang digunakan oleh bang Cristo (disalin langsung dari milik bang Cristo sehingga hak milik adalah milik bang Cristo)
  
function GaussJordan
+
function GaussJordan
input Real [:,:] A;//matriks awal
+
input Real [:,:] A;//matriks awal
output Real [:,:] B;//matriks tereduksi
+
output Real [:,:] B;//matriks tereduksi
 
+
protected  
protected  
+
Integer h = 1;    //pivot row
Integer h = 1;    //pivot row
+
Integer k = 1;    //pivot coloumn
Integer k = 1;    //pivot coloumn
+
Integer m = size(A,1); //jumlah baris
Integer m = size(A,1); //jumlah baris
+
Integer n = size(A,2); //jumlah kolom
Integer n = size(A,2); //jumlah kolom
+
Integer c = 0;
Integer c = 0;
+
Integer max_row; // Row index of max number in pivot column
Integer max_row; // Row index of max number in pivot column
+
Real [:] pivot_column;
Real [:] pivot_column;
+
Real [:] pivot_row;
Real [:] pivot_row;
+
Real [:,:] temp_array;
Real [:,:] temp_array;
+
Real r;
Real r;
+
Real float_error = 10e-10;
Real float_error = 10e-10;
+
algorithm
 
+
B := A;
algorithm
+
while h <= m and k <= n loop
B := A;
+
  for i in 1 : m loop
while h <= m and k <= n loop
+
    for j in 1 : n loop
for i in 1 : m loop
+
    if abs(B[i,j]) <= float_error then
  for j in 1 : n loop
+
      B[i,j] := 0;
    if abs(B[i,j]) <= float_error then
+
      end if;
      B[i,j] := 0;
+
    end for;
    end if;
+
  end for;
  end for;
+
//Finding pivot  
end for;
+
  pivot_column:= {B[i,h] for i in h:m};
//Finding pivot  
+
    //Baris terbawah yang mempunyai dengan pivot tertinggi
pivot_column:= {B[i,h] for i in h:m};
+
    c:=h-1;
  //Baris terbawah yang mempunyai dengan pivot tertinggi
+
    for element in pivot_column loop
  c:=h-1;
+
      c:= c+1;
  for element in pivot_column loop
+
      if abs(element)== max(abs(pivot_column)) then
    c:= c+1;
+
        max_row :=c;
    if abs(element)== max(abs(pivot_column)) then
+
      end if;
      max_row :=c;
+
    end for;  
    end if;
+
  //Jika tidak ada pivot di kolom ini, pindah ke kolom selanjutnya
  end for;  
+
  if B[max_row,k] == 0 then
//Jika tidak ada pivot di kolom ini, pindah ke kolom selanjutnya
+
    k:=k+1;
if B[max_row,k] == 0 then
+
  else  
  k:=k+1;
+
    // tukar row h - max_row
else  
+
    temp_array := B;
  // tukar row h - max_row
+
    temp_array[h] := B[max_row];
  temp_array := B;
+
    temp_array[max_row] := B[h];
  temp_array[h] := B[max_row];
+
    B:= temp_array;
  temp_array[max_row] := B[h];
+
    //devide pivot row by pivot number
  B:= temp_array;
+
    B[h] := B[h]/B[h,k];
  //devide pivot row by pivot number
+
    for i in (h+1) :m loop
    B[h] := B[h]/B[h,k];
+
      r := B[i,k]/B[h,k];
    for i in (h+1) :m loop
+
      B[i,k]:=0;
      r := B[i,k]/B[h,k];
+
      for j in (k+1) : n loop
    B[i,k]:=0;
+
        B[i,j] := B[i,j]-B[h,j] * r;
    for j in (k+1) : n loop
+
      end for;
      B[i,j] := B[i,j]-B[h,j] * r;
+
    end for;
    end for;
+
    //pindah ke pivot kolom dan row selanjutnya
  end for;
+
    h := h+1;
  //pindah ke pivot kolom dan row selanjutnya
+
    k := k+1;   
  h := h+1;
+
  end if;
  k := k+1;   
+
  end while;
end if;
+
// proses dari kanan atas
end while;
+
h :=m;
// proses dari kanan atas
+
k :=n;
h :=m;
+
while h >=1 and k>=1 loop
k :=n;
+
  //dealing with error
while h >=1 and k>=1 loop
+
  for i in 1:m loop
//dealing with error
+
    for j in 1:n loop
for i in 1:m loop
+
      if abs(B[i,j]) <=float_error then
  for j in 1:n loop
+
        B[i,j]:=0;
    if abs(B[i,j]) <=float_error then
+
      end if;
      B[i,j]:=0;
+
    end for;
    end if;
+
  end for;  
  end for;
+
//finding pivot  
end for;  
+
    pivot_row := {B[h,i] for i in 1:k};
//finding pivot  
+
    //Get position index k of pivot  
  pivot_row := {B[h,i] for i in 1:k};
+
    c := 0;
  //Get position index k of pivot  
+
    for element in pivot_row loop
  c := 0;
+
      c := c+1;
  for element in pivot_row loop
+
      if element <> 0 then
    c := c+1;
+
        break;
    if element <> 0 then
+
      end if;
      break;
+
    end for;
    end if;
+
    k:= c;
  end for;
+
  // no pivot in this row, move to next row
  k:= c;
+
  if B[h,k] == 0 then  
// no pivot in this row, move to next row
+
    h:= h-1;
if B[h,k] == 0 then  
+
  else
  h:= h-1;
+
    //perform row operatation
else
+
    for i in 1:(h-1) loop
  //perform row operatation
+
      r := B[i,k];
  for i in 1:(h-1) loop
+
      B[i] := B[i] - B[h] *r;
    r := B[i,k];
+
    end for;
    B[i] := B[i] - B[h] *r;
+
    //move to next pivot row dan column
  end for;
+
    h:=h+1;
  //move to next pivot row dan column
+
    k:=k+1;
  h:=h+1;
+
  end if;  
  k:=k+1;
+
end while;     
end if;  
+
end GaussJordan;
end while;     
 
end GaussJordan;
 

Revision as of 14:11, 2 December 2020

Biodata

Iman Herlana.jpg

Nama  : Iman Herlana

NPM  : 1906356134

TTL  : Jakarta, 2 Juni 2000

Domisili  : Jakarta


Saya merupakan mahasiswa Fakultas Teknik Universitas Indonesia dengan Program Studi S1 Reguler Teknik Mesin. Saya tinggal di daerah Manggarai, Tebet, Jakarta Selatan. Banyak hal yang pada akhirnya membuat saya bisa sampai ke FTUI yang sekarang ini. Mulai dari rasa penasaran dengan fisika, hingga adanya teman seperjuangan yang berhasil mempersuasi saya untuk lebih giat belajar. Saya bersyukur menjadi salah satu dari sekian orang yang beruntung dapat diterima di FTUI.


Metode Numerik

Di semester ini, saya berhadapan dengan sebuah mata kuliah yang cukup menantang yaitu metode numerik. Sebelum UTS, saya sudah mempelajari beberapa metode pencarian akar persamaan, regresi, interpolasi, dan turunan numerik. Saya berharap dapat lebih memahami lagi terkait metode numerik, dan dapat menggunakannya pada kehidupan nyata baik dalam akademik maupun karier nantinya.

Minggu 1 (11 November 2020)

Tujuan belajar Metode Numerik:

  • 1. Memahami konsep-konsep dan prinsip-prinsip dasar dalam metode numerik
  • 2. Menerapkan pemahaman yang didapat ke dalam model numerik
  • 3. Mampu menerapkan pemahaman yang didapat ke dalam persoalan teknik
  • 4. Mendapat nilai tambah sehingga menjadi orang yang beradab

Penggunaan tujuan diibaratkan dalam sebuah perjalanan. Sehingga setiap hal yang kita lakukan adalah untuk mencapai tujuan tersebut. Untuk itulah tujuan dibuat agar arah perjalanan dapat lebih terstruktur, begitu pula dalam belajar.

Bit merupakan singkatan dari Binary Digit, adalah kemampuan operating system dalam memproses jumlah data dalam satu hitungan waktu.

Tugas Minggu 1

di tugas pertama ini, kami diminta untuk menggunakan aplikasi OpenModelica untuk menyelesaikan permasalahan tertentu, kemudian membuat videonya. dalam hal ini, saya mencoba mencari properties pada keadaan tekanan tertentu dari Saturated Water (Liquid - Vapor) menggunakan metode interpolasi dengan melihat nilai-nilai yang dapat ditemukan pada tabel di buku "Fundamental of Engineering Thermodynamics"

Berikut video pembuatan tugas saya

Minggu 2 (18 November 2020)

di pertemuan ini, masing-masing dari kita dipersilahkan bertanya sambil menjelaskan hasil pekerjaannya. kemudian ada sebuah pertanyaan menarik dari seorang mahasiswa, yaitu "Kenapa kita memilih menggunakan OpenModelica dibandingkan aplikasi/platform lainnya?". jawaban dari Pak Dai cukup membuat saya semakin yakin untuk menggunakan OpenModelica. Pak Dai menjawab bahwa open modelica merupakan bahasa pemodelan, bukan sekedar bahasa coding seperti C++ dll. hal itu lebih sesuai untung engineering karena engineer bekerja dengan pemodelan. kemudian pak Dai mengarahkan kami untuk mempelajari fitur lain dari OpenModelica. salah satu fitur nya adalah fitur panggil dimana kita memanggil fungsi yang ada pada file lain untuk digunakan pada sebuah file class. hal yang kita pelajari itulah yang kemudian menjadi tugas bagi mahasiswa untuk mencoba mempelajari fitur tersebut lebih lanjut

Tugas Minggu 2

pada tugas kali ini, kami diinstruksikan untuk mencoba fitur panggil pada aplikasi OpenModelica. saya menggunakan contoh soal dari latihan pada buku "Elementary Linear Algebra" oleh Howard, dan memanfaatkan aplikasi OpenModelica untuk mengetahui jawabannya. Ada sedikit keanehan yang saya temui di hasil pengerjaan saya, yang kemungkinan besar akan saya tanyakan kepada pak Dai dan teman-teman di kelas Berikut video pembuatan tugas saya

Minggu 3 (25 November 2020)

Di pertemuan ini, kita kembali dipersilahkan untuk mempresentasikan hasil kerja kita masing masing. Ternyata apa yang diharapkan pak Dai adalah kita mencoba membuat rumus sendiri. mayoritas mahasiswa kelas Metode Numerik 02 mengerjakan tugasnya dengan menggunakan rumus yang sudah ada pada Open Modellica. ada salah satu mahasiswa yang membuat rumus sendiri yaitu bang Cristo. Berikut code yang digunakan oleh bang Cristo (disalin langsung dari milik bang Cristo sehingga hak milik adalah milik bang Cristo)

function GaussJordan
input Real [:,:] A;//matriks awal
output Real [:,:] B;//matriks tereduksi
protected 
Integer h = 1;    //pivot row
Integer k = 1;    //pivot coloumn
Integer m = size(A,1); //jumlah baris
Integer n = size(A,2); //jumlah kolom
Integer c = 0;
Integer max_row; // Row index of max number in pivot column
Real [:] pivot_column;
Real [:] pivot_row;
Real [:,:] temp_array;
Real r;
Real float_error = 10e-10;
algorithm
B := A;
while h <= m and k <= n loop
 for i in 1 : m loop
   for j in 1 : n loop
    if abs(B[i,j]) <= float_error then
      B[i,j] := 0;
     end if;
   end for;
 end for;
//Finding pivot 
 pivot_column:= {B[i,h] for i in h:m};
   //Baris terbawah yang mempunyai dengan pivot tertinggi
   c:=h-1;
   for element in pivot_column loop
     c:= c+1;
     if abs(element)== max(abs(pivot_column)) then
       max_row :=c;
     end if;
   end for; 
 //Jika tidak ada pivot di kolom ini, pindah ke kolom selanjutnya
 if B[max_row,k] == 0 then
   k:=k+1;
 else 
   // tukar row h - max_row
   temp_array := B;
   temp_array[h] := B[max_row];
   temp_array[max_row] := B[h];
   B:= temp_array;
   //devide pivot row by pivot number
    B[h] := B[h]/B[h,k];
    for i in (h+1) :m loop
      r := B[i,k]/B[h,k];
     B[i,k]:=0;
     for j in (k+1) : n loop
       B[i,j] := B[i,j]-B[h,j] * r;
     end for;
   end for;
   //pindah ke pivot kolom dan row selanjutnya
   h := h+1;
   k := k+1;  
 end if;
 end while;
// proses dari kanan atas
h :=m;
k :=n;
while h >=1 and k>=1 loop
 //dealing with error
 for i in 1:m loop
   for j in 1:n loop
     if abs(B[i,j]) <=float_error then
       B[i,j]:=0;
     end if;
   end for;
 end for; 
//finding pivot 
   pivot_row := {B[h,i] for i in 1:k};
   //Get position index k of pivot 
   c := 0;
   for element in pivot_row loop
     c := c+1;
     if element <> 0 then
       break;
     end if;
   end for;
   k:= c;
 // no pivot in this row, move to next row
 if B[h,k] == 0 then 
   h:= h-1;
 else
   //perform row operatation
   for i in 1:(h-1) loop
     r := B[i,k];
     B[i] := B[i] - B[h] *r;
   end for;
   //move to next pivot row dan column
   h:=h+1;
   k:=k+1;
 end if; 
end while;    
end GaussJordan;