三分法 秦九昭演算法

2021-10-24 00:18:32 字數 1435 閱讀 5415

$daily english

神話是大眾的夢想,夢想是乙個人的神話。

myths are public dreams,dreams are private myths.

知識點:

洛谷p3382:

問題:值序列構成的影象具有凸性或凹性時 求解最值

解釋:在[l,r]區間中找乙個值x,使得f(x) = max。可以用三分法來求解這個x。

基本思想是:將[l,r]區間分成三段不斷逼近。區間分成三段所以需要確定兩個點。

這兩點我們習慣性把它們命名為:lmid,rmid。

這兩點的值很好確定:

左邊(lmid): l + 區間長度的1/3

右邊(rmid): r - 區間長度的1/3

tmp = (r - l) / 3.0;

lmid = l + tmp;

rmid = r - tmp;

如果f(lmid) < f(rmid):

那麼lmid之前部分對求解的x沒有影響

所以此時可以更新:

l = lmid。

否則,更新:r = rmid。

如果理解不了,自己畫乙個圖好好體會。

如果凸性或凹性影象的方程是乙個n次多項式,就要結合秦九昭演算法來求解f(x)。即三分過程中,f(lmid) , f(rmid)具體的值要使用秦九昭演算法來求解

問題:求解n次多項式f(x)的值

原理:

#洛谷p3382 # ac_code:

#include

using namespace std;

const

double eps =

1e-6

;const

int n =15;

double a[n]

;int n;

double l,r;

//秦九昭演算法:求解n次多項式f(x)的值

double

check

(double x)

return res;

}int

main()

//三分法:值序列構成的影象具有凸性或凹性時求最值

while

(r-l > eps)

else

}printf

("%.5lf\n"

,l);

return0;

}

三分法(洛谷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,...