Как печатать 1000 десятичных знаков значения pi?
Я хотел бы напечатать, например. 1000 или 2000 или 15000 десятичных значений значения pi с использованием R?
Теперь я получаю только шесть
> pi
[1] 3.141593
Как это сделать?
Ответы
Ответ 1
Используя пакет R bc (который доступен по предыдущей ссылке, а не на CRAN):
> library(bc)
> bc("4 * a(1)", scale = 1000)
[1] "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201988"
Ответ 2
Если вы не хотите сами делать расчет, вы можете посмотреть номер вверх. Например
pie <- read.csv("http://oeis.org/A000796/b000796.txt", header=FALSE, sep=" ")
dig <- 75 # up to 20000 digits
pistring <- paste(c(pie[1,]$V2, ".", head(pie[-1,], dig-1)$V2), collapse="")
создаст
> pistring
[1] "3.14159265358979323846264338327950288419716939937510582097494459230781640628"
Ответ 3
R работает с типом данных с плавающей точкой базовой системы, который обычно имеет около 16 значащих десятичных цифр.
Если вам нужно много цифр pi, вам нужно будет удерживать их в массиве символов некоторой такой конструкции. Вы просто не можете помещать больше, чем горсть в числовое значение R.
Если вы хотите сами генерировать цифры, то в веб-поиске будет показано много статей, в которых излагаются алгоритмы для выполнения задания. Или вы можете найти множество сайтов, которые просто перечисляют pi на gazillion цифры.
Ответ 4
Вы не можете печатать цифры, которые вы не знаете. Если R содержит только 16 десятичных цифр (типичный двойной IEEE), тогда печать 1000 цифр будет генерировать 984 бессмысленных цифры.
Вы можете использовать одну из серии или другие методы, описанные здесь (например, алгоритм Brent-Salamin), чтобы сгенерировать столько цифр, которые вы хотите, ЕСЛИ вы используете инструмент для точной арифметики. В качестве теста я недавно вычислил более 250 000 цифр pi этим методом всего за несколько итераций.
3,14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852110555964462294895493038196442881097566593344612847564823378678316527120190914564856692346034861045432664821339360726024914127372458700660631558817488152092096282925409171536436789259036001133053054882046652138414695194151160943305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912983367336244065664308602139494639522473719070217986094370277053921717629317675238467481846766940513200056812714526356082778577134275778960917363717872146844090122495343014654958537105079227968925892354201995611212902196086403441815981362977477130996051870721134999999837297804995105973173281609631859502445945534690830264252230825334468503526193118817101000313783875288658753320838142061717766914730359825349042875546873115956286388235378759375195778185778053217122680661300192787661119590921642 0198...
Ответ 5
Это очень возможно. Загрузите пакет Rmpfr.
Затем используйте следующую команду:
library(Rmpfr)
Const("pi", 3333)
Это даст значение pi, соответствующее 1000 знакам после запятой.
Ответ 6
Не уверен, можете ли вы печатать 1000 или 2000, но таким образом вы можете указать, сколько цифр напечатано:
print(pi, digits=10)
Ответ 7
Один из самых простых алгоритмов использования - это, вероятно, пайка. Я не знаю R
, но он, вероятно, достаточно хорош для реализации идей здесь.