Difference between revisions of "Kelompok 4"

From ccitonlinewiki
Jump to: navigation, search
Line 113: Line 113:
  
 
[[File:Runge_kutta_3.jpg|500px]]
 
[[File:Runge_kutta_3.jpg|500px]]
 +
 +
 +
Program untuk menyelesaikannya
 +
 +
 +
# Di sini, kita akan menggunakan x0 dan y sebagai titik asal, x sebagai t yang diinginkan, dan h sebagai increment. Kita menggunakan h = 0.01.
 +
x0 = 0
 +
y = 0
 +
h = 0.01
 +
x = float(input("Masukkan nilai t: "))
 +
if 0 <= x < 2:
 +
  # dydx menyatakan persamaan awal dalam soal. Persamaan harus diintegralkan sekali untuk menghasilkan persamaan kecepatan.
 +
  # Didapat hasil 2x^2 - 30xy karena dipakai massa m = 2,5 kg dan konstanta pegas k = 75 N/m.
 +
  # P(t) dinyatakan dalam x.
 +
  def dydx(x, y):
 +
    return (2*x**2 - 30*x*y)
 +
  # Ini merupakan implementasi perhitungan Runge-Kutta.
 +
  def rungeKutta(x0, y0, x, h):
 +
    n = (int)((x - x0)/h) 
 +
    y = y0
 +
    for i in range(1, n + 1):
 +
        k1 = h * dydx(x0, y)
 +
        k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)
 +
        k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)
 +
        k4 = h * dydx(x0 + h, y + k3)
 +
 
 +
        # untuk y selanjutnya
 +
        y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4)
 +
 
 +
        # untuk x selanjutnya
 +
        x0 = x0 + h
 +
    return y
 +
  print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h))
 +
elif x >= 2:
 +
  # Ketika x >= 2, perhitungan harus diganti karena P(t) sudah konstan di angka 20 N.
 +
  def dydx(x, y):
 +
    return (8 - 30*x*y)
 +
  def rungeKutta(x0, y0, x, h):
 +
    n = (int)((x - x0)/h) 
 +
    y = y0
 +
    for i in range(1, n + 1):
 +
        k1 = h * dydx(x0, y)
 +
        k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)
 +
        k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)
 +
        k4 = h * dydx(x0 + h, y + k3)
 +
        y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4)
 +
        x0 = x0 + h
 +
    return y
 +
  print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h))
 +
else:
 +
  print("Mohon masukkan nilai t positif.")

Revision as of 15:35, 16 October 2019

TUGAS KELOMPOK 4


Bismillahirrahmanirrahim.


PERKENALAN

Perkenalkan kami dari kelompok 4 yang beranggotakan:

1. Satria Nur Muhammad

2. Stefanus Nandiwardhana

3. Rafiq Ali Abdillah

TUGAS 1: Gauss Jordan dalam Penyelesaian Persamaan Aljabar Linear

Pada tugas ini kami menyelesaikan suatu persamaan Aljabar Linear dengan metode Gauss Jordan menggunakan python.


Gauss Jordan.PNG


TUGAS 2: Gauss Jordan dalam Penyelesaian Statika Struktur

Pada tugas ini kami menyelesaikan suatu persamaan Statika Struktur dengan metode Gauss Jordan menggunakan python.

Kami mengambil contoh soal sebagai berikut:

Sebuah batang panjang 12 m diberi beban 1500N ditengah batang. Lalu kami menghitung support reaction yang terjadi pada dua ujung batang.

#menghitung manual

Fx+Fy=1500N
8Fx-12Fy=0
Fx=600N
Fy=900N


#menghitung support reaction pada phyton
import numpy as np

a=np.array ([[1,1],
             [8,-4]])

b=np.array ([[1500],
             [0]])

c=[1,1,1,1,1,1,1,1]
n=len(b)

for k in range(0,n-1):
    for i in range(n-1,k,-1):
        if a[i][k]!=0.0:
            op=a[i][k]/a[i-1][k]
            b[i][0]=b[i][0]-op*b[i-1][0]
            for f in range (0,n):
                a[i][f]=a[i][f]-op*a[i-1][f]

