Difference between revisions of "Uts andru"

From ccitonlinewiki
Jump to: navigation, search
 
Line 1: Line 1:
 
== NOMER 1a, andru ==
 
== NOMER 1a, andru ==
  
pada soal ini akan menghitung tentang tengangan tali dengan itu kita mempunyai beberapa variable yaitu massa pada batang dan percepatan pada batang  
+
pada soal ini akan menghitung tentang tengangan tali dengan itu kita mempunyai beberapa variable yaitu massa pada batang dan percepatan pada batang dengan persoalan pada nomer 1a behubungan dengan hukum newton Σ F = 0
pada  
 
  
 +
maka saya akan memulai memsaukan koding
 +
import numpy as np
 +
class GEPP():
 +
    def __init__(self, A, b, doPricing=True):
 +
       
 +
        self.A = A                     
 +
        self.b = b                     
 +
        self.doPricing = doPricing
  
 +
        self.n = None                 
 +
        self.x = None                 
  
 +
        self._validate_input()
 +
        self._elimination()           
 +
        self._backsub()               
  
 +
    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
 +
        """
 +
     
 +
        for k in range(self.n - 1):
 +
            if self.doPricing:
 +
               
 +
                maxindex = abs(self.A[k:, k]).argmax() + k
 +
                if self.A[maxindex, k] == 0:
 +
                    raise ValueError("Matrix is singular.")
 +
             
 +
                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.")
 +
         
 +
            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):
 +
       
 +
        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([[1., 1., 2., 2.],
 +
                  [-2., 1., -1., 1.],
 +
                  [0., 0., 1., 1.],
 +
                  [0., 0., 0., 1.]])
 +
    b = np.array([[20.],
 +
                  [20.],
 +
                  [20.],
 +
                  [20.]])
 +
    GaussElimPiv = GEPP(np.copy(A), np.copy(b), doPricing=False)
 +
    print(GaussElimPiv.x)
 +
    print(GaussElimPiv.A)
 +
    print(GaussElimPiv.b)
 +
    GaussElimPiv = GEPP(A, b)
 +
    print(GaussElimPiv.x)
 +
if __name__ == "__main__":
 +
    main()
 +
 +
 +
 +
 +
'''DENGAN HASIL TERSEBUT MAKA KITA DAPAT MEGETAHUI TEGANGAN TALI YANG ADA PADA SOAL TERSEBUT MAKA HASIL 'RUN MODULE' NYA ADALAH '''
 +
 +
[ -6.66666667 -13.33333333  0.          20.        ]
 +
[[1. 1. 2. 2.]
 +
[0. 3. 3. 5.]
 +
[0. 0. 1. 1.]
 +
[0. 0. 0. 1.]]
 +
[[20.]
 +
[60.]
 +
[20.]
 +
[20.]]
  
  
Line 24: Line 104:
  
  
[[File:1571644248889.jpg]]
+
[[File:1572192390925.jpg]]

Latest revision as of 23:17, 27 October 2019

NOMER 1a, andru

pada soal ini akan menghitung tentang tengangan tali dengan itu kita mempunyai beberapa variable yaitu massa pada batang dan percepatan pada batang dengan persoalan pada nomer 1a behubungan dengan hukum newton Σ F = 0

maka saya akan memulai memsaukan koding import numpy as np class GEPP():

   def __init__(self, A, b, doPricing=True):
       
       self.A = A                      
       self.b = b                      
       self.doPricing = doPricing
       self.n = None                   
       self.x = None                  
       self._validate_input()
       self._elimination()             
       self._backsub()                 
   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
       """
      
       for k in range(self.n - 1):
           if self.doPricing:
               
               maxindex = abs(self.A[k:, k]).argmax() + k
               if self.A[maxindex, k] == 0:
                   raise ValueError("Matrix is singular.")
              
               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.")
          
           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):
       
       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([[1., 1., 2., 2.],
                 [-2., 1., -1., 1.],
                 [0., 0., 1., 1.],
                 [0., 0., 0., 1.]])
   b = np.array([[20.],
                 [20.],
                 [20.],
                 [20.]])
   GaussElimPiv = GEPP(np.copy(A), np.copy(b), doPricing=False)
   print(GaussElimPiv.x)
   print(GaussElimPiv.A)
   print(GaussElimPiv.b)
   GaussElimPiv = GEPP(A, b)
   print(GaussElimPiv.x)

if __name__ == "__main__":

   main()



DENGAN HASIL TERSEBUT MAKA KITA DAPAT MEGETAHUI TEGANGAN TALI YANG ADA PADA SOAL TERSEBUT MAKA HASIL 'RUN MODULE' NYA ADALAH

[ -6.66666667 -13.33333333 0. 20. ] [[1. 1. 2. 2.]

[0. 3. 3. 5.]
[0. 0. 1. 1.]
[0. 0. 0. 1.]]

[[20.]

[60.]
[20.]
[20.]]


NOMER 1b , andru

maka pada soal kali ini berhubungan dengan hukum newton kedua yaitu Σ F = m × a.

pada nomer 1b ini mencari v pada t detik. saya mengunakan program exel excel dengan memmasukan nilai- nilai Vo, a , t, dan mew gesek.

=D6+(C6*E6)-I4

hasil V trlihat


1572192390925.jpg