是否需要标准的小数位数才能从错误< 错误<<<<< 1 ?
我的意思是: sqrt(200000)= 447.21359 ...... 如果我尝试重建我的号码只有两位小数我有 (447.21)^ 2 = 199996.7841 但如果我使用第一个三位小数,我会得到 (447.213)^ 2 = 199999.467369 ,这是一个小于原始数字1的错误。
我需要保存的小数位数公式吗?
答案 0 :(得分:2)
让y
为数字,x=sqrt(y)
为平方根,并说我们对平方根有一个近似值z
,错误为eps = z - x
。
然后
abs(y - z^2) = abs(y - (x + eps)^2)
= abs(y - x^2 - 2 eps x - eps^2) = abs(2 eps x + eps^2)
= O(eps x)
代表小eps
。换句话说,如果您希望square的误差小于1,那么平方根的误差应该大约小于1 / sqrt(y)
。
因此,对于您的示例,错误应该小于
1 / sqrt(200000) = 0.002236....
或者一半,如果你想更精确并考虑因素2。所以,正如你发现的那样,这个公式可以让你在你的情况下需要精确到逗号后面的第3位。
答案 1 :(得分:1)
当重新平方的平方根等于或大于原始值+/- 1时,误差将为1,因此只需找到x + 1的平方根之间的差值(误差在+上更高) ())和x的平方根:
maximum error = sqrt(x+1) - sqrt(x)
e.g:
sqrt(200001) - sqrt(200000) = 0.001118033
所以你需要3个数字
完整的公式是:
所需的十进制数字= ceil(-log 10 (sqrt(x + 1)-sqrt(x)))
答案 2 :(得分:0)
计算
a = Sqrt(200000-1)=447.2124774645716
并使用大于a
的Sqrt(200000)。
此处447.21 < a
但447.213 > a
答案 3 :(得分:0)
扩展samgak的答案并以另一种方式阐明cfh的答案:
sqrt(x+1) - sqrt(x) = 1 / (sqrt(x+1) + sqrt(x) ) < 1 / (2*sqrt(x))
通过第三个二项式公式。要将sqrt(x+1)
和sqrt(x)
以及sqrt(x-1)
大致分隔在它们之间的细分中间点,精确结果sqrt(x)
的修改应小于1 / (4*sqrt(x))
< / p>