Ujian Akhir Semester¶
Soal¶
a. Gunakan metode Midpoint untuk menyelesaikan Persamaan Deferensial Biasa berikut gunakan $h=0,1h=0,1$ Tentukan y(0.1)y(0.1) and y(0.2)y(0.2)
$$ y(x) = 1 + 2x^{2} + y \\ y(0) = 1 $$ b. Hitunglah dengan metode iterasi Jacobi sampai iterasi ke 4 untuk penyelesaian sistem persamaan liner berikut $$ x_1 + 2x_2 + 3x_3 = 10 \\ 2x_1 + 3x_2 + 3x_3 = 13 \\ x_1 + x_2 + x_3 = 15 $$ c. Hitunglah $\int_{1}^{3} 2x$ dengan Metode Trapesium Rekursif
No. 1 Menggunakan Metode Midpoint¶
Pada penggunaan Soal no 1, ini menggunakan metode midpoint untuk menyelesaikan persamaan deferensial biasa dengan $y(x) = 1 + 2x^2 + y \ y(0) = 1$ menggunakan $h=0,1h=0,1$. Berikut dengan rumus secara umumnya yaitu : $$ \begin{align} \int_a^b f(x)\,dx &= \int_{x_0}^{x_1} f(x)dx + \int_{x_1}^{x_2} f(x)dx + \ldots + \int_{x_{n-1}}^{x_n} f(x)dx, \nonumber \\ &\approx h f\left(\frac{x_0 + x_1}{2}\right) + h f\left(\frac{x_1 + x_2}{2}\right) + \ldots + h f\left(\frac{x_{n-1} + x_n}{2}\right) , \\ &\approx h \left(f\left(\frac{x_0 + x_1}{2}\right) + f\left(\frac{x_1 + x_2}{2}\right) + \ldots + f\left(\frac{x_{n-1} + x_n}{2}\right)\right)\thinspace . \end{align} $$
Maka dapat di implementasikan menggunakan python yaitu:
#No.1 print("Midpoint Method") print("f(x,y)= 1+2x^2+y") def f(x,y): return(1+2*(x**2)+y) n = int(input('masukkan banyaknya iterasi = ')) h = 0.1 x0 = 0 y0 = 1 def midpoint(f, x0, y0, n): for i in range(n): xtemp = (x0+1)/2 * h ytemp = y0 + h/2 * f(0, y0) result = y0 + h * f(xtemp, ytemp) x0 = xtemp y0 = ytemp print("y(0." +str(i+1)+ ") = "+str(result)) midpoint(f, x0, y0, n)
Dalam program tersebut membuat fungsi f(x,y) terlebih dahulu untuk memudahkan program membaca fungsi $f(x)$ yang akan digunakan dengan fungsi $y(x) = 1 + 2x^2 + y \ y(0) = 1$. Lalu membuat variabel $h =0.1, x_0 = 0, y_0 =1$. Lanjut membuat fungsi midpoint yang akan digunakan dengan :
xtemp = (x0+1)/2 * h ytemp = y0 + h/2 * f(0, y0) result = y0 + h * f(xtemp, ytemp)
dilooping dengan memasukkan jumlah / banyaknya iterasi yang akan digunakan dengan for i in range(n).
Dilanjutkan melakukan pemanggilan fungsi midpoint(f, x0, y0, n), untuk bisa melakukan pemanggilan def midpoint yang digunakan. Yaitu hasil runningnya:
Midpoint Method f(x,y)= 1+2x^2+y masukkan banyaknya iterasi = 5 y(0.0) = 1.0 y(0.1) = 1.2105000000000001 y(0.2) = 1.32105125 y(0.3) = 1.4370788781250001 y(0.4) = 1.5589052596953126 y(0.5) = 1.6868228287742384
No. 2 Menggunakan Metode iterasi Jacobi¶
Pada penggunaan soal No.2 menggunakan motde iterasi Jacobi untuk menyelesaikan persamaan linier berikut : $$ x_1 + 2x_2 + 3x_3 = 10 \\ 2x_1 + 3x_2 + 3x_3 = 13 \\ x_1 + x_2 + x_3 = 15 $$ Yaitu di implementasikan dengan code Python sebagai berikut :
#No.2 import math import copy from numpy import linalg MatA = [] MatB = [] n = int(input('Masukkan Banyaknya Persamaan : ')) for i in range(n): temp = [] for j in range(n): temp.append(float(input('Masukkan Koefesien ke-%i x%i : '%((i+1),(j+1))))) MatA.append(temp) MatB.append(float(input('Masukkan Hasil ke-%i : ' % (i + 1)))) error = float(input('Batas error : ')) max_iterasi = int(input('Masukkan Banyaknya Iterasi : ')) X = [0] * len(MatA) X_temp = copy.copy(X) def tampil_matrix(matrix): for i in range(len(matrix)): print('|', end=' ') for j in range(len(matrix[0])): print(matrix[i][j], end=' ') print('|') print() print() print('===========================') print('Metode Iterasi Jacobi') print('===========================') print() print('Matrix A : ') tampil_matrix(MatA) print('Matrix B : ', MatB) print() e = 1 iterasi = 0 while math.sqrt(e) >= error and iterasi < max_iterasi: if linalg.det(MatA) != 0: for i in range(len(X)): i_sum = 0 for j in range(len(X)): if j!=i: i_sum += MatA[i][j] * X_temp[j] X[i] = round((MatB[i] - i_sum) / MatA[i][i], 4) print('K-'+str(iterasi+1), 'X : ', X) e = 0 for i in range(len(X)): e += (X[i] - X_temp[i]) ** 2 X_temp = copy.copy(X) iterasi+=1 else: print('Maaf!!! Tidak ada penyelesaian untuk persamaan tersebut!') break print() print("X : ", X)
Pada program dapat diketahui melakukan import math, yang digunakan untuk bisa menghitung akar dalam perhitungan berikut yaitu :
while math.sqrt(e) >= error and iterasi < max_iterasi: if linalg.det(MatA) != 0: for i in range(len(X)): i_sum = 0 for j in range(len(X)): if j!=i: i_sum += MatA[i][j] * X_temp[j] X[i] = round((MatB[i] - i_sum) / MatA[i][i], 4)
Maka Hasil Program yang dihasilkan dengan melakukan inputan sesuai dengan persamaan liner berikut: $$ x_1 + 2x_2 + 3x_3 = 10 \\ 2x_1 + 3x_2 + 3x_3 = 13 \\ x_1 + x_2 + x_3 = 15 $$
Masukkan Banyaknya Persamaan : 3 Masukkan Koefesien ke-1 x1 : 1 Masukkan Koefesien ke-1 x2 : 2 Masukkan Koefesien ke-1 x3 : 3 Masukkan Hasil ke-1 : 10 Masukkan Koefesien ke-2 x1 : 2 Masukkan Koefesien ke-2 x2 : 3 Masukkan Koefesien ke-2 x3 : 3 Masukkan Hasil ke-2 : 13 Masukkan Koefesien ke-3 x1 : 1 Masukkan Koefesien ke-3 x2 : 1 Masukkan Koefesien ke-3 x3 : 1 Masukkan Hasil ke-3 : 5 Batas error : 0.1 Masukkan Banyaknya Iterasi : 4 =========================== Metode Iterasi Jacobi =========================== Matrix A : | 1.0 2.0 3.0 | | 2.0 3.0 3.0 | | 1.0 1.0 1.0 | Matrix B : [10.0, 13.0, 5.0] K-1 X : [10.0, 4.3333, 5.0] K-2 X : [-13.6666, -7.3333, -9.3333] K-3 X : [52.6665, 22.7777, 25.9999] K-4 X : [-113.5551, -56.7776, -70.4442] X : [-113.5551, -56.7776, -70.4442]
No. 3 Menggunakan Metode Trapesium Rekursif¶
Pada penggunaan mtode soal No.3 menggunakan metode Trapesium Rekursif untuk menghitung nilai integral $\int_{1}^{3} 2x$. Maka didahului membuat sebuah fungsi f(x), dan dilanjutkan ke fungsi / def trapezoidrekursif, pada program berikut ini
#No.3 def f(x): y = 2*x return y print(" METODE TRAPESIUM REKURSIF") print("f(x) = 2x") a = float(input("Masukkan batas bawah integral : ")) b = float(input("Masukkan batas atas integral : ")) iteras = int(input("Masukkan Banyak iterasi : ")) print("Iterasi\t\t n\t\t Trapesium") def trapezoidrekursif(f, a, b, iteras): hasil = 0 for iterasi in range(1,iteras,1): n = 2*iterasi h = (b-a)/n xi = a y = 0 for i in range(1,n): xi = xi+h y += f(xi) hasil = (h)*((f(a)+(2*y)+f(b))/2) print(iterasi,"\t\t",n,"\t\t",hasil) trapezoidrekursif(f, a , b, iteras)
pada program diatas dapat diketahui untuk memasukkan batas bawah integral dan batas atas integral dengan melakukan inputan terlebih dahulu, dilanjutkan banyak iterasi yang akan digunakan. Untuk soal kali ini menggunakan 4 kali iterasi , untuk bisa mencari nilai integral dari $\int_{1}^{3} 2x$ menggunakan trapezoid rekursif (trapesium rekursif). Berikut hasil program yang dijalankan :
METODE TRAPESIUM REKURSIF f(x) = 2x Masukkan batas bawah integral : 1 Masukkan batas atas integral : 3 Masukkan Banyak iterasi : 4 Iterasi n Trapesium 1 2 8.0 2 4 8.0 3 6 8.0
Sekian TerimaKasih ;