找回密码
 注册
Simdroid-非首页
查看: 109|回复: 4

[数值计算] 有没有更简便的算法?

[复制链接]
发表于 2013-9-23 16:15:23 | 显示全部楼层 |阅读模式 来自 上海
a1=1;a2=2;a3=a2+a1;a4=a3+a2;依次类推a[[i]]=a[[i-1]]+a[[i-2]],求a[[1]],....a[[100]]的值;
比如有
a=Table[0,{100}];a[[1]]=1;a[[2]]=2;Do[a[[i]]=a[[i-1]]+a[[i-2]],{i,3,100}];
但是有些时候预先定义a很困难,根据一些条件限制,我不知道要算到a[[100]]或是a[[10000]],有没有什么方法可以无需预先定义a,算到哪就是哪,无需预先空出内存来,比如用什么上标或是下标或是什么ai来表示,这样就不用预先设定一个a=Table[0,{100}];
发表于 2013-9-23 18:17:48 | 显示全部楼层 来自 北京
Simdroid开发平台
Table[Fibonacci[n], {n, 2, 101, 1}]

点评

多谢  发表于 2013-9-24 09:42

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2013-9-23 19:44:08 | 显示全部楼层 来自 北京
本帖最后由 chyanog 于 2013-9-24 22:41 编辑
  1. Module[{a = 1, b = 1, t}, Table[t = a + b; b = a; a = t, {10 - 2}]]
  2. Module[{a = 1, b = 1, t}, Do[t = a + b; b = a; a = t, {10 - 2}]; t]

  3. Module[{a = 1, b = 1, t}, Table[{a, b} = {b, a + b}, {10 - 2}]][[;; ,  2]]
  4. Module[{a = 1, b = 1, t}, Do[{a, b} = {b, a + b}, {10 - 2}]; b]
  5. Nest[#~Append~Tr@#[[-2 ;;]] &, {1, 1}, 8]

  6. f1[n_] := Nest[{#2, # + #2} & @@ # &, {1, 1}, n - 2][[2]]
  7. f1[10]
复制代码

点评

thanks very much , just what i want  发表于 2013-9-24 09:43

评分

1

查看全部评分

回复 不支持

使用道具 举报

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

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-25 18:32 , Processed in 0.036244 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表