图解- 牛顿迭代法求平方根

#!/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()
图解- 牛顿迭代法求平方根_第1张图片
牛顿迭代原理.png

你可能感兴趣的:(图解- 牛顿迭代法求平方根)