HITUNG SINUS

Contoh 4. HITUNG SINUS

  Hitung sin(x) dengan pendekatan:

  lim Sn; Sn = x - x33! + x55! - ... + (-1)n-1x2n-1(2n-1)! , n _ 1 n - ∝

  sin (x) ≈x-x 3 3! + x 5 5! - ... suku umum dapat ditulis sebagai : t 1 = (-1) i-1 x 2i-1 (2i-1)

  Program HITUNGSIN-1

  {Menghitung sin (x) ≈ x - x33! + x55! - ... }

  Kamus

  T : real {Suku terakhir dihitung} S : real {Jumlah deret }

  i : integer ≠ 0 { indeks suku yang terakhir dihitung}

  Algoritma

  i ← x {T1} S ←T

  i ←1 while not P(S, T, I) do

  {Kondisi berhenti P(S, T, i) akan diperinci lebih lanjut} i ←i+1 T ← (-1) (i-1)(x (2 i-1) )FACT (2i-1)

  {FACT (n) adalah fungsi untuk menghitung n!}

  S ← S +T {deret aditif}

  output(S)

  Seperti pada contoh S= 1 - 12 + 13 - ..., algoritma-algoritma ini menyangkut perhitungan suku ke-i secara langsung yang sangat tidak efisien dan memakan waktu. Pada hampir semua kasus, kita dapat memanfaatkan hasil perhitungan sebelumnya. Maka mula-mula kita definisikan hubungan berulang untuk setiap suku:

  To = harga awal Ti = f(Ti-1) , i > 0

  atau

  To = harga awal Ti = f(Ti-1, i) , i > 0

  Sehingga skema umum menjadi: Skema umum 1:

  Program HITUNGDERET1

  {Menghitung deret S = t 0 + t 1 +t 2 +... + tn atau S = t 0 t 1 t 2 ... tn }

  Kamus

  T : real {Sukufaktor terakhir dihitung} S : real {Jumlah deret aditifmultiplikatif}

  Algoritma

  T ←t0 S ←T

  while not P (S,T) do

  T ← f(T)

  {f(T) adalah fungsi yang menghitung harga T baru berdasarkan T yang

  lama }

  S ← g(S , T)

  {g(S , T) adalah fungsi yang mengubah harga S berdasarkan S yang lama

  dan T}

  { S adalah hasil yang diinginkan}

  Skema umum 2:

  Program HITUNGDERET2

  {Menghitung deret S = t 0 + t 1 + t 2 +... +tn atau S = t 0 t 1 t 2 ... tn }

  Kamus

  T : real {Sukufaktor terakhir dihitung} S : real {Jumlah deret aditifmultiplikatif}

  i : integer ≠ 0 { indeks sukufaktor yang terakhir dihitung}

  Algoritma

  T ←t0 S ←T

  i ←0 while not P (S,T) do

  {loop invariant: S = t 0 + t 1 + t 2,+... +ti

  atau S = t 0 t 1 t 2 ... ti} { i adalah indeks suku terakhir yang sudah termasuk dalam S } i ←i+1 T ← f(T, i)

  {f(T) adalah fungsi yang menghitung harga T yang baru

  berdasarkan T yang lama dan i} S ← g(S , T, i)

  {g(S , T, i) adalah fungsi yang mengubah harga S

  berdasarkan S yang lama, T dan i}

  { S adalah hasil yang diinginkan}

  Maka untuk algoritma hubungan berulang menghitung pendekatan exp(x):

  exp(x) ≈ lim 1 + x + x22! + x33! + ... + xnn!

  n - ∝

  Kita dapatkan:

  Hubungan berulang:

  To = 1 Ti = Ti-1 xi

  Kondisi berhenti:

  |T| ≤ε Sehingga algoritmanya menjadi:

  Program HITUNGEXP2

  {Menghitung exp (x) ≈ 1 + x + x22! + x33! + ..... xnn! }

  Kamus

  T : real {Suku terakhir dihitung} S : real {Jumlah deret }

  i : integer ≠ 0 { indeks suku yang terakhir dihitung}

  Algoritma

  T ← 1 {T0} S ←T

  i ←0 while abs(T) > ε do

  i ←i+1 T ← T xi S ← S +T

  output(S)

  Dan untuk perhitungan sin(x) dengan:

  Ti = (-1)2i-1x2i-1(2i-1)!

  lebih disukai suatu variabel k sehingga

  Ti = -Ti-1x2ki(ki-1) ki = ki -1 +2 To = x ko = 1

  Kondisi berhenti:

  |T| ≤ ε |S|

  Algoritmanya menjadi:

  Program HITUNGSIN2

  {Menghitung sin (x) ≈ x - x33! + x55! - ... }

  Kamus

  T : real {Suku terakhir dihitung} S : real {Jumlah deret }

  k : [1,3,5,...] { indeks suku yang terakhir dihitung}

  Algoritma

  k ←1 T ← x {T1}

  S ←T while ( abs(T) > ε abs(S) ) do

  k ←k+2 T ← -T x x (k(k-1)) S ← S +T {deret aditif}

  { abs(T) ≤ ε abs(S) Æ suku berikutnya sudah dapat diabaikan : } output(S)

  Latihan Soal

  1. Hitung cos(x) dengan pendekatan: S = 1 - x22! + x44! - ... + (-1)n x2n (2n )! , n _ 0

  dan kondisi berhenti: |T| ≤ ε |S|

  2. Buat suatu algoritma untuk menghitung cos(x) maupun sin(x) tergantung pada sebuah parameter p, p = 1 untuk cos(x) atau p = 2 utnuk sin(x) dengan memperhatikan bahwa kedua rumus untuk menghitung sin(x) dan cos(x) sangat mirip.

  3. Hitung pendekatan ⇔ο nexp(-x2) dx dengan pendekatan:

  x - x331!+ x552! -x773! ...

  4. Hitunglah konversi string “12345” menjadi nilai integer basis 10, atau sebuah string dengan basis bukan sepuluh, misalnya biner yaitu “000011111001” menjadi nilai integer basis 10 tanpa mengetahui posisinya, yaitu dengan memanfaatkan nilai sebelumnya yang sudah dihitung.

