二分法求函式極大值

2021-09-11 01:58:43 字數 889 閱讀 5178

題目描述

這棵函式是n次函式,經過觀察發現,在閉區間[l,r]內函式存在乙個極大值點,請求出這個極大值點x。

輸入格式:

第一行,乙個正整數n和兩個實數l、r,表示閉區間範圍。

第二行,n+1個實數,從左到右依次表示函式的係數。

輸出格式:

輸出x的值,四捨五入保留5位小數。

輸入樣例#1:

3 -0.9981 0.5

1 -3 -3 1

輸出樣例#1:
-0.41421

說明
上述樣例是n = 3,x^3 -3x^2 - 3x + 1

思路:高中數學知識,題中要求求函式的極大值,所以一定存在極大值,要先對其函式求導,在給定的區間內求出使導數等於0的

近似點即可。我們用乙個陣列來儲存求導之後的係數,再用二分法來使導數的值不斷逼近0.

#include

double arr[

100]

,n;//陣列arr用來儲存函式求導之後的係數是多少

doubleff(

double x)

//ff(x)函式表示帶入乙個函式值x之後導數的值是多少

return t;

}int

main()

while

(r-l>

0.0000001

)printf

("%.5lf"

,mid)

;//%.5lf有四捨五入的功能,所以這裡不需要+0.00005

return0;

}

不斷的努力,不斷的充實自己,加油!!!

MATLAB二分法求函式極值

一 演算法原理 1 計算f x 在有解區間 a,b 端點處的值,f a f b 2 計算f x 在區間中點處的值f x0 3 判斷若f x0 0,則x0即是根,否則檢驗 1 若f x1 與f a 異號,則知解位於區間 a,x0 b1 x0,a1 a 2 若f x0 與f a 同號,則知解位於區間 x...

bsearch函式二分法

在初學寫程式時,特別是剛開始接觸資料結構時,基本都是在查詢 各種排序,其實都是在為查詢做準備。今天我們來看看關於c語言中自帶的乙個二分法搜尋函式bsearch 通過這個函式可以簡單的認識到二分法搜尋的一些內在的原理,以及發散一點其他搜尋方法的東西。首先,介紹這個函式 函式原型 void bsearc...

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...