if a[n-1][n-1]!=0:
    c[n-1]=b[n-1][0]/a[n-1][n-1]
else:
    c[n-1]=0
for i in range(n-2,-1,-1):
    sigma=0
    for k in range(0,n,1):
        y=a[i][k]*c[k]
        sigma=sigma+y
    sigma=sigma-a[i][i]
    if a[i][i]!=0:
        c[i]=(b[i][0]-sigma)/a[i][i]
    else:
        a[i][i]=0
for v in range(0,n,1):
    print(a[v])
print(c[0:n])


Runge Kutta

Menyelesaikan sebuah soal dengan methode runge kutta, diberikan sebuah soal pegas dimana prinsip pegas ini biasa digunakan pada kegiatan sehari hari seperti shock breaker dan lain lain. Pada sebuah pegas pasti memiliki titik kelenturan maksimal pada peernya.

Hejos.jpg

2. Algoritma penyelesaian soal

a. dari soal diketahui jika nilai k=75 N/m dan dengan massa 2,5kg

b. jika massa ditarik dengan waktu kurang dari 2 detik maka gaya nya 10t, jika ditarik dalam 2 detik atau lebih maka gayanya 20 N

c. massa tersebut ditarik dengan fungsi P(t)

d. untuk mencari renggangan maka

  y=P(t)/m-ky/m

Metode Runge Kutta

Gejos.jpg

Fenomena Fisika

Sebuah benda dengan massa 2.5kg di atas lantai (tanpa gesekan) dikaitkan kepada pegas dengan koefisien pegas 75N/m. Benda tersebut kemudian ditarik dengan arah yang berlawanan dari gaya tarik pegas dengan gaya sebesar 10t N saat t < 2s dan gaya yang sebesar 20N saat t ≥2 s. Gaya tersebut harus melawan gaya tarik pegas. Benda akhirnya mengalami perpindahan dengan percepatan gaya tarik dibagi massanya, dikurangi gaya pegas dikali perpindahan dibagi massa benda.

Runge kutta 2.jpg

Runge Kutta 1.png

Runge kutta 3.jpg


Program untuk menyelesaikannya


# Di sini, kita akan menggunakan x0 dan y sebagai titik asal, x sebagai t yang diinginkan, dan h sebagai increment. Kita menggunakan h = 0.01. 
x0 = 0
y = 0
h = 0.01
x = float(input("Masukkan nilai t: "))
if 0 <= x < 2:
  # dydx menyatakan persamaan awal dalam soal. Persamaan harus diintegralkan sekali untuk menghasilkan persamaan kecepatan.
  # Didapat hasil 2x^2 - 30xy karena dipakai massa m = 2,5 kg dan konstanta pegas k = 75 N/m.
  # P(t) dinyatakan dalam x. 
  def dydx(x, y): 
    return (2*x**2 - 30*x*y) 
  # Ini merupakan implementasi perhitungan Runge-Kutta.
  def rungeKutta(x0, y0, x, h): 
    n = (int)((x - x0)/h)  
    y = y0 
    for i in range(1, n + 1): 
       k1 = h * dydx(x0, y) 
       k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1) 
       k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2) 
       k4 = h * dydx(x0 + h, y + k3) 
 
       # untuk y selanjutnya 
       y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4) 
 
       # untuk x selanjutnya
       x0 = x0 + h 
    return y 
  print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h))
elif x >= 2:
  # Ketika x >= 2, perhitungan harus diganti karena P(t) sudah konstan di angka 20 N.
  def dydx(x, y): 
    return (8 - 30*x*y) 
  def rungeKutta(x0, y0, x, h): 
    n = (int)((x - x0)/h)  
    y = y0 
    for i in range(1, n + 1): 
       k1 = h * dydx(x0, y) 
       k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1) 
       k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2) 
       k4 = h * dydx(x0 + h, y + k3) 
       y = y + (1.0 / 6.0)*(k1 + 2 * k2 + 2 * k3 + k4)
       x0 = x0 + h 
    return y 
  print("Nilai y pada t =", x, "adalah", rungeKutta(x0, y, x, h))
else:
  print("Mohon masukkan nilai t positif.")