Finding self-locating loops in pi, receiving "Index exceeds the number of array elements. Index must not exceed 50."
    조회 수: 4 (최근 30일)
  
       이전 댓글 표시
    
Hi, as per title I came into this error. Is this related to memory or perferences perhaps? 
% Define the number of digits to use from pi
numDigits = 100000;
% Load the first numDigits digits of pi into a string
piStr = num2str(pi, numDigits);
% Loop over all possible loop lengths
for loopLen = 1:floor(numDigits/2)
    % Loop over all possible starting positions for the loop
    for startPos = 1:numDigits-loopLen*2
        % Extract the loop and the following sequence from piStr
        loopStr = piStr(startPos:startPos+loopLen-1);
        seqStr = piStr(startPos+loopLen:startPos+loopLen*2-1);
        % Check if the loop appears again in seqStr
        if contains(seqStr, loopStr)
            fprintf('Found self-locating loop of length %d\n', loopLen);
            fprintf('Loop starts at position %d\n', startPos);
            fprintf('Loop sequence: %s\n', loopStr);
            fprintf('Following sequence: %s\n', seqStr);
        end
    end
end
댓글 수: 2
답변 (1개)
  chicken vector
      
 2023년 6월 1일
        
      편집: chicken vector
      
 2023년 6월 1일
  
      The error comes from the fact that 50 is the maximum number of digits for pi.
You can have a proof of this by doing:
nDigits = 60;
num2str(pi, nDigits)
num2str(pi, ['%.' num2str(nDigits) 'f'])
Note that double precision floating point numbers have 16 digit of accuracy.
참고 항목
카테고리
				Help Center 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
			
	제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


