Difference between revisions of "Illiyyin Lafi Abrarri"

From ccitonlinewiki
Jump to: navigation, search
()
Line 72: Line 72:
 
== ==
 
== ==
 
pada tugas hiburan ini
 
pada tugas hiburan ini
 +
 
[[File:S__18382858.jpg]]
 
[[File:S__18382858.jpg]]
dikerjakan menggunakan hukum kontinuitas massa dimana masa yang masuk akan sama dengan yang dikeluarkan sehingga didapati rumus Q*''p''=Q*''p''sehingga akan mendapatakan 4 persamaan dengan 4 variabel
+
 
 +
dikerjakan menggunakan hukum kontinuitas massa dimana masa yang masuk akan sama dengan yang dikeluarkan sehingga didapati rumus Q*''p''=Q*''p'' sehingga akan mendapatakan 4 persamaan dengan 4 variabel  
 +
 
 +
 
 +
6C1 - 4C2 = 50
 +
-2C1 - 1C3 + 4C4 = 50   
 +
7C2 - 3C3 - 4C4 = 0
 +
-4C1 + 4C3 = 0
 +
 
 +
 
 +
 
 +
6C1 - 4C2 + 0C3 + 0C4 = 50
 +
-2C1 + 0C2 - 1C3 + 4C4 = 50
 +
0C1 + 7C2 - 3C3 - 4C4 = 0
 +
-4C1 + 0C2 + 4C3 + 0C4 = 0
 +
 
 +
yang kemudian dijadikan dalam modue python
 +
 
 +
import numpy as np
 +
 
 +
 
 +
class GEPP():
 +
 
 +
 
 +
    def __init__(self, A, b, doPricing=True):
 +
        #super(GEPP, self).__init__()
 +
 
 +
        self.A = A                      # input: A is an n x n numpy matrix
 +
        self.b = b                      # b is an n x 1 numpy array
 +
        self.doPricing = doPricing
 +
 
 +
        self.n = None                  # n is the length of A
 +
        self.x = None                  # x is the solution of Ax=b
 +
 
 +
        self._validate_input()          # method that validates input
 +
        self._elimination()            # method that conducts elimination
 +
        self._backsub()                # method that conducts back-substitution
 +
 
 +
    def _validate_input(self):
 +
        self.n = len(self.A)
 +
        if self.b.size != self.n:
 +
            raise ValueError("Invalid argument: incompatible sizes between" +
 +
                            "A & b.", self.b.size, self.n)
 +
 
 +
    def _elimination(self):
 +
        """
 +
        k represents the current pivot row. Since GE traverses the matrix in the
 +
        upper right triangle, we also use k for indicating the k-th diagonal
 +
        column index.
 +
        :return
 +
        """
 +
 
 +
        # Elimination
 +
        for k in range(self.n - 1):
 +
            if self.doPricing:
 +
                # Pivot
 +
                maxindex = abs(self.A[k:, k]).argmax() + k
 +
                if self.A[maxindex, k] == 0:
 +
                    raise ValueError("Matrix is singular.")
 +
                # Swap
 +
                if maxindex != k:
 +
                    self.A[[k, maxindex]] = self.A[[maxindex, k]]
 +
                    self.b[[k, maxindex]] = self.b[[maxindex, k]]
 +
            else:
 +
                if self.A[k, k] == 0:
 +
                    raise ValueError("Pivot element is zero. Try setting doPricing to True.")
 +
            # Eliminate
 +
            for row in range(k + 1, self.n):
 +
                multiplier = self.A[row, k] / self.A[k, k]
 +
                self.A[row, k:] = self.A[row, k:] - multiplier * self.A[k, k:]
 +
                self.b[row] = self.b[row] - multiplier * self.b[k]
 +
 
 +
    def _backsub(self):
 +
        # Back Substitution
 +
 
 +
        self.x = np.zeros(self.n)
 +
        for k in range(self.n - 1, -1, -1):
 +
            self.x[k] = (self.b[k] - np.dot(self.A[k, k + 1:], self.x[k + 1:])) / self.A[k, k]
 +
 
 +
 
 +
