Самореферентные формулы Таппера - в MATLAB? - PullRequest
4 голосов
/ 18 февраля 2011

Я пытался построить формулы Таппера в Matlab.По-видимому, кажется, что поскольку «k» такое большое значение, MATLAB может не принять его.

Ответы [ 2 ]

9 голосов
/ 18 февраля 2011

Вы можете использовать набор инструментов для вычисления больших целых чисел.

Вот некоторый код, который я написал для построения выражения Таппера, частично вдохновленный этим обсуждением в метафильтре :

% use the symbolic toolbox to represent the big integer k
k =  sym(['960939379918958884971672962127852754715004339660129306651505519271702802395266424689642842174350' ...
    '718121267153782770623355993237280874144307891325963941337723487857735749823926629715517173716995' ...
    '165232890538221612403238855866184013235585136048828693337902491454229288667081096184496091705183' ...
    '454067827731551705405381627380967602565625016981482083418783163849115590225610003652351370343874' ...
    '461848378737238198224849863465033159410054974700593138339226497249461751545728366702369745461014' ...
    '655997933798537483143786841806593422227898388722980000748404719']);

[x,y] = meshgrid(0:1:106, 0:1:16);

% evaluate the tupper formula
tupper = rem(floor(floor((y+k)/17) .* 2.^(-17*x - rem((y+k), 17))), 2);

% convert from symbolic to Matlab's native double precision
tupper = double(tupper);

% display it!
image(fliplr((1-tupper)*255));
colormap gray
axis equal

title('Tupper''s (not-so-)self-referential formula!');
set(gca, 'XTick', [], 'YTick', []);

И результаты: resulting Matlab figure

Примечание: в формуле нет ничего самоссылочного; выбрав дифференциальное значение k, вы можете заставить его отображать любое другое изображение того же размера. Было бы намного интереснее, если бы это была настоящая квинна!

2 голосов
/ 18 февраля 2011

Информация о целых числах произвольной длины в Matlab указана в http://www.mathworks.com/matlabcentral/newsreader/view_thread/162133;. Похоже, вы можете использовать Symbolic Toolbox, чтобы сохранить значение k и выполнить арифметику с ним в своей команде plot.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...