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 ;