資料結構與演算法 11 三分法

2022-06-05 09:36:07 字數 1084 閱讀 8746

求函式的駐點

從高數或者大霧借鑑的思路,只要數值求導即可,加上二分法的思想

如題,給出乙個 n 次函式,保證在範圍 [l, r]內存在一點 xx,使得 [l, x] 上單調增,[x, r] 上單調減。試求出 x 的值。

第一行一次包含乙個正整數 nn 和兩個實數 l, r 含義如題目描述所示。

第二行包含 n + 1個實數,從高到低依次表示該 nn 次函式各項的係數。

輸出為一行,包含乙個實數,即為 x 的值。若你的答案與標準答案的相對或絕對誤差不超過 \(10^\)則算正確。

輸入 #1複製

3 -0.9981 0.5

1 -3 -3 1

輸出 #1複製

-0.41421
對於 \(100\%\) 的資料,\(6 \le n \le 13\),函式係數均在 [-100,100] 內且至多 15 位小數,\(|l|,|r|\leq 10\) 且至多 15 位小數。\(l\leq r\)。

【樣例解釋】

如圖所示,紅色段即為該函式 \(f(x) = x^3 - 3 x^2 - 3x + 1\) 在區間 [-0.9981, 0.5] 上的影象。

當 x = -0.41421 時影象位於最高點,故此時函式在 [l, x] 上單調增,[x, r] 上單調減,故 x = -0.41421,輸出 -0.41421。

#include #include float error = 1e-7;

int n;

double l, r, a[15], mid1, mid2;

double f(double x)

int main()

printf("%lf\n", (l + r) / 2);

return 0;

}

三分法(洛谷3382 模板 三分法)

如題,給出乙個n次函式,保證在範圍 l,r 內存在一點x,使得 l,x 上單調增,x,r 上單調減。試求出x的值。輸入格式 第一行一次包含乙個正整數n和兩個實數l r,含義如題目描述所示。第二行包含n 1個實數,從高到低依次表示該n次函式各項的係數。輸出格式 輸出為一行,包含乙個實數,即為x的值。四...

三分法小結

二分法作為分治中最常見的方法,適用於單調函式,逼近求解某點的值。但當函式是凸性函式時,二分法就無法適用,這時三分法就可以 大顯身手 如圖,類似二分的定義left和right,mid left right 2,midmid mid right 2 如果mid靠近極值點,則right midmid 否則...

三分法查詢

我們都知道 二分查詢 適用於單調函式中逼近求解某點的值。如果遇到凸性或凹形函式時,可以用三分查詢求那個凸點或凹點。下面的方法應該是三分查詢的乙個變形。如圖所示,已知左右端點l r,要求找到白點的位置。思路 通過不斷縮小 l,r 的範圍,無限逼近白點。做法 先取 l,r 的中點 mid,再取 mid,...