Я хотел бы напечатать, например. 1000 или 2000 или 15000 десятичных знаков числа пи с использованием R?
Теперь я получаю только шесть
> pi
[1] 3.141593
Как этого добиться?
Я хотел бы напечатать, например. 1000 или 2000 или 15000 десятичных знаков числа пи с использованием R?
Теперь я получаю только шесть
> pi
[1] 3.141593
Как этого добиться?
Использование пакета R bc (который доступен по приведенной выше ссылке, а не в CRAN) :
> library(bc)
> bc("4 * a(1)", scale = 1000)
[1] "3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201988"
bc
создает объекты класса c("bc", "character")
, которыми можно манипулировать в дальнейшем. например options(bc.scale = 1000); one <- bc(1); Pi <- 4*atan(one); Pi/2
. Это не эквивалентно копированию и вставке в символьную переменную.
- person G. Grothendieck; 04.06.2011
run install.packages("bc_1.05.zip", repos = NULL)
получаю: Предупреждение в install.packages: невозможно открыть сжатый файл «bc/DESCRIPTION», вероятная причина «Нет такого файла или каталога» Ошибка в install.packages: невозможно открыть соединение Есть предложения?
- person timothy.s.lau; 22.10.2014
Если вы не хотите делать расчет самостоятельно, вы можете посмотреть номер. Например
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"
R работает с типом данных с плавающей запятой базовой системы, который обычно имеет около 16 значащих десятичных цифр.
Если вам нужно много цифр числа пи, вам нужно будет хранить их в массиве символов какой-либо такой конструкции. Вы просто не можете вместить больше, чем горстку в числовое значение R.
Если вы хотите сгенерировать цифры самостоятельно, поиск в Интернете покажет множество статей с описанием алгоритмов для выполнения этой работы. Или вы можете найти множество сайтов, которые просто перечисляют пи до миллиона цифр.
Вы не можете печатать цифры, которых не знаете. Если R содержит только 16 десятичных цифр (типичный двойник IEEE), то при печати 1000 цифр будет сгенерировано 984 бессмысленных цифры.
Вы можете использовать одну из серий или другие методы, описанные здесь (например, алгоритм Брента-Саламина), чтобы сгенерировать как можно больше цифр. вы хотите, ЕСЛИ вы используете инструмент для арифметики с большой точностью. В качестве теста я недавно вычислил более 250 000 цифр числа пи с помощью этого метода всего за несколько итераций.
3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567351885752724891227938183011949129833673362440656643086021394946395224737190702179860943702770539217176293176752384674818467669405132000568127145263560827785771342757789609173637178721468440901224953430146549585371050792279689258923542019956112129021960864034418159813629774771309960518707211349999998372978049951059731732816096318595024459455346908302642522308253344685035261931188171010003137838752886587533208381420617177669147303598253490428755468731159562863882353787593751957781857780532171226806613001927876611195909216420198 ...
Это очень возможно. Загрузите пакет Rmpfr.
Затем используйте следующее:
library(Rmpfr)
Const("pi", 3333)
Это даст значение числа пи с точностью до 1000 знаков после запятой.
Не уверен, можете ли вы напечатать 1000 или 2000, но таким образом вы можете указать, сколько цифр печатается:
print(pi, digits=10)
Вероятно, одним из самых простых алгоритмов является кран. Я не знаю, R
но, вероятно, этого достаточно, чтобы реализовать идеи здесь< /а>.