52 lines
1.6 KiB
Matlab
52 lines
1.6 KiB
Matlab
clear all;close all;clc;
|
|
% Calculate the sequences
|
|
padovan_sequence_20 = Padovan1(20)
|
|
padovan_approx_20 = Padovan2(20)
|
|
|
|
% Check if the sequences are equal for n = 64
|
|
are_sequences_equal = isequal(Padovan1(64), Padovan2(64))
|
|
|
|
|
|
% Generate the substitution system sequence
|
|
sequence_32 = createLSystem();
|
|
words = sequence_32(1:10)
|
|
|
|
% Check if the length of the substitution system sequence equals the Padovan sequence
|
|
are_lengths_equal = all( cellfun(@(ele) length(ele), sequence_32) ...
|
|
== Padovan2(32) )
|
|
|
|
function words = createLSystem()
|
|
words = {'A'}; % Initialize cell array with one element "A"
|
|
text = 'A'; % Current text is "A"
|
|
|
|
while length(words) < 32
|
|
newText = ''; % Initialize new text as empty
|
|
for i = 1:length(text)
|
|
switch text(i)
|
|
case 'A'
|
|
newText = [newText 'B']; % Append 'B' to new text
|
|
case 'B'
|
|
newText = [newText 'C']; % Append 'C' to new text
|
|
case 'C'
|
|
newText = [newText 'AB']; % Append 'AB' to new text
|
|
end
|
|
end
|
|
text = newText; % Update text with the new text
|
|
words{end+1} = text; % Append new text to words list
|
|
end
|
|
end
|
|
|
|
function padovan_sequence = Padovan1(nmax)
|
|
padovan_sequence = zeros(1, nmax);
|
|
padovan_sequence(1:3) = [1, 1, 1];
|
|
for n = 4:nmax
|
|
padovan_sequence(n) = padovan_sequence(n-2) + padovan_sequence(n-3);
|
|
end
|
|
end
|
|
|
|
function padovan_approx = Padovan2(nmax)
|
|
p = 1.324717957244746025960908854;
|
|
s = 1.0453567932525329623;
|
|
padovan_approx = floor(p.^(-1:nmax-2) / s + 0.5);
|
|
end
|