首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数学:“Sqrt[x]的15位产生x的42+百万位数”

数学:“Sqrt[x]的15位产生x的42+百万位数”
EN

Stack Overflow用户
提问于 2010-12-23 23:04:38
回答 1查看 363关注 0票数 1

我这样做是为了计算Sqrt5:

代码语言:javascript
复制
a[0] = 2 
a[n_] := a[n] = a[n-1] - (a[n-1]^2-5)/2/a[n-1] 

a25离Sqrt5有多近?

代码语言:javascript
复制
N[Sqrt[5]-a[25]] // FortranForm 
4.440892098500626e-16 

a25^2到5有多近?

代码语言:javascript
复制
N[a[25]^2-5] // FortranForm 
8.305767102358763e-42074769 

这对我来说很奇怪。我的估计是:如果x在Sqrt5的10^-n之内,那么x^2在5的10^(-2*n)之内,给予或接受。不是吗?事实上:

代码语言:javascript
复制
a[25]^2 = (Sqrt[5]-4.440892098500626e-16)^2 ~ 5 - 2*5*4.440892098500626e-16 

(展开(A)^2),因此精度应该仅为14位(或一般为n位)。

当然,牛顿的方法在25次迭代中只产生15位精确数字,这似乎也很奇怪。

在上面的计算中,我是不是过早地失去了精度?请注意:

代码语言:javascript
复制
N[Log[Sqrt[5]-a[25]]] // FortranForm 
-35.35050620855721 

同意w/ 15位以上的精度,即使我做了N[]后,采取了日志(所以它应该是准确的)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-12-24 00:55:33

问题是Mma是如何计算你的序列的。

A是有理数。让我们看看分子的数量级,在一个日志标尺中:

代码语言:javascript
复制
a[0] = 2 
a[n_] := a[n] = a[n-1] - (a[n-1]^2-5)/2/a[n-1] 
ListPlot@Table[Log[10, Log[10, Numerator[ a[i]]]], {i, 1, 25}]

所以,你的分子正以双指数的形式增长。

在a25之前,10^-16的精度就已经达到了:

代码语言:javascript
复制
For[i = 1, i < 5, i++,
 Print["dif[", i, "]= ", N[a[i] - Sqrt[5], 16]]
 ]

dif[1]= 0.01393202250021030

dif[2]= 0.00004313361132141470

dif[3]= 4.160143063513508*10^-10

dif[4]= 3.869915959583412*10^-20  

之后,您已经开始控制除法的精度,因为a5的分子已经有20位数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4523098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档