2010-10-11 29 views
3

J'ai besoin d'aide dans Mathematica. Je suis en train de tracer des fonctions qui sont stockés dans des listes comme:Tracer plusieurs fonctions dans différents intervalles (Mathematica)

list = {{3x, 1,5}, {2x}^2,0,4}

Je dois obtenir une sortie similaire si j'entrée:

Show [Terrain [3x, {x, 1,5}], terrain [2x^2, {x, 0,4}]]

Mais je ne suis pas tout à fait sûr de savoir comment c'est atteint?

Merci à l'avance

Répondre

6

Parmi les nombreuses façons de le faire, voici un one-liner peut-être cryptique et laconique, suivie d'une explication:

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

Mathematica graphics

D'abord, # est la forme d'opérateur de Slot et ## est la forme d'opérateur de SlotSequence, et f @@@ expr est l'opérateur d'infixe pour Apply[f,expr,{1}]], donc cela pourrait être plus explicite exprimée en:

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

Ainsi, pour chaque sous-liste de vos list, les éléments sont passés comme arguments à la fonction pure. Dans la fonction pure, # est le premier argument (premier sous-élément, par exemple la fonction, 3x) et ##2 est le reste des arguments (commençant par le second Sequence, par exemple Sequence[0, 4]). Pour le premier élément alors, la commande évaluée serait Plot[3x, {x,0,4}].

Si ce qui précède est trop cryptique, vous pouvez toujours définir une fonction et utilisez Map:

plotter[{func_, interval__}] := Plot[func, {x, interval}] 
Show[plotter /@ list] 

Hope that helps!

+0

Wow absolument fantastique: D Merci beaucoup - J'ai essayé de comprendre cela pendant des heures et il s'avère que c'est aussi simple! –

+1

J'oublie toujours d'utiliser 'SlotSequences', et c'est un très bon usage. – rcollyer

+0

merci pour la bonne solution. juste pour le compléter, pour afficher tous les graphiques à des intervalles différents, utilisez ** PlotRange-> All ** 'list = {{2 x, 1, 5}, {2 x^2, 0, 4}}; Afficher [Tracer [#, {x, ## 2}, PlotRange -> Tous] & @@@ liste] ' – Tombart