目錄(二)**實現
(三)案例效果
(2)執行結果:
2.求解:
3.求解:
日期:2019/02/17 週日
對於普通的方程,我們用高中學的解方程方法是可以的,不過對於 超越方程 與 高次代數方程 的求解是很困難的,而且也很難得到準確得解,今天我們用python語言和二分法來求解這些方程,得到滿足精度的解,並不是準確。在某區間有函式 \(f(x)\) 在區間\([a, b]\) 內單調連續,且\(f(a)*f(b)<0\) ,根據連續函式的性質可知方程在\([a,b]\) 內一定有唯一的實根。
\(f(x)\)是單調函式\(f(x)\)是連續函式
\(f(a)*f(b)<0\)
不斷的分割\([a,b]\) 區間,取\([a,b]\) 的中點值\(x=(a+b)/2\)當\(f(x)*f(a)<0?\) 時,則根在\([a,x]\) 之間;
當\(f(x)*f(b)<0\) 時,則根在\([x,b]\) 之間。
再分割\(x=(a+b)/2\)
直到\(x\)滿足我們的精度,我們取\(x\) 為\(f(x)\) 的近似解。
我們取的是:第k次分割後的中間值為近似解。即:\(x_k=\frac(a_k+b_k)\)
對於預先給定的誤差:\(\varepsilon>0\)
有:\(|x^*-x_k| \le \frac(b_k-a_k)=\frac
(1)feval函式:
(2)二分法def feval(string, a):
"""根據值來計算數學表示式。
:param string: 含有x未知數的數學表示式
:param a: 自變數x的具體數值
:return: 數學表示式的計算結果
"""count = string.count("x")
string = string.replace('x', '%f')
t = (a, ) * count
result = eval(string % t)
return result
"""
二分法:
f(a)*f(b)<0 連續函式f(a)在a,b區間必有根。
"""from my_math.func_math import feval
def two_fun(expr, a, b, r):
"""二分法求解方程
:param expr: 方程表示式
:param a: 左端
:param b: 右端
:param r: 精度
:return: 求解的結果
"""f_a = feval(expr, a)
f_b = feval(expr, b)
if f_a*f_b >= 0:
print("該區間沒有根")
else:
k = 0
while 1/(2**(k+1)) > r:
x = (b + a)/2
if feval(expr, a) * feval(expr, x) > 0:
a = x
else:
b = x
k += 1
print("*"*20)
print("次數", k)
print("x:", x)
print("a:", a)
print("b:", b)
result = (a+b)/2
print("滿足精度的結果:", result)
# 求解1-x-sin(x)=0為例
if __name__ == '__main__':
two_fun("1-x-sin(x)", 0, 1, 10**-4)
使用二分法求解\(1-x-sin(x)=0?\) ,誤差範圍不超過\(\frac\times10^\)(1)確定範圍:使用到數學繪圖軟體,根據數學表示式繪製曲線。a. 大致的影象:目錄
b.利用放大按鈕,放大後的影象:
c.範圍是:[0, 1]內必有根
(2)執行結果:
次數 1
x: 0.5
a: 0.5
b: 1
次數 13
x: 0.5108642578125
a: 0.5108642578125
b: 0.510986328125
滿足精度的結果: 0.51092529296875
取結果是:0.5109
要求誤差不超過,\(10^\)(1)確定範圍:根據下面影象,取範圍:[1.8, 2.0](2)執行結果:
次數 1
x: 1.9
a: 1.9
b: 2.0
次數 9
x: 1.933984375
a: 1.93359375
b: 1.933984375
滿足精度的結果: 1.9337890625
取結果是:1.934
要求誤差不超過:\(10^\)(1)確定範圍:根據下面影象,取範圍是:[-2, 2](2)執行結果:次數 1
x: 0.0
a: 0.0
b: 2.0
次數 9
x: 1.3203125
a: 1.3203125
b: 1.328125
滿足精度的結果: 1.32421875
取結果是:1.324
日期:2019/02/17 週日
方程求根二分法
方程求根二分法 在實際計算允許的誤差範圍 內 對所求根區間 a,b 不斷縮小直得到所期望精度的資料 理論基礎 1 函式在區間 a,b 上連續 2 f a f b 0 3 單調函式,乙個根 屬性 數值逼近法 誤差 精度 x x b a 2 b a pow 2,k 1 x為精確值,x 為第k次二分後資料...
二分法求根
用二分法求下面的一元三次方程 在區間 10,10 上誤差不大於 該方法的關鍵在於要解決如下兩個問題 1 如何對區間進行二分,並在二分後的左右兩個區間中確定下一次求根搜尋的區間?假設區間端點為x1和x2,則通過計算區間的中點x0,即可將區間 x1,x2 二分為 x1,x0 和 x0,x2 這時,為了確...
Bailian4140 方程求解 二分法
4140 方程求解 總時間限制 1000ms 記憶體限制 65536kb 描述 求下面方程的根 f x x3 5x2 10x 80 0。輸入 輸出 精確到小數點後9位。樣例輸入 樣例輸出 問題鏈結 bailian4140 方程求解 問題簡述 略 問題分析 數值計算中的解方程問題。需要使用精度判定。1...