Anda di halaman 1dari 14

MAKALAH

“METODE NUMERIK”

TAMRIN
105841102818

PROGRAM STUDI INFORMATIKA


FAKULTAS TEKNIK
UNIVERSITAS MUHAMMADIYAH MAKASSAR
2020
Kata Pengantar

Puji syukur kepada Allah SWT, karena hanya karena rahmat, rizki, taufik, serta
hidayah-Nya. Saya masih dapat menyelesaikan tugas yang di berikan kepada saya, tak lupa
Shalawat serta salam saya hantarkan kepada Nabi Muhammad SAW, karena atas kerja keras
beliau saya dan semua umat manusia masih dapat menikmati nikmat Iman, nikmat Islam, dll.
Dan saya sangat berterima kasih kepada Bapak Fachrim Irhamna Rahman, karena
telah mengusahakan memberi mengarahkan kepada saya dan teman-teman bagaimana belajar
Metode Numerik. Dan saya ucapkan juga terima kasih atas dukungan dari teman-teman
sekalian.
Atas perhatiannya saya ucapkan terima kasih banyak, dan saya meminta maaf apabila
masih banyak kekurangan dari makalah saya ini. Kritik dan saran akan saya terima dengan
lapang dada.

Makassar,22 Januari 2019


Hormat kami

Penulis
Daftar Isi
Sampul ……………………………………………………..…………………………………...
Kata Pengantar……………………………………….…………………………………………
Daftar Isi ………………………………………………………………………………………..
BAB I PENDAHULUAN ……………………………………………………………………...
A. Latar Belakang …………………………………………………………………………
B. Rumusan Masalah ……………………………………………………………………...
C. Tujuan ………………………………………………………………………………….
BAB II PEMBAHASAN ………………………………………………………………………
1. Pengertian False Postion ………………………………………………………………
2. Coding dari False Postion ……………………………………………………………...
3. Pengertian Bisection ……………………………………………………………………
4. Coding dari Bisection ………………………………………………………………….
5. Pengertian Metode Newton Rapson ……………………………………………………
6. Coding dari Metode Newton Rapson ……………………………………………….....
BAB III PENUTUP ……………………………………………………………………………
A. Kesimpulan …………………………………………………………………………….
B. Saran ………………………………………………………………………………….
BAB I
PENDAHULUAN
A. Latar Belakang
Ada beberapa metode numerik yang dapat diimplementasikan untuk mengkaji
keadaan energi (energy state) dari sebuah sistem potensial sumur berhingga. Diantara
metode-metode yang dikenal adalah metode bagi dua (bisection), metode Secant,
Newton-Raphson, metode posisi palsu dan yang lainnya. Metode-metode ini tentunya
memiliki kelebihan dan kekurangannya masing-masing. Tetapi, secara umum metode
Newton-Raphson merupakan metode yang biasa digunakan diantara yang lainnya
mengingat kecepatan konvergensi serta kesederhanaan algoritmanya. Penelitian ini
dilakukan untuk mengkaji beberapa metode numerik tersebut untuk penyelesaian
masalah swanilai atau keadaan energi pada sistem yang berada dibawah pengaruh
medan potensual sumur berhingga.

B. Rumusan Masalah
1. Apa yang dimaksud dengan False Postion
2. Apa yang dimaksud dengan Bisection
3. Apa yang dimaksud dengan Metode Newton Rapson

C. Tujuan
1. Dapat mengetahui False Postion
2. Dapat mengetahui Bisection
3. Dapat mengetahui tentang Metode Newton Rapson
BAB II
PEMBAHASAN

1. Pengertian False Postion


Metode Regula False atau false position (posisi palsu), metoda ini merupakan alternatif
perbaikan dari metoda interval bagi-dua yang kurang efisien bagi pendekatannya.
Kekurangan metoda bagi-dua adalah dalam membagi selang mulai dari x lower sampai
xupper menjadi bagian yang sama; besaran f(xl) dan f(xu) tidak diperhitungkan , misalnya f(xl)
apakah lebih dekat ke nol atau ke f(xu).
Metoda ini memanfaatkan pengertian grafis dengan menghubungkan titik itu dengan sebuah
garis lurus. Perpotongan garis ini dengan sumbu x merupakan taksiran akar yang diperbaiki.
Kenyataan ini menggambarkan penggantian kurva oleh garis lurus sebagai “posisi palsu dari
akarnya.

