#69573 牛顿迭代法求平方根【光】-函数复用#69573 牛顿迭代法求平方根描述牛顿迭代法(Newton’s method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。设 是 的根,选取 作为 的初始近似值,过点 做曲线 的切线 , ,则 与 轴交点的横坐标 ,称 为 的一次近似值。过点 做曲线 的切线,并求该切线与x轴交点的横坐标 ,称 为r的二次近似值。重复以上过程,得 的近似值序列,其中, 称为 的 次近似值,上式称为牛顿迭代公式。????????????????????????????????????????????????????????????????????????????????????????????????一个数开平方从函数意义上理解是要求函数f(x) = x2,使f(x) = n的近似解,即x2 - n = 0的近似解。从几何意义上理解是要求抛物线g(x) = x2 - n与x轴交点(g(x) = 0)最接近的点。????????????????????????????????????????????????????????????????????????????????????????????????我们假设g(x0)=0,即x0是正解,那么我们要做的就是让近似解x不断逼近x0,这是函数导数的定义:???????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????可以由此得到???????????????????????????????????????????????????????????????????????????????????????????????? ????????????????????????????????????????????????????????????????????????????????????????????????从几何图形上看,因为导数是切线,通过不断迭代,导数与x轴的交点会不断逼近x0。???????????????????????????????????????????????????????????????????????????????????????????????? 牛顿迭代法计算平方根时,有以下公式:???????????????????????????????????????????????????????????????????????????????????????????????? x(k+1) =1/2*(x(k)+n/x(k))????????????????????????????????????????????????????????????????????????????????????????????????请设计一个用牛顿迭代法计算平方根的函数,计算精度控制在计算结果的平方与输入的误差小于或等于0.00000001。 ????????????????????????????????????????????????????????????????????????????????????????????????输入格式输入一个非负实数???????????????????????????????????????????????????????????????????????????????????????????????? 输出格式输出该数的平方根(保留小数点后8位有效数字)????????????????????????????????????????????????????????????????????????????????????????????????若输入数字小于0,输出’请输入一个非负数!’
def pf(n):
a = n**0.5
return a
num = float(input())
if num<0:
print("请输入一个非负数!")
else:
print("%.8f" % pf(num))
|