如何找到$ \ sqrt(x)$形式的无理数的第n位数

时间:2016-05-13 18:54:58

标签: algorithm matlab numerical-analysis

我正在编写一个使用无理数字数字的matlab代码。我尝试使用$ \ sqrt(1 + x)$的泰勒展开来找到它。由于对于大数字的划分对于Matlab来说可能是一个坏主意,因此这种方法在我看来并不是一个好方法。

我想知道是否有更简单有效的方法来做到这一点?

2 个答案:

答案 0 :(得分:3)

如果你有符号工具箱,vpa就是这样做的。您可以指定所需的有效位数:

x = '2'; %// define x as a *string*. This avoids loss of precision
n = 100; %// desired number of *significant* digits
result = vpa(['sqrt(' x ')'], 100);

结果是symbolic variable。如果需要,转换为字符串:

result = char(result);

在上面的例子中,

result =
1.414213562373095048801688724209698078569671875376948073176679737990732478462107038850387534327641573

答案 1 :(得分:2)

似乎你需要一种在计算机时代之前就已经发现的extension methods方法。