このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
円周率の桁数
この例では、Symbolic Math Toolbox™ を使った可変精度の演算により、pi の桁数を調べる方法を説明します。
ジョーク:太陽を捕えてその円周を直径で割ったら何が手にはいる?
答え: 空に浮かぶパイ () さ! (実現不可能)
の小数桁で誕生日や電話番号を探すのは、古くからあるゲームです。組み込みデータ型の精度では、取得される桁数はほんの少しに留まります。
num2str(pi, 100000)
ans = '3.141592653589793115997963468544185161590576171875'
関数 vpa
は、可変精度を使用して、シンボリック式をシンボリック浮動小数点数に変換します。vpa
を使用して pi
を浮動小数点数に変換します。digits
を使用して vpa
の有効桁数を増やします。
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');