Memahami kerja dalaman carian penghampiran adalah penting dalam menyelesaikan masalah yang berkaitan dengan pemadanan polinomial, fungsi parametrik dan transendental persamaan. Pendekatan ini membolehkan anda menganggarkan nilai dan parameter dengan berkesan, walaupun apabila berurusan dengan fungsi yang tidak sepenuhnya monotonik.
Carian anggaran meniru konsep carian binari, tetapi ia tidak 't mengenakan kekangan fungsi yang dicari adalah monotonik. Begini cara ia berfungsi:
Berikut ialah pelaksanaan C yang dipermudahkan carian anggaran:
class approx { public: void init(double a0, double a1, double da, int n, double *e) { a0 = min(a0, a1); a1 = max(a0, a1); // Ensure a0 < a1 da = abs(da); this->n = n; e = e; e0 = -1.0; i = 0; a = a0; aa = a0; done = false; stop = false; } void step() { if ((e0 < 0.0) || (e0 > *e)) { e0 = *e; aa = a; } // Better solution if (stop) { i++; if (i >= n) { done = true; a = aa; return; } // Final solution a0 = aa - fabs(da); a1 = aa + fabs(da); a = a0; da *= 0.1; a0 += da; a1 -= da; stop = false; } else { a += da; if (a > a1) { a = a1; stop = true; } // Next point } } };
Andaikan anda ingin mencari nilai x supaya y = f(x) paling hampir dengan y0. Begini cara menggunakan kelas yang lebih kurang:
approx aa; double ee, x, y, x0, y0 = your_target_value; for (aa.init(0.0, 10.0, 0.1, 6, &ee); !aa.done; aa.step()) { x = aa.a; y = f(x); ee = abs(y - y0); }
Atas ialah kandungan terperinci Bagaimanakah Carian Penghampiran Boleh Mendapatkan Nilai dan Parameter dengan Cekap untuk Fungsi Bukan Monotonik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!