def main():
 +
    A = np.array([[6., -4., 0., 0.],
 +
                  [-4., 0., 4., 0.],
 +
                  [-2., 0., -1., 4.],
 +
                  [0., 7., -3., -4.]])
 +
    b = np.array([[50.],
 +
                  [0.],
 +
                  [50.],
 +
                  [0.]])
 +
    print("ini matriks awal nya")
 +
    print(A)
 +
    print("ini hasil yang awal")
 +
    print(b)
 +
   
 +
 
 +
    GaussElimPiv = GEPP(np.copy(A), np.copy(b), doPricing=False)
 +
    print("ini hasil akhirnya")
 +
    print(GaussElimPiv.x)
 +
    print(GaussElimPiv.A)
 +
    print(GaussElimPiv.b)
 +
    GaussElimPiv = GEPP(A, b)
 +
    print(GaussElimPiv.x)
 +
 
 +
if __name__ == "__main__":
 +
    main()

Revision as of 10:59, 29 September 2019

Tugas Mekanika Fluida

  1. Tugas Studi Kasus Bab 9 Lafi
  2. Tugas Studi Kasus Bab 10 Lafi
  3. Tugas Bab 8, 9, 10, 11 Lafi

https://youtu.be/oyu4QM7XdMs

Biografi

Illiyyin Lafi Abrarri lahir di Surabaya, 23 Mei 1999 dari pasangan suami istri Amir Hamzah dan Dwi Riawati. Mengawali pendidikan mulai dari sekolah dasar hingga SMA di Surabaya. berasal dari SMAN 15 Surabaya dan melanjutkan pendidikan S1 di Teknik Mesin Universitas Indonesia. memiliki hobi bermain game, renang, dan badminton.

Karier

semua karir dimulai ketika masa perkuliahan dimulai dengan membantu tugas skripsi senior mengenai getaran pada tingkat awal, diikuti dengan mengikuti proyek desa Bungin yang diadakan oleh Prof Adi sejak 2018 hingga saat ini meski tidak terlalu berat, memulai mengajar anak SMA secara privat sejak tahun 2018 hingga saat ini, menjadi vice project officer ASUIFEST 2019, menjadi vice PIC Aeromodelling di MMENE sebuah event kebanggaan Ikatan mahasiswa Mesin, menjadi anggota student catalyst 2019 dan memenangkan best project tentang masalah ketidak toleransi umat beragama dan politik, menjadi anggota MPM FTUI periode 2019

PYTHON

Awal belajar sempat kaget karena selalu mengalami syntax error dan tidak mengetahui bagaimana caranya membuat line baru dibawah line sebelumnya. Ternyata tidak dimasukan nya fungsi yang benar. Hal yang sudah saya pelajari di python adalah mengenai operasi hitung tentang penambahan, pengurangan, pengalian, dan pembagian. Fungsi-fungsi persamaan yang sudah saya pelajari adalah

a = 4

b = a + 5

print (b)

9

dan seterusnya termasuk pengalian, pengurangan dan pembagian beberapa juga ada yang mengalami kesalah pahaman seperti

a = [2, 3, 4]

b = [1, 0, 3]

c = a + b

print(c)

[2, 1, 3, 0, 4, 3]

yang seharusnya diharapkan [3, 3, 7] ditambahlagi beberapa campuran kata dan angka akan menghasilkan eror karena tidak masuk akal dan tidak bias dilakukan operasi hitung matematika menggunakan fungsi Batasan angka seperti >, <, =, >=, dan <= memncoba program if, false, dan true dan membuat sebuah persamaan yang bias dihitung persamaan linear sederhana

Hiburan metode numerik 1

Dalam mengerjakan soal (x^2-1)/(x-1) dengan x=1 tidak bisa mendapatkan hasil yang benar dikarenakan 0/0. Oleh sebab itu, saya gunakan limit pendekatan x=1. Soal dikerjakan dengan menambahkan perbedaan 1/9999999 yang mendekati angka nol sehingga hampir tidak merubah hasil dengan menggunakan module coding sebagai berikut 1568464116160.jpg

