圖解- 牛頓迭代法求平方根

#!/usr/bin/env python

import matplotlib.pyplot as plt
import numpy as np
x1 = np.linspace(-32, 32, 256)
t1 = 2 * x1  # 函數定義
y1 = 0 * x1 # x軸

# f(x) = f(xi) + f'(xi)(x - xi) 其實f'爲導函數
f2 = (x1 * x1)-16
xi = 7.8 //第一次迭代隨機7.8位置
t1 = ((xi * xi) - 16) + 2 * xi * (x1 - xi)

xi=4.9 //第二次迭代爲前一次切線與x軸交點
t2 = ((xi * xi) - 16) + 2 * xi * (x1 - xi)

xi=4.1 //第三次迭代爲第二次切線與x軸交點 
t3 = ((xi * xi) - 16) + 2 * xi * (x1 - xi)

xi=4 //第四次迭代爲第三次切線與x軸承交點
t4 = ((xi * xi) - 16) + 2 * xi * (x1 - xi)


plt.figure()
plt.title('y=pow(x,2)')
plt.xlabel('x')
# 座標x軸從-16到16 按每2ticks個刻度劃分
x_ticks = np.arange(-8, 8, 1)
x_label_ticks = [('{}'.format(x)) for x in x_ticks]
plt.xticks(x_ticks, x_label_ticks)
# 座標y軸承-64到64 按每8個ticks個刻度劃分
y_ticks = np.arange(-64, 64, 4)
y_label_ticks = [('{}'.format(y)) for y in y_ticks]
plt.yticks(y_ticks, y_label_ticks)
plt.ylabel('y')

plt.plot(x1, t1, label="line 7.8")
plt.plot(x1, t2, label="line 4.9")
plt.plot(x1, t3, label="line 4.1")
plt.plot(x1, t4, label="line 4.0")
plt.plot(x1, y1, label="y=0")
plt.plot(x1, f2, label="square")

plt.grid(True)
plt.legend(loc="upper left")
#x(origin),x(dest),y(origin),y(destina)
plt.axis([-8, 8, -32, 64])
plt.show()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章