Составьте несколько функций в разных интервалах (Mathematica) - PullRequest
3 голосов
/ 11 октября 2010

Мне нужна помощь в Mathematica. Я пытаюсь построить функции, которые хранятся в списках, таких как:

список = {{3x, 1,5}, {2x ^ 2,0,4}}

Мне нужно получить вывод, аналогичный тому, который я ввел:

Показать [земля [3x, {х, 1,5}], земля [2x ^ 2, {х, 0,4}]]

Но я не совсем уверен, как это достигается?

Заранее спасибо

1 Ответ

6 голосов
/ 11 октября 2010

Из многих возможных способов сделать это, возможно, загадочный и краткий однострочный, сопровождаемый объяснением:

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

Mathematica graphics

Сначала #операторная форма Slot и ## является операторной формой SlotSequence, а f @@@ expr является инфиксным оператором для Apply[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]

Надеюсь, это поможет!

...