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...