2. Coding dari False Postion


import java.util.Scanner;
public class falsePosition {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.print("Masukkan Jumlah konstanta yang diingikan : ");
int x = sc.nextInt();
double[] k = new double[x];
double[] p = new double[x];
String[] Op = new String[x];

for(int i = 0; i<x; i++){


if ( i > 0){
System.out.print("Masukkan Operasi : ");
Op[i] = sc.next();
}
System.out.print("Masukkan konstanta : ");
k[i] = sc.nextDouble();
System.out.print("Masukkan pangkat : ");
p[i] = sc.nextDouble();
}
System.out.print(" Fungsi : ");
for (int i = 0; i<x; i++){
if(Op[i] !=null){
System.out.print(" "+Op[i]);
}
System.out.print(" "+k[i]+"X^"+p[i]);
}
System.out.println();
System.out.print("Masukkan Xn : ");
double a = sc.nextDouble();
System.out.print("Masukkan Xn+1 : ");
double b = sc.nextDouble();
System.out.print("Galat :");
double galat = sc.nextDouble();

System.out.println("| No | Xn | Xn+1 | f(Xn) | f(xn+1} | Xmid | f(Xmid) |");


System.out.println("---------------------------------------------------------");
double c;
int nomor = 0;
boolean cekGalat = false;
while (!cekGalat){
nomor++;
double FungsiA = 0;
double FungsiB = 0;
double FungsiC = 0;
for (int i = 0; i<x; i++){
if (Op[i] !=null && Op[i].equals("*")){
FungsiA *= Fungsi(k[i],p[i],a);
FungsiB *= Fungsi(k[i],p[i],b);
}else if (Op[i] !=null && Op[i].equals("-")){
FungsiA -= Fungsi (k[i],p[i],a);
FungsiB -= Fungsi (k[i],p[i],b);
}else if (Op[i]!=null && Op[i].equals("/")){
FungsiA /= Fungsi (k[i],p[i],a);
FungsiB /= Fungsi (k[i],p[i],b);
}else{
FungsiA += Fungsi(k[i],p[i],a);
FungsiB += Fungsi (k[i],p[i],a);
}
}
System.out.printf("| %2d ",nomor);
System.out.printf("| %f ",a);
System.out.printf("| %f ",b);
System.out.printf("| %f ",FungsiA);
System.out.printf("| %f ",FungsiB);

c= a-FungsiA*((b-a)/(FungsiB-FungsiA));

for (int i= 0; i<x; i++){


if(Op[i]!=null && Op[i].equals("*")){
FungsiC *= Fungsi(k[i],p[i],c);
}else if (Op[i] !=null &&Op[i].equals("-")){
FungsiC -= Fungsi(k[i],p[i],c);
}else if (Op[i]!=null && Op[i].equals("/")){
FungsiC /= Fungsi(k[i],p[i],c);
}else{
FungsiC += Fungsi(k[i],p[i],c);
}
}
System.out.printf("| %f ",c);
System.out.printf("| %f ",FungsiC);
if (Mutlak(FungsiC)<= galat){
cekGalat = true;
}
if(FungsiA*FungsiB > 0){
a = c;
}else {
b=c;
}
System.out.println();
}

System.out.println("-----------------------------------------------------------------------
---");
}
private static double Fungsi(double x,double y, double isi){
return x*Math.pow(isi,y);
}
private static double Mutlak(double n){
if (n <0){
return -1*n;
}else{
return n;
}
}

Output :

3. Pengertian Bisection
Beberapa persamaan polynomial yang sederhana dapat diselesaikan dengan theorema sisa,
sehingga tidak memerlukan metode numerik dalam menyelesaikannya, karena metode
analitik dapat dilakukan. Tetapi bagaimana menyelesaikan persamaan. Tampaknya
sederhana, tetapi untuk menyelesaikan persamaan non linier merupakan metode pencarian
akar secara berulang-ulang. Metode yang akan dibahas pada bab ini adalah metode bisection
Sebelum lebih jauh membahas metode bisection, ada sebuah teorema yang senantiasa
digunakan dalam proses iterasi sebagai berikut.
Suatu fungsi f(x) terdefinisi dan diketahui sebuah range . Fungsi f(x) akan mempunyai akar
bila dan berlawanan tanda atau memenuhi. Ide awal metode ini adalah metode tabel, dimana
area dibagi menjadi N bagian. Hanya saja metode bisection ini membagi range menjadi 2
bagian, dari dua bagian ini dipilih bagian mana yang mengandung akar dan bagian yang tidak
mengandung akar dibuang. Hal ini dilakukan berulang-ulang hingga diperoleh akar
persamaan.
Metode Bisection ini paling sederhana dan paling intractif dari metode pendekatan berturut-
turut untuk melokalisasi sebuah persamaan akar f(x) = 0 dalam selang [a,b].
Metode ini didasrkan pada teorema nilai antara untuk fungsi kontinu., yang menyatakan pada
suatu selang [a,b] sedemikian sehingga titik-titik ujung f berlawanan tanda, missal f(a) < 0,
harus mengandung suatu akar. Metode ini merupakan pengulangan pembagiduaan selang
yang memenuhi teorema di atas.
Metode bisection juga disebut metode root-finding yang mana interval bisect dengan
berulang dan memilih sub interval yang mana akarnya harus ada proses berikutnya. metode
ini sangat simple tapi relatif lambat. karena, biasanya sering memperoleh perkiraan yang
masih kasar sebagai solusi yang kemudian digunakan untuk starting point metode konvergen
dengan cepat.

Prosedur penghitungan :
1. Hitung fungsi interval yang sama dari x sampai pada perubahan tanda dari
fungsi f(xn) dan f(xn+1) , yaitu apabila f(xn) x f(xn+1) < 0 .
2. Estimasi pertama dari akar xt dihitung dengan
xt = 1/2{ xn + xn+1 } (1)
3. Buat evaluasi berikut untuk menentukan di dalam sub interval mana akar
persamaan berada :
a. Jika f(xn) x f(xn+1) < 0 , akar persamaan berada pada sub interval pertama,
kemudian tetapkan xn+1 = xt dan lanjutkan pada langkah ke 4.
b. Jika f(xn) x f(xn+1) > 0 , akar persamaan berada pada sub interval kedua,
kemudian tetapkan xn = xt dan lanjutkan pada langkah ke 4.
c. Jika f(xn) x f(xn+1) = 0 , akar persamaan adalah xt dan hitungan selesai.
4. Hitung perkiraan baru dari akar dengan persamaan (1)
5. Apabila perkiraan baru sudah cukup kecil (sesuai dengan batasan yang
ditentukan ), maka hitungan selesai, dan xt adalah akar persamaan yang dicari.
jika belum, maka hitungan kembali ke langkah 3.
4. Coding dari Bisection
import java.util.Scanner;
public class Main {
public static void main (String[] args){
System.out.println("Pemodelan dan Metode Numerik");
System.out.println("Metode Bisection");
System.out.println("f(x) = x^3 - 7x - 1");
Scanner input = new Scanner(System.in);
System.out.print("Masukkan Nilai Xn : ");
Double a = input.nextDouble();
System.out.print("Masukkan Nilai Xn+1 : ");
Double b = input.nextDouble();
Double c;
System.out.print("Masukkan Nilai Galak : ");
Double e = input.nextDouble();
boolean cekgalak = false;
int nomor = 0;
System.out.println("| no | Xn | Xn+1 | Xmid | f(Xn) |
f(Xn+1) | f(Xmid) ");
while (!cekgalak){
nomor++;
c = (a+b)/2;
System.out.printf("| %2d ", nomor);
System.out.printf("| %f ", a);
System.out.printf("| %f ", b);
System.out.printf("| %f ", c);
System.out.printf("| %f ", Fungsi(a));
System.out.printf("| %f ", Fungsi(b));
System.out.printf("| %f ", Fungsi(c));
System.out.println();
if (Mutlak(Fungsi(c))<=e){
cekgalak = true;
}
if (Fungsi(a)*Fungsi(c)>0){
a = c;
}else {
b = c;
}
}
}
private static Double Fungsi (Double x){
return Math.pow(x,3)-7*x+1;
}
private static Double Mutlak (double n){
if (n<0){
return -1*n;
}else {
return n;
}
}
}

Output :
5. Pengertian Metode Newton Rapson
Metode Newton-Raphson didasarkan pada pemakaian turunan (yakni kemiringan) suatu
fungsi untuk menaksir pemotongan dengan sumbu peubah bebasnya-yakni akar. Taksiran ini
didasarkan pada uraian deret Taylor

f ( x r +1 )=f ( x r ) + ( x r +1−x r ) f ' ( x r )

Dimana x r adalah tebakan awal pada akarnya dan x r +1 adalah titik tempat garis singgung

memotong sumbu x. pada perpotongan ini, f ( x r +1 ) yang didefinisikan sama dengan nol, dapat
disusun kembali untuk menghasilkan

f ( xr)
f ( x r +1 )=x r −
f ' ( xr )

Yang merupakan bentuk persamaan tunggal dari Metode Newton Raphson.

Bentuk persamaan majemuk diturunkan dalam gaya yang identik. Namun, deret Taylor
dengan peubah majemuk harus dipakai dengan tujuan memperhitungkan kenyataan bahwa
lebih dari satu peubah bebas penyumbang penentuan akar tersebut. Untuk kasus dua peubah,
deret Taylor orde pertama dapat dituliskan untuk masing-masing persamaan linear sebagaian

Sama halnya seperti untuk versi persamaan tunggal, taksiran akar berpandangan dengan titik-
titik pada mana ur +1 dan v r+1 sama dengan nol. Untuk situasi ini, persamaan dapat disusun
ulang untuk memberikan

Karena hampir semua yang dengan tikalas r diketahui (berpandangan terhadap tebakan atau
hamp[ir yang terakhir), yang tidak diketahui adalah x r +1 dan y r +1. Jadi, persamaan berupa
himpunan dua persamaan linear dengan dua bilangan anu. Akibatnya, dapat deterapkan
manupukasi aljabar (misalnya aturan Cramer) untuk memecahkan

Penyebut dari masing-masing persamaan ini secara formal diacu sebagai determinan jacobi
dari sistem tersebut.

Contoh pada persamaan

u ( x , y )=x 2 + xy−5=0

v ( x , y ) = y+ 2 xy −15=0

6. Coding dari Metode Newton Rapson


import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner (System.in);
System.out.print("Masukkan data yang di inginkan : ");
int x = input.nextInt();
double[] k = new double[x];
double[] p = new double[x];
String[] op = new String[x];

System.out.print("Masukkan Xn : ");
double a = input.nextDouble();
System.out.print("Masukkan nilai galat : ");
double galat = input.nextDouble();

for (int i = 0; i<x; i++){


if (i> 0){
System.out.print("Masukkan Operasi : ");
op[i] = input.next();
}
System.out.print("Masukkan konstanta : ");
k[i] = input.nextDouble();
System.out.print("Masukkan pangkat : ");
p[i] = input.nextDouble();
}
System.out.print("Fungsi Rumus : ");
for (int i=0; i<x; i++){
if (op[i] !=null){
System.out.print(" "+op[i]);
}
System.out.print(" "+ k[i] + "x^"+p[i]);
}
System.out.println();

double [] TurunanK = new double[x];


double [] TurunanP = new double[x];
String [] NewOp = new String [x];
System.out.print ("Rumus Turunan : ");
for (int i = 0; i<x; i++){
TurunanK [i] = k [i] * p[i];
TurunanP [i] = p [i] - 1;
NewOp [i] = op[i];
if (TurunanK[i] == 0 && TurunanP[i] == -1){
TurunanK[i] = 0;
TurunanP[i] = 0;
NewOp[i] = "+";
break;
}
if (op[i] != null){
System.out.print(" "+op[i]);
}
System.out.print(" "+ TurunanK[i] + "x^"+TurunanP[i]);
}
System.out.println();

double b;
int nomor = 0;
boolean cekgalat = false;
System.out.println("| No | Xn | Xn+1 | f(Xn) | F'(Xn) | f(Xn+1) | ");
System.out.println("----------------------------------------");

while (!cekgalat) {
nomor++;
double FungsiA = 0; //f(xn)
double FungsiA_Turunan = 0; // F'(Xn)
double FungsiB = 0; // F(Xn+1)
//f(xn)
for (int i = 0; i < x; i++) {
if (op[i] != null && op[i].equals("*")) {
FungsiA *= FungsiKonstana(k[i], p[i], a);
} else if (op[i] != null && op[i].equals("/")) {
FungsiA /= FungsiKonstana(k[i], p[i], a);
} else if (op[i] != null && op[i].equals("-")) {
FungsiA -= FungsiKonstana(k[i], p[i], a);
} else {
FungsiA += FungsiKonstana(k[i], p[i], a);
}
}
//F'(xn)
for (int i = 0; i < x; i++) {
if (NewOp[i] != null && NewOp[i].equals("*")) {
FungsiA_Turunan *= FungsiKonstana(TurunanK[i], TurunanP[i], a);
} else if (NewOp[i] != null && NewOp[i].equals("/")) {
FungsiA_Turunan /= FungsiKonstana(TurunanK[i], TurunanP[i], a);
} else if (NewOp[i] != null && NewOp[i].equals("-")) {
FungsiA_Turunan -= FungsiKonstana(TurunanK[i], TurunanP[i], a);
} else {
FungsiA_Turunan += FungsiKonstana(TurunanK[i], TurunanP[i], a);
}
}
b = a - (FungsiA / FungsiA_Turunan);

for (int i = 0; i < x; i++) {


if (op[i] != null && op[i].equals("*")) {
FungsiB *= FungsiKonstana(k[i], p[i], b);
} else if (op[i] != null && op[i].equals("/")) {
FungsiB /= FungsiKonstana(k[i], p[i], b);
} else if (op[i] != null && op[i].equals("-")) {
FungsiB -= FungsiKonstana(k[i], p[i], b);
} else {
FungsiB += FungsiKonstana(k[i], p[i], b);
}
}

System.out.printf("| %2d ", nomor);


System.out.printf("| %f ", a);
System.out.printf("| %f ", b);
System.out.printf("| %f ", FungsiA);
System.out.printf("| %f ", FungsiA_Turunan);
System.out.printf("| %f ", FungsiB);

//stop perulangan
if (Mutlak(FungsiB) <= galat) {
cekgalat = true;
}
a = b;
System.out.println();
}
}

private static double FungsiKonstana(double x, double y, double isi){


return x*Math.pow(isi,y);
}

private static double Mutlak(double n){


if (n < 0){
return -1*n;
}else {
return n;
}
}
}
Output :
BAB III
PENUTUP
A. Kesimpulan
Metode numerik memberikan cara-cara untuk menyelesaikan bentuk persamaan
tersebut secara perkiraan hingga didapat hasil yang mendekati penyelesaian secara
benar (eksak). Penyelesaian numerik dilakukan dengan perkiraan yang berurutan
(iterasi), maka tiap hasil akan lebih teliti dari perkiraan sebelumnya. Dengan berbagai
iterasi yang dianggap cukup, akan didapat hasil perkiraan yang mendekati hasil yang
benar (eksak) dengan toleransi yang diijinkan. Salah satu cara yang sederhana untuk
penyelesaian perkiraan, yaitu dengan menggambarkan fungsi tersebut lalu dicari titik
potongnya dengan sumbu-x yang menunjukkan akar dari persamaan tersebut, Cara
lain yaitu dengan cara coba banding, yaitu dengan mencoba nilai x sembarang
kemudian dievaluasi apakah nilai f (x) = 0, jika nilai x tidak sama dengan nol lalu
dicoba nilai x yang lain, cara ini diulang terus menerus hingga didapat nilai f (x) = 0,
untuk suatu nilai x tertentu, yang merupakan akar dari persamaan yang diselesaikan.

B. Saran
Makalah yang kami buat ini bukanlah karya yang sempurna, melainkan sesuatu yang
lahir dari kerja keras, tentunya dalam panyusunan sebuah makalah tidaklah luput dari
kekurangan.Oleh karena itu kami sangat mengharapkan masukan dan kritikan rekan-
rekan pembaca agar dapat lebih menggali dan mengembangkan wawasan
pengetahuan mereka mengenai materi saya Statistika, mudah-mudahan dengan
terciptanya makalah ini khususnya bagi penyusun dan umumnya bagi pembaca dapat
membuat hasil karya yang lebih baik dari ini.

Anda mungkin juga menyukai