楼主: llb_321
1570 5

[学科前沿] 【独家发布】R语言计算费根鲍姆常数 [推广有奖]

  • 3关注
  • 49粉丝

教授VIP

已卖:595份资源

学科带头人

9%

还不是VIP/贵宾

-

TA的文库  其他...

LATEX & R 模板和代码

威望
2
论坛币
28191 个
通用积分
1739.6743
学术水平
410 点
热心指数
421 点
信用等级
355 点
经验
2099 点
帖子
1410
精华
1
在线时间
1035 小时
注册时间
2010-6-18
最后登录
2023-8-18

初级热心勋章 初级信用勋章 中级热心勋章 中级信用勋章 初级学术勋章

楼主
llb_321 在职认证  发表于 2021-6-17 14:37:51 |AI写论文
1000论坛币
R语言计算费根鲍姆常数
完成标准:
1、完全通过R语言实现,不调用其他语言外部代码;
2、算法部分请注释;
3、计算到小数点后30位

关键词:R语言 小数点

本帖被以下文库推荐

沙发
zhou1_20 发表于 2021-6-17 14:37:52
  1. library(Rmpfr)

  2. # 具体参考 [url]http://keithbriggs.info/documents/how-to-calc.pdf[/url]

  3. maxIt = 13  
  4. maxItJ = 10
  5. prec=30*log2(10) #小数点后30位
  6. a_1 = Rmpfr::mpfr(1.0, prec)
  7. a_2 = Rmpfr::mpfr(0.0, prec)
  8. d_1 = Rmpfr::mpfr(3.2, prec)

  9. res = NULL

  10. for (i in 2:maxIt) {
  11.   a = a_1 + (a_1 - a_2)/d_1
  12.   for (j in 1:maxItJ) {
  13.     x = 0
  14.     y = 0
  15.     for (k in 1:2^i) {
  16.       y = 1 - 2*y*x
  17.       x = a - x^2
  18.     }
  19.     a = a - x/y
  20.   }
  21.   d = (a_1 - a_2)/(a-a_1)
  22.   #print(c(i,a,d))
  23.   d_1 = d
  24.   a_2 = a_1
  25.   a_1 = a
  26.   res = c(res,d)
  27. }

  28. print(res)

  29. # 'mpfr1' 4.669201545780906707452765346774
复制代码
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
cheetahfly + 50 精彩帖子
llb_321 + 5 + 5 + 5 精彩帖子

总评分: 论坛币 + 50  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

藤椅
llb_321 在职认证  发表于 2021-6-17 14:45:35
feigenbaumConstant.png

板凳
llb_321 在职认证  发表于 2021-6-23 21:01:34
zhou1_20 发表于 2021-6-23 15:15
谢谢zhou1_20老师。
您提供的代码已经是我找到的所有代码中最接近的了。所以,虽然与设想有异,我还是准备结贴了。

以下只是请教您:
不知道那个一直在算的结果(比如我附的截图中的官方结果),采用的是什么方式。
另外的问题
前一段时间,尝试了verhulst模型的分叉图,感觉只有第1、2、3次分叉,最多第4次分叉,用肉眼能分辨出来,而用模型的离散方程做模拟,增长率r大于3.1时,曲线直接就崩溃了。因此我猜这个r只能是不断接近某个极限,只是不知道这个极限是什么决定的。

我再啃一下您提到的那篇文献。
明天有时间,我再试试您的代码,看看增加迭代次数会是什么结果。

再次感谢。

报纸
zhou1_20 发表于 2021-6-24 09:14:34
提示:费根鲍姆常数的绘图和求解是两种编程思路

可参考百度文库的这一篇以及我上面提到的pdf
https://wenku.baidu.com/view/d5d ... PrWF5MeE%2FaA%3D%3D
  1. logistic.map <- function(r, x, N, M){
  2.   ## r: bifurcation parameter
  3.   ## x: initial value
  4.   ## N: number of iteration
  5.   ## M: number of iteration points to be returned
  6.   z <- 1:N
  7.   z[1] <- x
  8.   for(i in c(1:(N-1))){
  9.     z[i+1] <- r *z[i]  * (1 - z[i])
  10.   }
  11.   ## Return the last M iterations
  12.   z[c((N-M):N)]
  13. }

  14. ## Set scanning range for bifurcation parameter r
  15. my.r <- seq(2.5, 4, by=0.003)
  16. system.time(Orbit <- sapply(my.r, logistic.map,  x=0.1, N=1000, M=300))

  17. Orbit <- as.vector(Orbit)

  18. r <- sort(rep(my.r, 301))

  19. plot(Orbit ~ r, pch=".")
复制代码
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
cheetahfly + 50 精彩帖子
llb_321 + 5 + 5 + 5 精彩帖子

总评分: 论坛币 + 50  学术水平 + 5  热心指数 + 5  信用等级 + 5   查看全部评分

地板
llb_321 在职认证  发表于 2021-6-24 09:47:58
zhou1_20 发表于 2021-6-24 09:14
提示:费根鲍姆常数的绘图和求解是两种编程思路

可参考百度文库的这一篇以及我上面提到的pdf
感谢!非常感谢!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-23 10:55