平方和小数
Sqrt and decimals
是否需要任何标准的小数位数才能从其 sqrt 分解中重构一个 error < 1 的数字?
我的意思是:sqrt(200000) = 447.21359 ...
如果我尝试只用 两位小数 重建我的号码,我有
(447.21)^2 = 199996.7841
但是如果我使用前 三位小数 我得到
(447.213)^2 = 199999.467369 与原始数字相比误差小于 1。
我需要保存的小数位数有什么公式吗?
设 y
为一个数,x=sqrt(y)
为平方根,假设我们有一个误差为 eps = z - x
.[=18 的平方根的近似值 z
=]
然后
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
。也就是说,如果你想让平方的误差小于1,那么平方根的误差应该大约小于1 / sqrt(y)
.
所以对于你的例子,误差应该小于
1 / sqrt(200000) = 0.002236....
如果您想更精确并考虑因素 2,则可以减半。因此,正如您发现的那样,这个公式让您需要精确到您的情况下逗号后面的第 3 位数字。
计算
a = Sqrt(200000-1)=447.2124774645716
并使用大于 a
.
的 Sqrt(200000)
这里 447.21 < a
但 447.213 > a
重新平方后的平方根等于或大于原值+/- 1时误差为1,所以只求x+1的平方根差值(误差较大+ 边)和 x 的平方根:
maximum error = sqrt(x+1) - sqrt(x)
例如:
sqrt(200001) - sqrt(200000) = 0.001118033
所以你需要 3 位数字
完整的公式是:
需要小数位数 = ceil(-log10(sqrt(x+1)-sqrt(x)))
扩展 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))
是否需要任何标准的小数位数才能从其 sqrt 分解中重构一个 error < 1 的数字?
我的意思是:sqrt(200000) = 447.21359 ...
如果我尝试只用 两位小数 重建我的号码,我有
(447.21)^2 = 199996.7841
但是如果我使用前 三位小数 我得到
(447.213)^2 = 199999.467369 与原始数字相比误差小于 1。
我需要保存的小数位数有什么公式吗?
设 y
为一个数,x=sqrt(y)
为平方根,假设我们有一个误差为 eps = z - x
.[=18 的平方根的近似值 z
=]
然后
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
。也就是说,如果你想让平方的误差小于1,那么平方根的误差应该大约小于1 / sqrt(y)
.
所以对于你的例子,误差应该小于
1 / sqrt(200000) = 0.002236....
如果您想更精确并考虑因素 2,则可以减半。因此,正如您发现的那样,这个公式让您需要精确到您的情况下逗号后面的第 3 位数字。
计算
a = Sqrt(200000-1)=447.2124774645716
并使用大于 a
.
这里 447.21 < a
但 447.213 > a
重新平方后的平方根等于或大于原值+/- 1时误差为1,所以只求x+1的平方根差值(误差较大+ 边)和 x 的平方根:
maximum error = sqrt(x+1) - sqrt(x)
例如:
sqrt(200001) - sqrt(200000) = 0.001118033
所以你需要 3 位数字
完整的公式是:
需要小数位数 = ceil(-log10(sqrt(x+1)-sqrt(x)))
扩展 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))