在不同区间内绘制多个函数(Mathematica)

3
我需要在Mathematica中获得一些帮助。 我正在尝试绘制存储在列表中的函数,如下所示: list = {{3x,1,5},{2x^2,0,4}} 我需要获得类似于输入以下内容的输出: Show[Plot[3x,{x,1,5}],Plot[2x^2,{x,0,4}]] 但我不太确定如何实现这一点? 提前感谢。
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
7

在许多可能的方法中,这里有一个或许晦涩而简洁的一行代码,接下来是解释:

Show[Plot[#, {x, ##2}] & @@@ list]

Mathematica graphics

首先,#Slot的运算符形式,##SlotSequence的运算符形式,f @@@ exprApply[f,expr,{1}]]的中缀运算符,因此可以更详细地表达为:

Show[Apply[Plot[#, {x, ##2}] &, list, {1}]]
因此,对于您的list的每个子列表,元素被作为参数传递给纯函数。在纯函数中,#是第一个参数(第一个子元素,例如函数3x),而##2是剩余的参数(从第二个参数开始作为Sequence,例如Sequence[0, 4])。对于第一个元素,评估的命令将是Plot[3x, {x,0,4}]。 如果以上内容过于晦涩难懂,您始终可以定义一个函数并使用Map
plotter[{func_, interval__}] := Plot[func, {x, interval}]
Show[plotter /@ list]
希望这有所帮助!

哇,太棒了:D非常感谢——我已经试图理解这个问题几个小时了,结果原来如此简单! - Matt Immer
1
我总是忘记使用SlotSequences,而这是非常好的利用它们的方式。 - rcollyer
感谢您提供的好解决方案。为了使其完整,要显示不同间隔中的所有图,请使用 PlotRange-> All list = {{2 x, 1, 5}, {2 x^2, 0, 4}}; Show[Plot[#, {x, ##2}, PlotRange -> All] & @@@ list] - Tombart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,