正割法是近似的牛頓切線法,把求導(dǎo)用斜率代替,用切線不斷逼近函數(shù)的單根。
示意圖
迭代的起點(diǎn)
推廣的公式
核心code,直接放上去
眼熟不
你可以編寫一個(gè)簡(jiǎn)單的函數(shù)來(lái)測(cè)試這個(gè)功能
就是這么簡(jiǎn)單,當(dāng)然了字?jǐn)?shù)這么少,還成為不了一篇原創(chuàng)文章。再寫一個(gè)小程序。
我們可以使用Matploatlib的繪圖功能模擬
引入
寫好要計(jì)算的函數(shù)
def Y(x):
global i
i = i+1
plt.plot([x, x], [0, (x**3-x-1)])
plt.plot([x, result(x)], [(x**3-x-1), 0])
temp = round(x-result(x), 5)
if(temp == 0.0):
print('正割法第', i, '次')
print('解得:', round(x, 5))
x = result(x)
y = (result(x)**3 - result(x) - 1)
plt.plot(x, y, ".")
plt.plot(x, y, "g-")
plt.annotate("(1.32472,1.32472)", xy=(result(x), (result(x)**3 - result(x) - 1)),
xytext=(result(x) - 0.5, (result(x)**3 - result(x) - 1) + 2), color='k', fontsize=10)
else:
Y(result(x))
Y(2.7)
x = 0
plt.title("secant method")
x = np.linspace(0, 3)
plt.xlim(0, 3) # 固定坐標(biāo)
plt.ylim(-5, 20)
plt.plot(x, x**3-x-1, "b-")
plt.grid(True)
plt.plot([0, 3], [0, 0], "--")
plt.show()
審核編輯:劉清
-
算法
+關(guān)注
關(guān)注
23文章
4625瀏覽量
93124 -
python
+關(guān)注
關(guān)注
56文章
4802瀏覽量
84890
原文標(biāo)題:Python實(shí)現(xiàn)所有算法-正割法(Secant)
文章出處:【微信號(hào):TT1827652464,微信公眾號(hào):云深之無(wú)跡】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論