当前位置: 首页 > 后端技术 > Python

求平方根

时间:2023-03-26 17:10:34 Python

求平方根是多项式求解的最简单的特例。下面分别采用梯度下降法和牛顿迭代法。其中,梯度下降的步长如何选择有点不解,而且迭代次数比牛顿多很多。importsysimportmathdefgradient_descent(y):x=1alpha=0.001delta=1count=0而abs(delta)>0.000001:delta=4*x*(x**2-y)x-=alpha*deltacount+=1#print("y=%f\tcount=%d\tx=%f\tdelta=%f\n"%(y,count,x,delta))returnx,countdefniudun(y):x=1增量=abs(x**2-y)计数=0;whiledelta>0.000001:x=(x+y/x)/2delta=abs(x*x-y)count+=1#print("y=%f\tcount=%d\tx=%f\tdelta=%f\n"%(y,count,x,delta))returnx,countwhileTrue:try:print"selectmode,1-gradient_descent,2-niudun,andinputytosqrt"m,y=map(float,sys.stdin.readline().split(''))如果m==1:x,cnt=gradient_descent(y)else:x,cnt=niudun(y)print("mode=%d,sqrt(%f)=%f,delta=%f,cnt=%d"%(m,y,x,x-math.sqrt(y),cnt))exceptRuntimeError,e:print("异常:",e)继续