Dokumen yang terkait

Analisis Komparasi Internet Financial Local Government Reporting Pada Website Resmi Kabupaten dan Kota di Jawa Timur The Comparison Analysis of Internet Financial Local Government Reporting on Official Website of Regency and City in East Java

19 819 7

ANTARA IDEALISME DAN KENYATAAN: KEBIJAKAN PENDIDIKAN TIONGHOA PERANAKAN DI SURABAYA PADA MASA PENDUDUKAN JEPANG TAHUN 1942-1945 Between Idealism and Reality: Education Policy of Chinese in Surabaya in the Japanese Era at 1942-1945)

1 29 9

Improving the Eighth Year Students' Tense Achievement and Active Participation by Giving Positive Reinforcement at SMPN 1 Silo in the 2013/2014 Academic Year

7 202 3

Improving the VIII-B Students' listening comprehension ability through note taking and partial dictation techniques at SMPN 3 Jember in the 2006/2007 Academic Year -

0 63 87

The Correlation between students vocabulary master and reading comprehension

16 145 49

Improping student's reading comprehension of descriptive text through textual teaching and learning (CTL)

8 140 133

The correlation between listening skill and pronunciation accuracy : a case study in the firt year of smk vocation higt school pupita bangsa ciputat school year 2005-2006

9 128 37

Perancangan Dan Implementasi Algoritma Kompresi Lempel-ZIV-Welch Pada Weblog Berbasis PHP Dan Basis Data Mysql

9 99 1

Penerapan Algoritma Label-Setting Untuk Menentukan Jalur Terpendek Dari Dua Node Pada Peta Kota Bandung

6 50 55

Transmission of Greek and Arabic Veteri

0 1 22