平方根的计算方法 计算方法一: 我们用a来表示A的平方根,方程x-a=0的解就为A的平方根a。两边平方后有:x*x-2ax+A=0,因为x不等于0,两边除以x有: x-2a+A/x=0、a=(x+A/x)/2 所以你只需设置一个约等于(x+A/x)/2的初始值,代入上面公式,可以得到一个更加近似的值。再将它代入,又可以得到一个更加精确的值……依此方法,最后得到一个足够精度的(x+A/x)/2的值即为A的平方根值。 真的是这样吗?假设我们代入的值x﹤a 由于这里考虑a﹥0故:x*x﹤a*a 即x﹤A/x (x+A/x)/2﹥(x+x)/2 即(x+A/x)/2>x 即当代入的x﹤a时(x+A/x)/2的值将比x大。 同样可以证明当代入的x﹥a时(x+A/x)/2的值将比x小。这样随着计算次数的增加,(x+A/x)/2的值就越来越接近a的值了。 如:计算sqrt(5) 设初值为x = 2 第一次计算:(2+5/2)/2=2.25 第二次计算:(2.25+5/2.25)/2=2.236111 第三次计算:(2.236111+5/2.236111)/2=2.236068 这三步所得的结果和5 的平方根值相差已经小于0.001 了。 计算方法二: 我们可以使用二分法来计算平方根。 设f(x)=x*x - A 同样设置a为A的平方根,哪么a就是f(x)=0的根。 你可以先找两个正值m,n使f(m)<0,f(n)>0 根据函数的单调性,a就在区间(m,n)间。 然后计算(m+n)/2,计算f((m+n)/2),如果它大于零,那么a就在区间(m,(m+n)/2)之间。 小于零,就在((m+n)/2,n)之间,如果等于零,那么(m+n)/2当然就是a。这样重复几次,你可以把a存在的范围一步步缩小,在最后足够精确的区间内随便取一个值,它就约等于a。 计算方法三: 以上的方法都不是很直接,在上世纪80年代的初中数学书上,都还在介绍一种比较直接的计算方法: (1)如求54756的算术平方根时先由个位向左两位两位地定位:定位为5,47,56,接着象一般除法那样列出除式. (2)先从最高位用最大平方数试商:最大平方数不超过5的是2,得商后,除式5-4后得1。把商2写上除式上。 (3)加上下一位的数:得147。 (4)用20去乘商后去试商147:2×20=40 这40可试商为3,那就把试商的3加上40去除147。得147÷43=3,把3写上除式上。这时147-129=18。 (5)加上下一位的数:得1856。 (6)用20去乘商后去试商1856:23×20=460 这460可试商为4,那就把试商的4加到460去除1856。得4,把4写上除式上。这时1856-1856=0,无余数啦。 (7)这时除式上的商是234,即是54756的平方根。 哪么这种计算方法是怎么得来的呢?查找了好久都没有找到答案。静下心来仔细分平方根的计算过程,后来的步骤都有20乘以也有的商再加上预计的商乘上预计的商。设也有的商为a预计的商为b就是(20*a+b)*b即20ab+b*b。而实质上预计的商是平方根中已有的商的后一位数字,平方根实际为10a+b再乘以10的N次方(N为整数),这里我们可以简化为平方根为10a+b(因为乘10的N次方只影响平方的小数点位置,对数字计算没有影响)。 这下终于明白了,设a为A的平方根的前n位,b为A的平方根的n位后面的数字,哪么(10a+b)就是A的平方根。有:(10a+b)(10a+b)=100a*a+20ab+b*b=A 变形后:(20a+b)b=A-100a*a 上面的计算中第一次商2,然后从结果中减4实质就是A-100a*a 第二次再预计商3再减去(20*2+3)*3实质就是: A-100a*a-20ab-b*b即:A-(10a+b)(10a+b) 此时10a+b看作为新的已有商a,再求下一个b值。这样就可以一位一位地进行平方根的求解了。
温馨提示:答案为网友推荐,仅供参考