解方程 對分法

2022-03-18 05:02:32 字數 1211 閱讀 4037

對分法的理論依據是:設f是區間[a,b]上得連續函式,滿足f(a)f(b)<0,那麼f在a和b之間有乙個根r,使得f(r) = 0

演算法分析:

1.首先確定r在(a,b)區間內

2.令c0 = (a0 + b0)/2

if f(c0)f(a0) < 0

b1 = c0; a1 = a0

else

a1 = c0; b1 = b0

3.以此類推 

matlab**實現:

%**執行前先要建立乙個內聯函式,比如f=inline('

x^3 + x - 1')

function xc =bisect(f,a,b,tol)

if sign(f(a))*sign(f(b)) >=0

error(

'f(a)f(b)<0 not satisfied!')

endfa =f(a);

fb =f(b);

k =0;

while (b - a)/2 > tol %這裡的tol是指求根時要求的精度

c = (a + b)/2;

fc =f(c);

if fc ==0

break

end

if sign(fc)*sign(fa) <0

b =c;

fb =fc;

else

a =c;

fa =fc;

endendxc = (a + b)/2

演算法的精度:

設[a0,b0]為初始區間,

第一次對分後變為[a1,b1],長度變為(b0 - a0)/2

第一次對分後變為[a2,b2],長度變為(b0 - a0)/2^2

第n次對分後變為[an,bn],長度變為(b0 - a0)/2^n

我們取xc = (an + bn)/2 為根的近似,

則誤差為:|xc - r| < (b0 - a0)/2^(n+1)

我們定義:如果誤差小於0.5x10^(-p),那麼解精確到p位小數

這樣一來,我們就可以根據所要求的解的精確度來確定需要對分的次數n了。

例子:在區間[0,1]上求f(x)=cosx - x的根,精確到6位小數

根據誤差公式:(1-0)/2^(n+1) < 0.5*10^(-6)

可以求得 n >= 19.9

也就是說至少要對分20次才能達到所要求的精度。

解方程 C 二分法

題目詳情 給出n個整數和x,請問這n個整數中是否存在三個數a,b,c使得ax2 bx c 0,數字可以重複使用。第一行兩個整數n,x 第二行n個整數a i 表示可以用的數 1 n 1000,1000 a i x 1000 yes表示可以 no表示不可以 2 1 1 2 yes要使用二分法解答此題,我...

二分法求解方程

二分法是一種求解方程近似根的方法。對於乙個函式 f x f x 使用二分法求 f x f x 近似解的時候,我們先設定乙個迭代區間 在這個題目上,我們之後給出了的兩個初值決定的區間 20,20 20,20 區間兩端自變數 xx 的值對應的 f x f x 值是異號的,之後我們會計算出兩端 xx的中點...

解方程 二分法 HDU

problem description 給定方程 8x4 7x3 2x2 3x 6 y,請計算x在 0,100 範圍內的解。input 輸入資料首先是乙個正整數t 1 t 100 表示有t組測試資料。接下來t行,每行包含乙個實數y fabs y 1e10 output 請計算並輸出方程在範圍 0,1...