Python二分法求方程的根

2021-10-12 07:35:34 字數 1970 閱讀 9177

python二分法求方程的根

對於區間[a,b]上連續不斷且f(a)·f(b)<0的函式y=f(x),通過不斷地把函式f(x)的零點所在的區間一分為二,使區間的兩個端點逐步逼近零點,進而得到零點近似值的方法叫二分法。

注意雙擊**框可以橫屏,更方便檢視:)

下面用二分法求解方程x3-x2+x-1=0

def

func

(x):

return x**

3-x**

2+x-1a=

-1b=2

fa=func(a)

fb=func(b)

while a<=b:

x0=(a+b)/2

fx0=func(x0)

ifabs

(fx0)

<

10e-6:

print

('x0:'

,x0,fx0,

'<10e-6'

)print

(x0,

'是用二分法求解方程的根'

)break`在這裡插入**片`

if fa*fx0<0:

b=x0

fb=fx0

print

('解在左側,a:'

,a,' b:'

,b,' x0:'

,x0)

elif fb*fx0<0:

a=x0

fa=fx0

print

('解在右側,a:'

,a,' b:'

,b,' x0:'

,x0)

執行結果

解在右側,a: 0.5 b: 2 x0: 0.5

解在左側,a: 0.5 b: 1.25 x0: 1.25

解在右側,a: 0.875 b: 1.25 x0: 0.875

解在左側,a: 0.875 b: 1.0625 x0: 1.0625

解在右側,a: 0.96875 b: 1.0625 x0: 0.96875

解在左側,a: 0.96875 b: 1.015625 x0: 1.015625

解在右側,a: 0.9921875 b: 1.015625 x0: 0.9921875

解在左側,a: 0.9921875 b: 1.00390625 x0: 1.00390625

解在右側,a: 0.998046875 b: 1.00390625 x0: 0.998046875

解在左側,a: 0.998046875 b: 1.0009765625 x0: 1.0009765625

解在右側,a: 0.99951171875 b: 1.0009765625 x0: 0.99951171875

解在左側,a: 0.99951171875 b: 1.000244140625 x0: 1.000244140625

解在右側,a: 0.9998779296875 b: 1.000244140625 x0: 0.9998779296875

解在左側,a: 0.9998779296875 b: 1.00006103515625 x0: 1.00006103515625

解在右側,a: 0.999969482421875 b: 1.00006103515625 x0: 0.999969482421875

解在左側,a: 0.999969482421875 b: 1.0000152587890625 x0: 1.0000152587890625

解在右側,a: 0.9999923706054688 b: 1.0000152587890625 x0: 0.9999923706054688

x0: 1.0000038146972656 7.629423635080457e-06 <10e-6

1.0000038146972656 是用二分法求解方程的根

求方程根 (二分法)

二分法求方程的根 求下面方程的乙個根 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...

二分法求方程的根

求下面乙個方程的根 f x x 3 5x 2 10x 80f x x3 5x2 10x 80如果a是方程的根,則要求f a 1e 6f a 1e 6 通過對公式的求導可以發現,導函式開口向上,與x軸沒有交點,那麼導函式的值就是始終大於0的,所以原函式單調遞增 而且已知f 0 0 f 0 0,f 10...