Difference between revisions of "Algoritma python untuk kuis"
(Created page with "==Problem set 2.1 no 6 hal 55 (buku "Numerical Methods in Engineering with Python 3")==") |
|||
(11 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
− | ==Problem set 2.1 no 6 hal 55 (buku "Numerical Methods in Engineering with Python 3")== | + | ==Problem set 2.1 no 6 hal 55 (buku "Numerical Methods in Engineering with Python 3")== |
+ | |||
+ | [[File:Soal_2.1_no_6.JPG]] | ||
+ | |||
+ | Berikut ini adalah algoritmanya : | ||
+ | from numpy import array, zeros | ||
+ | a = array([[0,0,2,1,2],\ | ||
+ | [0,1,0,2,-1],\ | ||
+ | [1,2,0,-2,0],\ | ||
+ | [0,0,0,-1,1],\ | ||
+ | [0,1,-1,1,-1]]) | ||
+ | b = array([[1],\ | ||
+ | [1],\ | ||
+ | [-4],\ | ||
+ | [-2],\ | ||
+ | [-1]]) | ||
+ | c = zeros((5,6)) # ini dilakukan untuk menyusun matrik a dan matrik b menjadi satu matrik 5 x 6 | ||
+ | for j in range(0,5) : | ||
+ | for i in range (0,5): | ||
+ | c[j][i]=a[j][i] | ||
+ | for j in range (0,5): | ||
+ | c[j][5]=b[j][0] | ||
+ | d = zeros((5,6)) # langkah ini dilakukan untuk menyusun baris dari matrik c menjadi terstruktur seperti eliminasi gauss | ||
+ | d[0]=c[2] | ||
+ | d[1]=c[1] | ||
+ | d[2]=c[4] | ||
+ | d[3]=c[0] | ||
+ | d[4]=c[3] | ||
+ | # Langkah dibawah dilakukan untuk Operasi Baris Elementer matrik c | ||
+ | n = len (d) | ||
+ | for j in range (1,n): | ||
+ | m=d[j][0]/d[0][0] | ||
+ | for i in range (0,n+1): | ||
+ | d[j][i]=d[j][i]-m*d[0][i] | ||
+ | for j in range(2, n): | ||
+ | m = d[j][1]/d[1][1] | ||
+ | for i in range(1,n+1): | ||
+ | d[j][i]=d[j][i]-m*d[1][i] | ||
+ | for j in range(3, n): | ||
+ | m = d[j][2]/d[2][2] | ||
+ | for i in range(1,n+1): | ||
+ | d[j][i]=d[j][i]-m*d[2][i] | ||
+ | for j in range(4,n): | ||
+ | m = d[j][3]/d[3][3] | ||
+ | for i in range(1,n+1): | ||
+ | d[j][i]=d[j][i]-m*d[3][i] | ||
+ | # Langkah dibawah dilakukan untuk back substitution demi mendapatkan hasil x1, x2. x3, x4, dan x5 | ||
+ | X = zeros((n, 1)) | ||
+ | X[n - 1][0] = d[n-1][n]/d[n-1][n-1] | ||
+ | for j in range(n-2,-1,-1): | ||
+ | S=0 | ||
+ | for i in range(j+1,n): | ||
+ | S = S + d[j][i]*X[i][0] | ||
+ | X[j][0] = (d[j][n]-S)/d[j][j] | ||
+ | print(X) | ||
+ | |||
+ | Hasil coding di Python untuk penyelesaian soal diatas sebagai berkut : | ||
+ | [[File:Algoritma_6.JPG]] | ||
+ | |||
+ | |||
+ | [[File:Algoritma_2.JPG]] | ||
+ | |||
+ | |||
+ | [[File:Algoritma_3.JPG]] | ||
+ | |||
+ | |||
+ | [[File:Algoritma_7.JPG]] | ||
+ | |||
+ | |||
+ | Bila kita menggunakan kalkulator matriks untuk menghitung x dengan cara mencari invers dari matrik a terlebih dahulu maka hasilnya : | ||
+ | |||
+ | [[File:Nn.JPG]] | ||
+ | |||
+ | dan kita kalikan hasil invers a dengan matriks b maka hasilnya : | ||
+ | |||
+ | [[File:Nn4.JPG]] | ||
+ | |||
+ | hasilnya sama dengan hasil running file Python yang telah dibuat | ||
+ | |||
+ | |||
+ | == Problem set 7.1 no 2 hal 263 == | ||
+ | [[File:Problem_7.1.JPG]] | ||
+ | |||
+ | Berikut ini adalah algoritmanya : | ||
+ | import numpy as np | ||
+ | # Pertama - tama kita buat dulu fungsi untuk persamaan diferensial | ||
+ | def a(x,y) : | ||
+ | z = ((x**2)-(4*y)) | ||
+ | return (z) | ||
+ | # Setelah itu kita tetapkan intial condition yang ingin dipakai | ||
+ | x = 0 | ||
+ | y = 1 | ||
+ | h = 0.01 | ||
+ | # Selanjutnya kita masukan rumus dari metode runge kutta orde 4 | ||
+ | interval = np.arange(0,0.03,h) | ||
+ | for t in interval : | ||
+ | k1 = a(x,y) | ||
+ | k2 = a((x+0.5*h),(y+0.5*k1*h)) | ||
+ | k3 = a((x+0.5*h),(y+0.5*k2*h)) | ||
+ | k4 = a((x+h),(y+k3*h)) | ||
+ | y = y + 1/6*(k1+(2*k2)+(2*k3)+k4)*h | ||
+ | print ('Maka hasil y ketika x = 0.03 adalah', y) | ||
+ | |||
+ | |||
+ | |||
+ | Ini adalah hasil input kedalam working space Pycharm : | ||
+ | |||
+ | [[File:Algoritma_5.JPG]] | ||
+ | |||
+ | Hasilnya running file : | ||
+ | |||
+ | [[File:Hasil.JPG]] | ||
+ | |||
+ | Bila kita gunakan kalkulator online untuk mengecek apakah hasil ini benar | ||
+ | |||
+ | [[File:Hasil_kalkulator.JPG]] | ||
+ | |||
+ | Hasilnya terbukti benar |
Latest revision as of 14:52, 17 October 2019
Problem set 2.1 no 6 hal 55 (buku "Numerical Methods in Engineering with Python 3")
Berikut ini adalah algoritmanya :
from numpy import array, zeros a = array([[0,0,2,1,2],\ [0,1,0,2,-1],\ [1,2,0,-2,0],\ [0,0,0,-1,1],\ [0,1,-1,1,-1]]) b = array([[1],\ [1],\ [-4],\ [-2],\ [-1]]) c = zeros((5,6)) # ini dilakukan untuk menyusun matrik a dan matrik b menjadi satu matrik 5 x 6 for j in range(0,5) : for i in range (0,5): c[j][i]=a[j][i] for j in range (0,5): c[j][5]=b[j][0] d = zeros((5,6)) # langkah ini dilakukan untuk menyusun baris dari matrik c menjadi terstruktur seperti eliminasi gauss d[0]=c[2] d[1]=c[1] d[2]=c[4] d[3]=c[0] d[4]=c[3] # Langkah dibawah dilakukan untuk Operasi Baris Elementer matrik c n = len (d) for j in range (1,n): m=d[j][0]/d[0][0] for i in range (0,n+1): d[j][i]=d[j][i]-m*d[0][i] for j in range(2, n): m = d[j][1]/d[1][1] for i in range(1,n+1): d[j][i]=d[j][i]-m*d[1][i] for j in range(3, n): m = d[j][2]/d[2][2] for i in range(1,n+1): d[j][i]=d[j][i]-m*d[2][i] for j in range(4,n): m = d[j][3]/d[3][3] for i in range(1,n+1): d[j][i]=d[j][i]-m*d[3][i] # Langkah dibawah dilakukan untuk back substitution demi mendapatkan hasil x1, x2. x3, x4, dan x5 X = zeros((n, 1)) X[n - 1][0] = d[n-1][n]/d[n-1][n-1] for j in range(n-2,-1,-1): S=0 for i in range(j+1,n): S = S + d[j][i]*X[i][0] X[j][0] = (d[j][n]-S)/d[j][j] print(X)
Hasil coding di Python untuk penyelesaian soal diatas sebagai berkut :
Bila kita menggunakan kalkulator matriks untuk menghitung x dengan cara mencari invers dari matrik a terlebih dahulu maka hasilnya :
dan kita kalikan hasil invers a dengan matriks b maka hasilnya :
hasilnya sama dengan hasil running file Python yang telah dibuat
Problem set 7.1 no 2 hal 263
Berikut ini adalah algoritmanya :
import numpy as np # Pertama - tama kita buat dulu fungsi untuk persamaan diferensial def a(x,y) : z = ((x**2)-(4*y)) return (z) # Setelah itu kita tetapkan intial condition yang ingin dipakai x = 0 y = 1 h = 0.01 # Selanjutnya kita masukan rumus dari metode runge kutta orde 4 interval = np.arange(0,0.03,h) for t in interval : k1 = a(x,y) k2 = a((x+0.5*h),(y+0.5*k1*h)) k3 = a((x+0.5*h),(y+0.5*k2*h)) k4 = a((x+h),(y+k3*h)) y = y + 1/6*(k1+(2*k2)+(2*k3)+k4)*h print ('Maka hasil y ketika x = 0.03 adalah', y)
Ini adalah hasil input kedalam working space Pycharm :
Hasilnya running file :
Bila kita gunakan kalkulator online untuk mengecek apakah hasil ini benar
Hasilnya terbukti benar