Banyak perhitungan yang dimulai dengan tebakan yang diikuti dengan proses langkah demi langkah untuk menyempurnakan tebakan tersebut. Salah satu contohnya adalah proses menghitung akar kuadrat. Tidak ada rumus operasional untuk suatu fungsi yang mengambil suatu bilangan sebagai masukan dan menghasilkan akar kuadrat dari bilangan tersebut sebagai keluaran. Saat kita menulis /3 kami tidak menjelaskan cara menghitung keluaran, hanya menjelaskan jenis keluaran yang kami cari.

Deklarasikan fungsi terlebih duu

better <- makeFun((guess + x/guess)/2 ~ guess)
better(1, x=50)
## [1] 25.5
better(28, x=50)
## [1] 14.89286

Mengulangi suatu tindakan berarti melakukan tindakan itu berulang kali. (“Iterate” berasal dari kata Latin iterum , yang berarti “lagi.”) Seekor burung mengulangi seruannya, menyanyikannya berulang-ulang. Dalam matematika, “iterasi” memiliki keunikan. Saat kita mengulangi tindakan matematis tersebut, kita akan mengambil hasil dari sudut sebelumnya, bukan hanya mengulangi perhitungan sebelumnya

better(14.98214, x=50)
## [1] 9.159723
better(9.326589, x=50)
## [1] 7.343803
better(7.611854, x=50)
## [1] 7.090278
better(7.418713, x=50)
## [1] 7.079213
better(7.416199, x=50)
## [1] 7.079099
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.

h <- rfun(~ x, seed=7293)
argM(h(x) ~ x, bounds(x=-5:5))
## # A tibble: 2 × 3
##        x .output. concavity
##    <dbl>    <dbl>     <dbl>
## 1 -1.68      1.93         1
## 2  0.173     8.25        -1