如何利用Python实现正割算法呢

描述

正割法是近似的牛顿切线法,把求导用斜率代替,用切线不断逼近函数的单根。

算法

示意图

算法

迭代的起点

算法

推广的公式

算法

核心code,直接放上去

算法

眼熟不

算法

你可以编写一个简单的函数来测试这个功能

就是这么简单,当然了字数这么少,还成为不了一篇原创文章。再写一个小程序。

算法

我们可以使用Matploatlib的绘图功能模拟

算法

引入

算法

写好要计算的函数

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) # 固定坐标
plt.ylim(-5, 20)
plt.plot(x, x**3-x-1, "b-")
plt.grid(True)
plt.plot([0, 3], [0, 0], "--")
plt.show()



审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分