Numerical iteration

Gunakan fungsi R/mosaik Iterate(). Argumen pertama adalah ekspresi gelombang yang mendefinisikan fungsi yang akan diiterasi. Yang kedua adalah tebakan awal. Yang ketiga adalah jumlah langkah iterasi. Contohnya:

##Iterate(better(guess, x=55) ~ guess, x0=1, n=8)
##   n     guess
## 1 0  1.000000
## 2 1 28.000000
## 3 2 14.982143
## 4 3  9.326590
## 5 4  7.611854
## 6 5  7.418713
## 7 6  7.416199
## 8 7  7.416198
## 9 8  7.416198

Keluaran yang dihasilkan Iterate()berupa bingkai data. Tebakan awal ada pada baris dengan n=0. Baris yang berurutan memberikan keluaran, langkah demi langkah, dengan setiap langkah iterasi baru.

Dari mana asal better()?

Untuk menghitung akar kuadrat, kami menggunakan fungsi tersebut

better(y)=1/2(y+x/y)

Anggaplah Anda kebetulan mendapat tebakan yang benary=√x. Tidak ada cara untuk memperbaiki tebakan yang benar, jadi hal terbaik yang dapat dilakukan Better() adalah mengembalikan tebakan tersebut tanpa perubahan. Memang benar:

better(y=√x)=1/2(√x + x/√x)=1/2(√x+√x)=√x

Tentu saja tebakan awal y mungkin salah. Ada dua cara untuk melakukan kesalahan:

  1. Tebakannya terlalu kecil y<√x.
  2. Tebakannya terlalu besar √x<y.

Rumus untuk better() adalah rata-rata tebakan Y dan jumlah lainnya x/y. jika y terlalu kecil, kalau begitu x/y pasti terlalu besar. Jika y terlalu besar kalau begitu x/y pasti terlalu kecil.

Seperti dugaan, kedua besaran tersebut y dan x/y setara dalam arti bahwa better(y)= better (x/y). Rata-rata dari x/y akan lebih dekat dengan hasil sebenarnya daripada hasil terburuk y atau x/y; rata-rata akan menjadi tebakan yang lebih baik.