Komputasi Numerik
AP - 2
LABORATORIUM KOMPUTASI
DEPARTEMEN FISIKA
UNIVERSITAS PADJADJARAN
2023
LEMBAR PENGESAHAN
KN 02
Deret Taylor
NPM : 140310220033
II. Percobaan
Buatlah program dengan menggunakan bahasa Python untuk menentukan
solusi dari persamaan non-linier berikut menggunakan metode Bisection,
iterasi titik tetap, dan NewtonRaphson :
a. x 2 − 3𝑥 − 10 = 0 untuk −1 ≤ 𝑥 ≤ 1
i. Listing Program
Untuk bisection
import math as mt
from sympy import *
while (abs(E)>0.000001):
c = (a+b)/2
fc = c**2 - 3*c -10
E = abs((b-a)/2)
if(fa*fc)<0:
b = c
fb = fc
else:
a = c
fa = fc
print("%f \t %f" %(c,E))
print("Nilai akar polinom yang dicari adalah {}
dengan galat: {} ".format(c,E))
Untuk fixed point iteration
import math as mt
def diff(x):
return 2*x - 3
x0 = 1
e = 0.00001
max = 100
−π π
b. sin(𝑥) = 0 untuk ≤x ≤
4 2
i. listing program
Untuk metode bisection
import math as mt
from sympy import *
from math import pi, sin
a = -pi/4
b = pi/2
E = 1
fa = mt.sin(a)
fb = mt.sin(b)
while (abs(E)>0.000001):
c = (a+b)/2
fc = mt.sin(c)
E = abs((b-a)/2)
if(fa*fc)<0:
b = c
fb = fc
else:
a = c
fa = fc
print("%f \t %f" %(c,E))
print("Nilai akar polinom yang dicari adalah
{} dengan galat: {} ".format(c,E))
Untuk metode Fixed iteration point
import math as mt
a = mt.pi/2
E = 1
while (E>0.001):
f = mt.sin(a)
E = abs(f-a)
a = f
print(('%f \t %f' % (a , E)))
print('nilai akar yang dicari adalah :
%.8f dengan galat : %.8f' % (a, E))
def f(x):
return sin(x)
def f_aksen(x):
return cos(x)
x0 = float(pi/2)
e = 0.00001
N = float(input('Jumlah iterasi maksimum:
'))
n = 0
while True:
n += 1
x1 = x0 - f(x0) / f_aksen(x0)
galat = abs(x1-x0)
if galat < e or n >= N:
print('Jumlah iterasi sampai
konvergen: ', n)
break
x0 = x1
if n >= N:
print('Iterasi maksimum telah tercapai')
else:
print('Akar dari f(x) adalah %f dengan
galat %f' %(x1, galat))
ii. Tampilan program
Untuk metode Bisection
Untuk Fixed iteration point
Untuk metode Newton-raphson
d. e−2 x −4 x untuk 0 ≤ x ≤1
i. Listing Program
import math as mt
from sympy import *
from math import pi, sin
fa = (exp(1**-2*a)) -4*a
fb = (exp(1**-2*b)) -4*b
while (abs(E)>0.000001):
c = (a+b)/2
fc = (exp(1**-2*c)) -4*c
E = abs((b-a)/2)
if(fa*fc)<0:
b = c
fb = fc
else:
a = c
fa = fc
print("%f \t %f" %(c,E))
print("Nilai akar polinom yang dicari adalah {}
dengan galat: {} ".format(c,E))
ii. Tampilan Program
e. x e−x − cos(2𝑥) 𝑢𝑛𝑡𝑢𝑘 0 ≤ 𝑥 ≤ 1 𝑑𝑎𝑛 1 ≤ 𝑥 ≤ 2 𝑑𝑎𝑛 − 1 ≤ 𝑥 ≤ 1
i. Listing Program
import math as mt
from sympy import *
from math import pi, sin
fa = a*exp(-a) + cos(2*a)
fb = b*exp(-b) + cos(2*b)
while (abs(E)>0.000001):
c = (a+b)/2
fc = c*exp(-c) + cos(2*c)
E = abs((b-a)/2)
if(fa*fc)<0:
b = c
fb = fc
else:
a = c
fa = fc
print("%f \t %f" %(c,E))
print("Nilai akar polinom yang dicari adalah {}
dengan galat: {} ".format(c,E))
ii. Tampilan Program
Untuk 0 ≤ 𝑥 ≤ 1
Untuk 1 ≤ 𝑥 ≤ 2
Untuk − 1 ≤ 𝑥 ≤ 1
Analisa
Metode Bisection
Pada awal kode baris 1 dan 2, kode Kode tersebut mengimpor beberapa
modul, yaitu; math dengan alias mt: modul yang berisi fungsi-fungsi
matematika, seperti fungsi eksponensial (exp) dan cosinus (cos).
sympy: modul untuk komputasi simbolik.pi dan sin dari modul math. Pada
baris 4 dan 5 kode meminta input dari pengguna dalam bentuk float untuk
parameter 1 (a) dan parameter 2 (b). Pada baris ke 6 kode tersebut
memberi nilai awal untuk galat (E) dengan 1. Pada baris ke 8 dan 9 Kode
tersebut menghitung nilai fungsi pada titik a dan b, yang fungsinya diganti
dengan
a. x 2 − 3𝑥 − 10 = 0 untuk −1 ≤ 𝑥 ≤ 1
−π π
b. sin(𝑥) = 0 untuk ≤x ≤
4 2
c. x 3−3 x−20=0 untuk 1 ≤ 𝑥 ≤ 4
d. e−2 x −4 x untuk 0 ≤ x ≤1
e. xe^(-x) − cos(2𝑥) 𝑢𝑛𝑡𝑢𝑘 0 ≤ 𝑥 ≤ 1 𝑑𝑎𝑛 1 ≤ 𝑥 ≤ 2 𝑑𝑎𝑛 − 1 ≤ 𝑥 ≤ 1
Metode fixed_position_iteration
Pada awal kode baris pertama mengimpor modul math dan memberi alias
mt, sama seperti baris pertama baris kedua mengimpor fungsi sqrt dari
modul math. Baris ke 4 kode mengambil input tebakan awal dari pengguna
dan mengonversinya ke tipe data float. Baris ke lima kode tersebut
memberi nilai awal untuk galat (E). pada baris ke 7 terdapat kode
perulangan while yang akan berjalan jika E>0,000001 dan pada baris
kedelapan fungsi yang dicari menggunakan metode fixed position iteration
dapat dimasukan. Pada 9nilai galat atau e diberi nilai baru dari rumus E =
abs(f-a). baris ke 10 kode mngupdate nilai a dengan nilai f, sehingga titik
awal iterasi pada iterasi berikutnya akan berubah. Dan baris ke 11 akan
mencetak nilai a dan E pada setiap iterasi, dengan format string yang
menggabungkan kedua nilai tersebut dengan menggunakan \t sebagai
pemisah. Pada baris ke 12 mengakhiri loop while. Baris ke 14 mencetak
nilai akhir a dan E dengan format string yang menampilkan kedua nilai
tersebut dengan delapan angka di belakang koma. Pesan yang dihasilkan
mencakup nilai akar dan galatnya.
Metode Newton_Raphson
Pada baris pertama kode mengimpor modul math yang akan digunakan
untuk memanggil fungsi trigonometri sin dan cos. Dan juga modul numpy
pada baris kedua. Pada baris 4 dan 5 fungsi (x) yang akan dicari nilainya
dapat diinput di baris 4 dan turunannya pada bari 5. Pada baris ke 7 kode
menginisialisasi nilai awal tebakan x0 dengan pi/2, yang merupakan titik
awal pencarian akar.dan pada baris 8 kode enginisialisasi nilai toleransi
galat e dengan 0.00001. pada baris ke 9 kode minta input pada user untuk
iterasi. Pada baris ke 10 variabel n diberikan nilai 0 sebagai pembatas
untuk perulangan while pada baris 12 yang dimana perulangan tersebut
akan terus berjalan jika galat < e atau n >= N. pada isi nya perulangan ini
akan menghitung x1 = x0 - f(x0) / f_aksen(x0). Galat dicari dengan
abs(x1-x0). Selama perulangan akan terprint ('Akar dari f(x) adalah %f
dengan galat %f' %(x1, galat)).
III. TUGAS AKHIR
a. Turunkan Persamaan 2.5 mengunakan pendekatan deret Taylor.
Pertama uraikan f( x i+1 ¿ di sekitar x i ke dalam Deret Taylor
seperti berikut :
0 = 𝑓( x i ) + ( x i+1 – x i) f ' ( x )
i
f ( xi )
x i+1=x i ' ( xi )
f
Dengan 𝑖 = 0,1,2,3, …. dan 𝑓′(𝑥𝑖 ) ≠ 0.
b. Hitunglah berapa iterasi yang diperlukan untuk mencapai konvergensi
dalam mencari solusi persamaan 𝑥 2 − 3𝑥 − 10 = 0menggunakan
metode Bisection dengan tingkat kesalahan yang diperbolehkan
bernilai 10−3 serta nilai 𝑎 = 1 dan 𝑏 = 3,5. Bandingkan dengan hasil
yang didapat jika dikerjakan secara analitik menggunakan Persamaan
2.1
Jawaban :
i. Listing program
a = 1
b = 3.5
while b-a >= 0.001 :
x = (a+b)/2
if x**2 - 3*x - 10 < 0:
a = x
if x**2 - 3*x -10 > 0:
b = x
else:
print("Akar persamaannya => ", x)
break
print("Akar yang paling dekat => ", x)
ii. Tamnpilan Program
iii. Analisa
Pada x 2 – 3 x – 10 solusi analitiknya adalah
−b ± √ b 2−4 ac
Akar =
2a
Masukan nilai :
3± √ (−3 ) − ( 4 )( 1 ) (−10 )
2
2( 1)
Sehingga mendapatkan hasilnya :
x 1 , x 2 = (−2,5)
def fungsi(x):
return mt.exp(-2*x)-(4*x)
x0 = 4.0
x1 = -1.0
e = 0.00001
max = 100
for iterasi in range(max):
x_olah = x0 - ((x0-x1)*fungsi(x0)/(fungsi(x0)-
fungsi(x1)))
if abs(fungsi(x_olah)) < e:
hasil = x_olah
print("Hasil hampiran akar:
{}".format(x_olah))
print("mencapai iterasi ke:
{}".format(iterasi))
break
else:
x1 = x0
x0 = x_olah
Metode Regulas falsi
import math as mt
def f(x):
return np.exp(-2*x)-4*x
while True:
n += 0
fa = f(a)
fb = f(b)
c = (a*fb-b*fa)/(fb-fa)
fc = f(c)
galat = abs(fc)
if galat < e or n >= N:
break
if fa*fc < 0:
b = c
else:
a = c
print('%f \t %f' %(c,e))
if n >= N:
print('Iterasi maksimum telah tercapai')
else:
print('Akar dari f(x) adalah %f dengan galat
%f' %(c, galat))
Tampilan Program
Untuk Regulas Falsi
Analisa Program
Kedua metode merupaka metode yang mirip jika dilihat namun
jika ditinjau kembali dapat diketahui perbedaan yang paling
terlihat dari keduanya adalah regula falsi meggunakan dua titik
batas dan nilai dari fungsi yang dimasukan dua titik tersebut
akan dicari dan digunakan untuk menentukan pendekatan baru
metode ini menggunakan pendekatan baru sebagai
perpotongan garis antara dua titik awal dengan garis yang
menghubungkan nilai fungsi di dua titik tersebut sedangkan
metode secant menghitung pendekatan baru dari nilai fungsi
berdasarkan duat titik batas dan menggunakan pendekatan baru
sebagai perpotongan garis anatara dua titik awal sumbu x.
d. Buatlah tabel perbandingan untuk metode Bisection, iterasi titik
tetap, NewtonRaphson, Secant, dan Regula Falsidalam
menentukan solusi persamaan 𝑒 −2𝑥 − 4𝑥 = 0 dengan parameter
yang sama (error, toleransi, batas/tebakan awal, dan hasilnya
apakah konvergen/divergen)untuk setiap metode. Sertakan pula
jumlah langkah/jumlah iterasiyang terjadi saat melakukan proses
perhitungan. Kemudian buatlah analisa berdasarkan tabel tersebut.