В этом примере показано, как использовать арифметику переменной точности, чтобы исследовать десятичные цифры пи с помощью Symbolic Math Toolbox™.
Шутка: Что вы получаете, когда вы берете солнце и делите его окружность на его диаметр?
Ответ: в небе!
Это - старая игра, чтобы искать день рождения или номер телефона в десятичных цифрах . Точность встроенных типов данных достаточна, чтобы получить несколько цифр только:
num2str(pi, 100000)
ans = '3.141592653589793115997963468544185161590576171875'
Функциональный vpa
переменная точность использования, чтобы преобразовать символьные выражения в символьные числа с плавающей запятой. Преобразуйте pi
к числу с плавающей запятой с помощью vpa
. Увеличьте точность vpa
использование digits
.
digits(5000); a = vpa(pi)
a =
Чтобы преобразовать номер переменной точности в строку, используйте функциональный char
.
c = char(a);
Ищите свой номер телефона в цифрах pi
.
strfind(c, '1185480')
ans = 447
Это - общее убеждение, что все цифры происходят асимптотически одинаково часто в десятичном расширении , но никакое доказательство еще не существует. Найдите десятичную точку:
pos = strfind(c, '.')
pos = 2
Преобразуйте десятичные цифры в числа и постройте гистограмму их частоты:
d = arrayfun(@str2num, c(pos+1:end));
histogram(d, 10);
title('Frequency of the decimal digits of \pi');