METODE NUMERIK DAN BISEKSI

TUGAS METODE NUMERIK
ROSE SETIANA
TEKNIK INFORMATIKA

A.Program, Algoritma, dan Flowchart Metode Tabulasi

a) Program dengan Menggunakan Phyton

#Program Tabulasi
#Soal Cari satu nilai x pada f(x)=x2 – 6x + 1, sehingga f(x) mendekati nilai 0, 
#batas presisi 10-7, dimana x berada diantara 0.1 dan 0.9.
#buatlah programnya dan tampilkan hasilnya.
import os
def f(x):
 # function for f(x). it regulary change when case change too.
 y = x**3 - 7*x + 1
 return y
def inputFirst(x1,x2): 
 # function for input.
 x1 = float(input('Enter x1 : '))
 x2 = float(input('Enter x2 : '))
 return (x1,x2)
def check1(x1,x2):
 # function to check if x1 and x2 are qualified to continue.
 times = f(x1)*f(x2)
 if(times<0):
  return (True)
 else:
  os.system('cls')
  print("Nothing found when x1=",x1," and x2= ",x2);
  return(False)
# def tesRun1(x1,x2):
#  check1(x1,x2)
# x1 = 0.0
# x2 = 0.0
# x1,x2 = inputFirst(x1,x2)
# print (f(x1),f(x2))
# tesRun1(x1,x2)
def update1(x1,x2):
 step = (x2-x1)/10.0
 x2 = x1+step
 if(check1):
  while((f(x2)*f(x1))>0):
   temp = x2
   x2 = x2+step
   x1 = temp
  return x1,x2
def checkStop(x1,x2,tolerance):
 while (abs(f(x1))>tolerance and abs(f(x2))>tolerance):
  x1,x2 = update1(x1,x2)
  ##print ("masuk sini")
 if(f(x1)>tolerance):
  return x2
 else:
  return x1
# print (update1(0,1))
# print (f(0),f(0.1),f(0.2))
def main():
 tolerance = 0.00000001
 x1 = 0.0
 x2 = 0.0
 x1,x2 = inputFirst(x1,x2)
 if(check1(x1,x2)):
  x1,x2=update1(x1,x2)
  result = checkStop(x1,x2,tolerance)
  print (result," -- ", f(result))
 else:
  print ("Doesn't work")
main()

b). Algoritma

Algoritma Metode Tabulasi
a.       Menentukan interval yakni X1 dan X2 dimana f(X1) * f(X2) < 0.
b.       Jika telah memenuhi syarat, maka membuat tabel di antara X1 dan X2 yang menyebabkan terjadinya perubahan tanda pada f(x).
c.        Proses terus berulang hingga f(x) = 0 atau f(x) < toleransi.

c). Flowchart

d). Hasil Program


B.Program, Algoritma, dan Flowchart Metode Biseksi

a) Program dengan Menggunakan DevC++

#include<stdio.h>
#include<math.h>
double f(double x)
{
      return(exp(-x)-x);
}
main()
{
      double fx[100],a,b,error;
      double fa,fb,xr,fxr;
      int n,i;
      printf("===========Metode Biseksi+++++++++++\n");
      printf("Masukkan batas bawah a = ");
      scanf("%lf",&a);
      printf("Masukkan batas atas b = ");
      scanf("%lf",&b);
      printf("Input toleransi error=");
      scanf("%lf",&error);
      printf("Input iterasi maksimum=");
      scanf("%d",&n);
             fa=f(a);
             fb=f(b);
             if(fa*fb>0)
                    printf("Akar tidak ditemukan dalam range %g - %g...\n", a, b);
             else{
                    i=0;
                    while (i<=n){
                           xr=(a+b)/2;
                           fx[i]=f(xr);
                           fxr=f(xr);
                           printf("%d a=%7lf b=%7lf xr=%7lf fa=%7lf fb=%7lf fxr=%7lf\n",i,a,b,xr,fa,fb,fxr);
                                  if(fx[i]*fa<0){
                                        b=xr;
                                         fb = f(xr);
                                  }
                                  else{
                                         a=xr;
                                         fa = f(xr);
                                  }
                           i++;
                           if(fabs(b-a)<=error || i>(n-1)) break;
                    }
                    printf("Akarnya adalah %g\n",xr);
                    printf("Nilai error = %g\n",fabs(fxr));
             }

b).Algoritma

    a. Definisikan fungsi f(x) yang akan dicari akarnya.
    b. Tentukan nialai a dan b.
    c. Tentukan toleransi e dan iterasi maksimum N.
    d. Hitung nilai f(a) dan f(b)
    e. Jika f(a) f(b) < 0 maka proses dihentikan karena tidak ada akar, bila tidak dilanjutkan.
    f. Hitung f(xr) bila  f(xr) f(a)<0 maka b=xr dan f(b)=f(xr) bila tidak a=xr dan f(a)=f(xr). Jika |b-a|           <e atau iterasi >iterasi maksimum maka prosese dihentikan, dan di dapatkan akar = xr, bila tidak         ulangi langkah menghitung nilai xr.

c). Flowchart

d) Hasil Program





























}

Komentar

Postingan populer dari blog ini

INFORMED AND UN-INFROMED SEARCH

KECERDASAN BUATAN