开平方估算
前言 这是一个对有效数字较少的数字进行开平方运算的方法 某节物理课,和黄同学研究后得出 他提出方法我改进,提升精度 我感觉肯定已经有先人提出了这个估算法,但是这个方法毕竟是自己研究出来的也值得记录 方法 对数字$x$,首先进行要找到两个连续正整数$a_1a_2$使$a_1^2 \le x \le a_2^2$ 由于一般学生背诵的平方数到$20^2$为止因此只能估算$[1,400]$范围的数字 ①当x接近于$a_1^2$时 $$\sqrt{x}=a_1+\frac{x-a_1^2}{2a_1}$$ ②当x接近于$a_2^2$时 $$\sqrt{x}=a_2-\frac{a_2^2-x}{2a_2}$$ 其实两个式子是一个式子,为了便于计算略作调整使得所有中间结果均为正数 误差 误差检验代码 package main import ( "fmt" "math" ) func main() { var i, a, sqrtNum, exactNum float64 var deviation [40000]float64 var deviationTotal float64 for i = 1; i < 400; i = i + 0.01 { a = findCloseSquare(i) sqrtNum = a + (i-a*a)/2/a exactNum = math.Sqrt(i) deviation[int64(i*100)] = math.Abs(sqrtNum - exactNum) } var tmp int64 for tmp = 100; tmp < 40000; tmp++ { //fmt....