2. Implementasi pseudo-code ke dalam Julia#

2.1. Contoh 1#

Contoh ini diambil dari Burden, Numerical Analysis 9th Edition. Suatu Taylor polynomial ke-\(N\) untuk \(f(x)=\ln(x)\) dengan \(x_0=1\) adalah

\[ P_N(x) = \sum_{i=1}^{N} \frac{(-1)^i+1}{i} (x-1)^i, \]

dan nilai dari \(\ln(1.5)\) dengan delapan digit desimal adalah \(0.40546511\). Konstruksi suatu algoritma untuk melihat berapa iterasi yang dibutuhkan agar mememnuhi kriteria berikut

\[ \lvert \ln(1.5) - P_N(1.5) \rvert < 10^{-5}. \]

Dari kalkulus kita tahu bahwa jika \(\sum_{n=1}^{\infty} a_n\) adalah alternating series dengan limit \(A\) yang memiliki besaran menurun, maka \(A\) dan deret parsial ke-\(N\) \(A_N = \sum_{m=1}^{N} a_N\) kurang dari besaran suku ke \((N+1)\)nya sehingga

\[ \lvert A - A_N \rvert \leq \lvert a_{N+1} \rvert \]
Listing 2.1 Pseudo-code Contoh 1.#
INPUT: nilai x, toleransi TOL, iterasi maksimum M.
OUTPUT: polynomial derajat N atau pesan gagal.

Step 1 Set N = 1;
           y = x - 1;
           SUM = 0;
           POWER = y;
           TERM = y;
           SIGN = -1;
           
Step 2 While N ≤ M do Step 3-5.
    Step 3 Set SIGN = -SIGN;
               SUM = SUM + SIGN . TERM;
               POWER = POWER . y;
               TERM = POWER/(N+1).
    Step 4 if |TERM| < TOL then
           OUTPUT(N);
           STOP.
    Step 5 Set N = N + 1.

Step 6 OUTPUT('Method Failed');
       STOP.
Listing 2.2 Julia-code Contoh 1.#
# Input
x = 1.5
TOL = 1e-5
M = 1000

# set
N = 1
y = x - 1
SUM = 0
POWER = y
TERM = y
SIGN = -1

while N <= M
    SIGN = -SIGN
    SUM = SUM + SIGN * TERM
    POWER = POWER * y
    TERM = POWER / (N + 1)
    
    if abs(TERM) < TOL
        println(N)
        break
    end
    N = N + 1
end
x = 1.5
TOL = 1e-5
M = 1000

# set
N = 1
y = x - 1
SUM = 0
POWER = y
TERM = y
SIGN = -1

while N <= M
    SIGN = -SIGN
    SUM = SUM + SIGN * TERM
    POWER = POWER * y
    TERM = POWER / (N + 1)
    
    if abs(TERM) < TOL
        println(N)
        println(SUM)
        break
    end
    N = N + 1
end
12
0.40545869196992246
0.40546511
0.40546511