我正在编写一个使用无理数字数字的matlab代码。我尝试使用$ \ sqrt(1 + x)$的泰勒展开来找到它。由于对于大数字的划分对于Matlab来说可能是一个坏主意,因此这种方法在我看来并不是一个好方法。
我想知道是否有更简单有效的方法来做到这一点?
答案 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方法。