[go: up one dir, main page]

Academia.eduAcademia.edu

Metode Incremental

Dengan mencari nilai P(x) dari x =-10 sampai x =-2 Akar dari persamaan tersebut terdapat antara-2 dan 0 Dengan mempersempit pencarian maka akar P(x) terdapat pada-0.8 dan-0.6 Untuk mencari hasil yang lebih akurat dengan menambahkan jumlah angka dibelakang koma maka didapat akar dari P(x) adalah-0.604 Code pada lembar kerja Fortran CHARACTER*1 AS

Metode Incremental Dengan mencari nilai P(x) dari x = -10 sampai x = -2 Akar dari persamaan tersebut terdapat antara -2 dan 0 Dengan mempersempit pencarian maka akar P(x) terdapat pada -0.8 dan -0.6 Untuk mencari hasil yang lebih akurat dengan menambahkan jumlah angka dibelakang koma maka didapat akar dari P(x) adalah -0.604 Code pada lembar kerja Fortran CHARACTER*1 AS F (x) = 4 * x ** 3 + 3 * x ** 2 + 2 * x + 1 FP (x) = 12 * x ** 2 + 6 * x + 2 WRITE (*,1) 1 FORMAT(' Program FindRoot - Finds roots of polynomial or transcendental equations.') WRITE (*,*) ' (1) Incremental Search,' WRITE (*,*) ' Select a method, enter 1/2/3/4/5/6/7/8/9/0 : ' READ (*,*) ms WRITE (*,3) 3 FORMAT(' Have you defined F(x) by editing? Enter Y/N :') READ (*,4) AS 4 FORMAT(A1) IF (AS.NE.'Y')GOTO 900 IF (ms.NE.4) GOTO 5 WRITE (*,*) ' Have you defined d[F(x)]/dx by editing? Enter Y/N :' READ (*,4) AS IF (AS.NE.'Y')GOTO 900 5 WRITE (*,*) ' Enter the lower and upper bounds of the roots : ' READ (*,*) xl, xr WRITE (*,*) ' How small should F(X) be for termination :' READ (*,*) epsilon WRITE (*,*) ' Trial # X F(X)' nt = 1 GOTO (10) ,ms 10 f1 = f(x1) 15 dx = (xr - x1) / 10 x = x1 + dx GOTO 50 50 fv = f(x) WRITE (*,52) nt, x, fv 52 FORMAT(I10,2E15.4) IF (ABS(fv).LT.epsilon) GOTO 900 nt = nt + 1 GOTO (110),ms 110 IF ((f1 * fv) .LT. 0) GOTO 115 x = x + dx GOTO 50 115 xr = x xl = x - dx GOTO 15 900 END Keterangan pada F(x) kita dapat mengganti persamaan kuadrat sesuai yang kita inginkan. Dengan format F(x) = a * x ** n +/- b*x**n +/- … y* x +/- z. Contoh : F(x) = 4 * x ** 3 + 3 * x ** 2 + 2 * x + 1 F(x) = 4x^3 + 3x^2 + 2x + 1 Metode Bisection Metode ini berbeda sedikit pada metode incremental, dimana range akar pencariannya diperbesar P(x) = 4x^3 + 3x^2 + 2x + 1 Linear Interpolation Newton Rhapsom Hasil akhirnya dapat ditemukan jika nilai x berada diantara hasil x sebelumnya. Code pada Fortran : CHARACTER*1 AS F (x1) = x ** 4 + 2 * x ** 3 + 5 * x ** 2 - 28 * x - 9 FP (x1) = 4 * x ** 3 + 6 * x ** 2 + 10 * x - 28 WRITE (*,1) 1 FORMAT(' Program ini dapat Membantu Saudara/i dalam Mencari Akar dari Sebuah Persamaan.') WRITE (*,*) ' Program ini Menggunakan Metode Newton-Raphson Iteration.' WRITE (*,*) WRITE (*,*) ' Masukkan Salah Satu Angka yang Anda Sukai (1/2/3/4/5/6/7/8/9/0) :)' WRITE (*,*) READ (*,*) ms WRITE (*,3) 3 FORMAT( ' Program ini menggunakan --f(x)= x^4 + 2x^3 + 5x^2 - 28x - 9--') WRITE (*,*) 'Tekan -Y- untuk melanjutkan, tekan -N- untuk keluar dari program ini.)' WRITE (*,*) READ (*,4) AS 4 FORMAT(A1) IF (AS.NE.'Y')GOTO 900 IF (ms.NE.4) GOTO 5 WRITE (*,*) ' d[F(x)]/dx = 4x^3 + 6x^2 + 10x - 28 ? Enter Y/N :)' WRITE (*,*) READ (*,4) AS IF (AS.NE.'Y')GOTO 900 5 WRITE (*,*) ' Masukkan batas-batas yang saudara/i inginkan ! :)' WRITE (*,*) READ (*,*) xl, xr WRITE (*,*) WRITE (*,*) ' Berapa kecil perhitungan F(x) yang saudara/i inginkan ? )' WRITE (*,*) ' Contoh: 1.E-5 ' WRITE (*,*) READ (*,*) epsilon WRITE (*,*) WRITE (*,*) ' Didapatkan # )' nt = 1 WRITE (*,*) ' E = Epsilon ' WRITE (*,*) WRITE (*,*) ' No. X F(x) ' GOTO (40) ,ms WRITE (*,*) 40 x = x1 fv = f(x) fpv= fp(x) 45 x = x - fv / fpv GOTO 50 50 fv = f(x) WRITE (*,52) nt, x, fv 52 FORMAT(I10,2E15.4) IF (ABS(fv).LT.epsilon) GOTO 900 nt = nt + 1 GOTO (140),ms 140 fpv = fp(x) GOTO 45 900 WRITE (*,*) Code Fotran untuk penggabungan keempat metode : CHARACTER*1 AS F (x) = 4 * x ** 3 + 3 * x ** 2 + 2 * x + 1 FP (x) = 12 * x ** 2 + 6 * x + 2 WRITE (*,1) 1 FORMAT(' Program FindRoot - Finds roots of polynomial or transcendental equations.') WRITE (*,*) ' Four options available : ' WRITE (*,*) ' (1) Incremental Search,' WRITE (*,*) ' (2) Bisection Search,' WRITE (*,*) ' (3) Linear Interpolation, and' WRITE (*,*) ' (4) Newton-Raphson Iteration.' WRITE (*,*) ' Select a method, 1/2/3/4 : ' READ (*,*) ms WRITE (*,3) 3 FORMAT(' Have you defined F(x) by editing? Enter Y/N :') READ (*,4) AS 4 FORMAT(A1) IF (AS.NE.'Y')GOTO 900 IF (ms.NE.4) GOTO 5 WRITE (*,*) ' Have you defined d[F(x)]/dx by editing? Enter Y/N :' READ (*,4) AS IF (AS.NE.'Y')GOTO 900 5 WRITE (*,*) ' Enter the lower and upper bounds of the roots : ' READ (*,*) xl, xr WRITE (*,*) ' How small should F(X) be for termination :' READ (*,*) epsilon WRITE (*,*) ' Trial # X F(X)' nt = 1 GOTO (10, 20, 30, 40) ,ms 10 f1 = f(x1) 15 dx = (xr - x1) / 10 x = x1 + dx GOTO 50 20 fr = f(xr) 25 x = .5 * (x1 + xr) GOTO 50 30 f1 = f (x1) fr = f (xr) 35 x = (xr * f1 - x1 * fr) / (f1 - fr) GOTO 50 40 x = x1 fv = f(x) fpv= fp(x) 45 x = x - fv / fpv GOTO 50 50 fv = f(x) WRITE (*,52) nt, x, fv 52 FORMAT(I10,2E15.4) IF (ABS(fv).LT.epsilon) GOTO 900 nt = nt + 1 GOTO (110, 120, 130, 140),ms 110 IF ((f1 * fv) .LT. 0) GOTO 115 x = x + dx GOTO 50 115 xr = x xl = x - dx GOTO 15 120 IF ((fr * fv).GE.0.) GOTO 125 xl = x GOTO 25 125 xr = x fr = fv GOTO 25 130 IF ((fr * fv).GE.0.) GOTO 135 xl = x fl = fv GOTO 35 135 xr = x fr = fv GOTO 35 140 fpv = fp(x) GOTO 45 900 END MATEMATIKA TEKNIK II – 110401096 – HISKIA BENINDO | 10