Cara Penghampiran Carian Berfungsi
Prolog
Artikel ini bertujuan untuk memberikan pemahaman yang menyeluruh tentang kerja dalaman kelas carian anggaran, direka bentuk untuk menganggarkan nilai dan parameter dalam domain sebenar untuk tugasan seperti sebagai pemasangan polinomial dan penyelesaian persamaan.
Soalan
Bagaimanakah kita boleh menganggarkan nilai atau parameter dalam domain sebenar (menggunakan nombor titik terapung berketepatan dua) untuk tugasan seperti menyesuaikan polinomial, mencari parameter dalam fungsi parametrik, atau menyelesaikan persamaan (sukar) (seperti transendental)?
Sekatan
Carian Anggaran
Carian anggaran adalah analog kepada carian binari tetapi mengalih keluar sekatan bahawa fungsi, nilai atau parameter yang dicari mestilah fungsi monotonik yang ketat. Walaupun kelonggaran ini, ia mengekalkan kerumitan O(log(n)) yang sama.
Algoritma
Pertimbangkan masalah berikut:
Memandangkan diketahui fungsi y = f(x) dan titik y0 yang diingini, kami bertujuan untuk mencari x0 supaya y0 = f(x0).
Maklumat Diketahui
Tidak diketahui:
Algoritma Langkah:
Mata probe x(i) =
Untuk setiap x(i), hitung jarak/ralat ee antara y = f(x(i)) dan y0.
Tingkatkan ketepatan secara rekursif.
Hadkan julat carian pada sekitar penyelesaian yang ditemui:
Tingkatkan ketepatan carian dengan mengurangkan langkah carian:
Pelaksanaan dalam C
Kod C yang disediakan menunjukkan pelaksanaan algoritma carian anggaran:
#include "approx.h" int main() { // Initialize the approx object with parameters approx aa; aa.init(0.0, 10.0, 0.1, 6, &ee); // Loop until a solution is found for (; !aa.done; aa.step()) { // Retrieve current x x = aa.a; // Compute y y = f(x); // Compute error ee = fabs(y - y0); } }
Atas ialah kandungan terperinci Bagaimanakah Kita Boleh Mengira Nilai Domain Sebenar Dengan Cekap Menggunakan Carian Penghampiran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!