Pada module ini, saya memisahkan antara pembilang dan penyebut nya sehingga memudahkan perhitungan.

dan memiliki hasil seperti berikut

1568602744591.jpg


1568603204429.jpg

pada soal ini digunakan metode Newton Raphson sebagai metode mencari faktor dari persamaan tersebut

Modified+Newton-Raphson+Method.jpg

dengan module sebagai berikut

1568464103427.jpg

dan mendapatkan hasil sebagai berikut

1568603830247.jpg

dengan flowchart sebagai berikut

1568605080666.jpg

pada tugas hiburan ini

S 18382858.jpg

dikerjakan menggunakan hukum kontinuitas massa dimana masa yang masuk akan sama dengan yang dikeluarkan sehingga didapati rumus Q*p=Q*p sehingga akan mendapatakan 4 persamaan dengan 4 variabel


6C1 - 4C2 = 50 -2C1 - 1C3 + 4C4 = 50 7C2 - 3C3 - 4C4 = 0 -4C1 + 4C3 = 0


6C1 - 4C2 + 0C3 + 0C4 = 50 -2C1 + 0C2 - 1C3 + 4C4 = 50 0C1 + 7C2 - 3C3 - 4C4 = 0 -4C1 + 0C2 + 4C3 + 0C4 = 0

yang kemudian dijadikan dalam modue python

import numpy as np


class GEPP():


   def __init__(self, A, b, doPricing=True):
       #super(GEPP, self).__init__()
       self.A = A                      # input: A is an n x n numpy matrix
       self.b = b                      # b is an n x 1 numpy array
       self.doPricing = doPricing
       self.n = None                   # n is the length of A
       self.x = None                   # x is the solution of Ax=b
       self._validate_input()          # method that validates input
       self._elimination()             # method that conducts elimination
       self._backsub()                 # method that conducts back-substitution
   def _validate_input(self):
       self.n = len(self.A)
       if self.b.size != self.n:
           raise ValueError("Invalid argument: incompatible sizes between" +
                            "A & b.", self.b.size, self.n)
   def _elimination(self):
       """
       k represents the current pivot row. Since GE traverses the matrix in the
       upper right triangle, we also use k for indicating the k-th diagonal
       column index.
       :return
       """
       # Elimination
       for k in range(self.n - 1):
           if self.doPricing:
               # Pivot
               maxindex = abs(self.A[k:, k]).argmax() + k
               if self.A[maxindex, k] == 0:
                   raise ValueError("Matrix is singular.")
               # Swap
               if maxindex != k:
                   self.Ak, maxindex = self.Amaxindex, k
                   self.bk, maxindex = self.bmaxindex, k
           else:
               if self.A[k, k] == 0:
                   raise ValueError("Pivot element is zero. Try setting doPricing to True.")
           # Eliminate
           for row in range(k + 1, self.n):
               multiplier = self.A[row, k] / self.A[k, k]
               self.A[row, k:] = self.A[row, k:] - multiplier * self.A[k, k:]
               self.b[row] = self.b[row] - multiplier * self.b[k]
   def _backsub(self):
       # Back Substitution
       self.x = np.zeros(self.n)
       for k in range(self.n - 1, -1, -1):
           self.x[k] = (self.b[k] - np.dot(self.A[k, k + 1:], self.x[k + 1:])) / self.A[k, k]


def main():

   A = np.array([[6., -4., 0., 0.],
                 [-4., 0., 4., 0.],
                 [-2., 0., -1., 4.],
                 [0., 7., -3., -4.]])
   b = np.array([[50.],
                 [0.],
                 [50.],
                 [0.]])
   print("ini matriks awal nya")
   print(A)
   print("ini hasil yang awal")
   print(b)
   
   GaussElimPiv = GEPP(np.copy(A), np.copy(b), doPricing=False)
   print("ini hasil akhirnya")
   print(GaussElimPiv.x)
   print(GaussElimPiv.A)
   print(GaussElimPiv.b)
   GaussElimPiv = GEPP(A, b)
   print(GaussElimPiv.x)

if __name__ == "__main__":

   main()