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

[图形图像] 一个关于mathematica不同版本运行代码区别的问题

[复制链接]
发表于 2010-5-23 16:58:51 | 显示全部楼层 |阅读模式 来自 北京
本帖最后由 FreddyMusic 于 2010-5-23 17:15 编辑

这是一本书里面的代码,在mathematica 5 里面能够运行出来,是一幅幅图形,但是在mathematica 7里面运行不出来,这是什么问题呢?

  1. For[n = 1, n < 50, n += 2, sn = Normal[Series[Sin[x], {x, 0, n}]];
  2. Plot[{sn, Sin[x]}, {x, -6 Pi, 6 Pi},
  3.   PlotStyle -> {{RGBColor[1, 0, 0],
  4.      Thickness[0.0075]}, {Thickness[0.0071]}}, PlotRange -> {-2, 2}]]
复制代码

换成如下代码,能够运行出结果,可是为什么上面的程序运行不出来结果呢?

  1. Manipulate[sn = Normal[Series[Sin[x], {x, 0, n}]];
  2. Plot[{sn, Sin[x]}, {x, -6, 6},
  3.   PlotStyle -> {{RGBColor[1, 0, 0],
  4.      Thickness[0.0075]}, {Thickness[0.0071]}}, PlotRange -> All], {n,
  5.   1, 50, 2}]
复制代码
发表于 2010-5-23 17:19:59 | 显示全部楼层 来自 上海
Simdroid开发平台
M5 到 M7 是有较大的变化和升级,你会用下面一种方式就可以了。
不必专研为什么过去的(淘汰的)版本模式的区别,没有人会抱着过去的版本不放。
回复 不支持

使用道具 举报

 楼主| 发表于 2010-5-23 17:33:49 | 显示全部楼层 来自 北京
我的意思说上面一种的方法为什么会出问题呢?7里面这种形式的For语句淘汰了吗?
回复 不支持

使用道具 举报

发表于 2010-5-23 17:41:41 | 显示全部楼层 来自 上海
可以这么说,用局部变量代替全局没什么不妥。
回复 不支持

使用道具 举报

 楼主| 发表于 2010-5-23 17:43:35 | 显示全部楼层 来自 北京
可以说这是一个bug吧,以后有什么mathematica问题还要多请教你哦,谢谢了啊!
回复 不支持

使用道具 举报

发表于 2010-5-23 19:45:36 | 显示全部楼层 来自 黑龙江哈尔滨

  1. Clear[n]
  2. For[n = 1, n < 50, n += 2,
  3. Print[(sn = Normal[Series[Sin[x], {x, 0, n}]];
  4.    Plot[{sn, Sin[x]}, {x, -6 Pi, 6 Pi}, PlotRange -> {-2, 2}])]
  5. ]

复制代码
回复 不支持

使用道具 举报

发表于 2010-5-23 19:46:44 | 显示全部楼层 来自 黑龙江哈尔滨

  1. Clear[n]
  2. For[n = 1, n < 50, n += 2,
  3. Print[(sn = Normal[Series[Sin[x], {x, 0, n}]];
  4.    Plot[{sn, Sin[x]}, {x, -6 Pi, 6 Pi}, PlotRange -> {-2, 2}])]
  5. ]

复制代码
回复 不支持

使用道具 举报

 楼主| 发表于 2010-5-23 20:35:15 | 显示全部楼层 来自 北京
可是为什么一开始那个代码运行不对呢?语法没有错误吧?
回复 不支持

使用道具 举报

发表于 2010-5-23 22:07:54 | 显示全部楼层 来自 河南郑州

  1. Table[sn = Normal[Series[Sin[x], {x, 0, n}]];
  2. Plot[{sn, Sin[x]}, {x, -6 Pi, 6 Pi}, PlotRange -> 2], {n, 1, 50, 2}]
  3. Export["C:\\animate.gif", %]
复制代码
回复 不支持

使用道具 举报

发表于 2010-5-23 23:42:25 | 显示全部楼层 来自 台湾

  1. Manipulate[Plot[Evaluate@{Normal@Series[Sin[x],{x,0,n}],Sin[x]},{x,-6Pi,6Pi},PlotRange->{-2,2}],{n,1,50,2}]
复制代码
搭配Evaluate
回复 不支持

使用道具 举报

 楼主| 发表于 2010-5-24 09:34:20 | 显示全部楼层 来自 北京
现在我就想知道为什么我开始那个程序不对呢?
回复 不支持

使用道具 举报

发表于 2010-5-24 22:17:12 | 显示全部楼层 来自 浙江嘉兴
For[n = 1, n < 50, n += 2, sn = Normal[Series[Sin[x], {x, 0, n}]];
      Plot[{sn, Sin[x]}, {x, -6 Pi, 6 Pi},
                              PlotStyle -> {{RGBColor[1, 0, 0],  Thickness[0.0075]}, {Thickness[0.0071]}},
                              PlotRange -> {-2, 2}] // Print
]
回复 不支持

使用道具 举报

发表于 2010-5-25 03:16:11 | 显示全部楼层 来自 美国
差别就是M7里面对最后加了分号;的图像不显示。对于循环语句里面的图形,默认是最后有分号的。所以你要显示那些图形,加Print。TBE_Legend 已经给你回答了。
1# 二叶知秋
回复 不支持

使用道具 举报

 楼主| 发表于 2010-5-25 08:04:55 | 显示全部楼层 来自 北京
谢谢大家了啊。
回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-3 11:05 , Processed in 0.072792 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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