問題:用二分法求f(x) = 0的根。
首先我們先知道二分法的定義:
對於區間[a,b]上連續不斷且f(a)·f(b)<0的函式y=f(x),通過不斷地把函式f(x)的零點所在的區間一分為二,使區間的兩個端點逐步逼近零點,進而得到零點近似值的方法叫二分法。
演算法描述
演算法:(二分法)
(1)計算f(a), f(b),若f(a)f(b)>0 ,則演算法失效,停止計算
(2)令x=(a+ b)/2,計算f(x)
(3)若|f(x)|
(4)若f(a)*f(x)<0,則令b=x;否則令a=x
(5)返回第2步
源程式**及執行結果截圖
#include
using
namespace std;
/*@to do:獲取自變數x的函式值
@param x:自變數x
*/float
getbinarysearchfuntion
(float x)
/*@to do:獲取誤區範圍小於e的獲取區間[a,b]的根
@param a:開始查詢的下限
@param b:開始查詢的上限
@param e:精確度,便於跳出迴圈
*/float
getsearchanser
(float a,
float b,
float e)
while
(true
)//開始折半搜尋查詢if(
求方程根 (二分法)
二分法求方程的根 求下面方程的乙個根 f x x3 5x2 10x 80 0 若求出的根是a,則要求 f a 10 6 解法 對f x 求導,得f x 3x2 10x 10。由一元二次方程求根公式知方呈f x 0 無解,因此f x 恆大於0。故f x 是單調遞增的。易知f 0 0且f 100 0,所...
二分法求方程根
二分法是計算機上的一種常用演算法,下面列出計算步驟 step1 計算 step2 計算 step3 若 0,則若若 如下 erfen.m 有根區間 a,b 函式 y x 2 2 呼叫了erfenhanshu a 1 b 6 e 10 cnt 0 while e 0.1 cnt cnt 1 fa er...
C語言二分法求方程根
對於二分法求根,其實和弦截法思想很像,甚至更簡單。原理 先看如下的圖 a,b兩個點為跟的乙個邊界,通過一直縮小跟的邊界,從而獲取跟的值。1 知道函式 即方程的式子 這個好說,題上都有 2 迴圈的輸入a,b的橫座標的值,即x1,x2的初值,直到f x1 與f x2 的乘積為負數才停止。必須保證方程的跟...