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

[基础概念] 一个简单的画图问题(一次Plot多个函数时,evaluate的作用)【已解决】

[复制链接]
发表于 2009-9-21 21:39:54 | 显示全部楼层 |阅读模式 来自 黑龙江哈尔滨
本帖最后由 TBE_Legend 于 2009-9-22 08:02 编辑
  1. Plot[Evaluate[Table[BesselJ[n, x], {n, 4}]], {x, 0, 10},
  2. Filling -> Axis]
  3. Plot[Table[BesselJ[n, x], {n, 4}], {x, 0, 10}, Filling -> Axis]
复制代码
这是help文档中的一个例子,请比较两个命令的结果,两个图是不同的。 感觉是函数的HOLD引起的,但是具体是怎么回事不清楚,知道的给说说,多谢!~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2009-9-21 21:54:28 | 显示全部楼层 来自 黑龙江哈尔滨
Simdroid开发平台
本帖最后由 TBE_Legend 于 2009-9-21 21:55 编辑

1# TBE_Legend

  1. Plot[Evaluate[Table[Sin[k x], {k, 1, 5}]], {x, 0, 2 Pi},
  2. PlotStyle -> Table[Dashing[k], {k, 0.002, 0.01, 0.002}]]
  3. Plot[Table[Sin[k x], {k, 1, 5}], {x, 0, 2 Pi},
  4. PlotStyle -> Table[Dashing[k], {k, 0.002, 0.01, 0.002}]]
复制代码



应该是由于Table命令的HoldAll属性导致的,但谁能说说为什么不加Evaluate时, Plot作用的好像是一个函数。 为什么? 里面的过程是什么样子的?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

发表于 2009-9-22 00:22:22 | 显示全部楼层 来自 美国
是plot的default是Hold。
Plot开始把整个Table作为一个expression来画,所以用一种颜色或者option来画,等做了这个以后,再Evaluate Table,得到多个曲线。
如果加了Evaluate,就强制先执行Table内的Expression,得到一个List,Plot面对一个List的时候,根据Default对List里面的每一个元素填一个颜色(那些颜色顺序是一定的).
回复 不支持

使用道具 举报

发表于 2009-9-22 02:18:04 | 显示全部楼层 来自 北京海淀
本帖最后由 waynebuaa 于 2009-9-22 02:20 编辑

3# smarten
解释得相当精彩!!
下面的代码可以佐证

  1. Plot[{Evaluate[Table[BesselJ[n, x], {n, 4}]]}, {x, 0, 10}, Filling -> Axis]
复制代码
回复 不支持

使用道具 举报

 楼主| 发表于 2009-9-22 08:02:09 | 显示全部楼层 来自 黑龙江哈尔滨
是plot的default是Hold。
Plot开始把整个Table作为一个expression来画,所以用一种颜色或者option来画,等做了这个以后,再Evaluate Table,得到多个曲线。
如果加了Evaluate,就强制先执行Table内的Expression,得 ...
smarten 发表于 2009-9-22 00:22


解释得很清楚,谢谢!~
回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 06:39 , Processed in 0.036789 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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