在π,找到self-locating循环接收”指数超过数组元素的数量。不得超过50指数。”

18视图(30天)
你好,按标题我进这个错误。这是有关内存或者perferences吗?
%定义数字使用的数量从π
numDigits = 100000;
%的第一numDigits数字pi加载到一个字符串
piStr = num2str(π,numDigits);
%将遍历所有可能的循环长度
loopLen = 1:地板(numDigits / 2)
%循环遍历所有可能的起始位置
startPos = 1: numDigits-loopLen * 2
%从piStr提取循环和下面的序列
loopStr = piStr (startPos: startPos + loopLen-1);
seqStr = piStr (startPos + loopLen: startPos + loopLen * 2 - 1);
%检查循环seqStr中又出现了
如果包含(seqStr loopStr)
流(“发现self-locating循环长度% d \ n ',loopLen);
流(“循环始于位置% d \ n”,startPos);
流(“循环序列:% s \ n”,loopStr);
流(“序列:% s \ n”,seqStr);
结束
结束
结束
发现self-locating循环的长度是1
循环始于18
循环序列:1
以下的顺序:1
发现self-locating循环的长度是1
循环始于21
循环序列:9
序列:9
发现self-locating循环的长度是1
31日循环开始位置
循环序列:4
序列:4
指数超过数组元素的数量。不得超过50指数。

答案(1)

鸡向量
鸡向量 2023年6月1日7:55
编辑:鸡向量 2023年6月1日,造成车厢
错误来自这样一个事实:50是数字的最大数量 π
你可以有一个证明这个通过:
nDigits = 60;
num2str(π,nDigits)
ans =“3.141592653589793115997963468544185161590576171875”
num2str(π,“%”。num2str (nDigits)“f”])
ans =“3.141592653589793115997963468544185161590576171875000000000000”
注意,双精度浮点数有16位的准确性。
1评论
Stephen23
Stephen23 2023年6月1日8:04
编辑:Stephen23 2023年6月1日8:13
50是无论如何远远超出双二进制浮点数的限制:
3.141592653589793115997963468544185161590576171875% 50双
3.141592653589793238462643383279502884197169399375105820974944实际
% ^哦

登录置评。

类别

找到更多的在循环和条件语句帮助中心文件交换

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!