Другой способ сделать это - определить правила замещения: rule = {vmax -> 10, km -> 10}; Участок [f [x] /. rule, {x, 0, 100}] Преимущество состоит в том, что вы можете повторно использовать правило в других выражениях.

у описать проблему, с которой я столкнулсяPlot с помощьюWith сохранить определенные параметры «локально». Я не обязательно прошу исправить: у меня проблема в понимании.

Иногда я использую конструкцию, такую ​​как следующее, чтобы получить участок:

Способ 1

plot1 = With[{vmax = 10, km = 10}, 
  Plot[Evaluate@((vmax x)/(km + x)), {x, 0, 100}, 
   AxesOrigin -> {0, 0}]]

Мне нравится этот метод, и он достаточно понятен дажеMathematica пользователи именно то, что происходит.

Когда построенные уравнения становятся более сложными, мне нравится определять их вне графика (используя SetDelayed). Например:

f[x_] := (vmax x)/(km + x)

Тем не менее, следующеене работает

Способ 2

plot2 = With[{vmax = 10, km = 10}, 
  Plot[Evaluate@f[x], {x, 0, 100}, AxesOrigin -> {0, 0}]]

Я всегда наивно думал, что так и должно быть. Тем не менее, на основании справки, что

График обрабатывает переменную x как локальную, эффективно используя Block

Я использовал различные обходные пути, в основном что-то вроде следующего

Способ 3

plot3 = Plot[With[{vmax = 10, km = 10}, Evaluate@f[x]], {x, 0, 100}, 
  AxesOrigin -> {0, 0}]

Этот кажется очень неловким, и обычно требует дальнейшего объяснения дажеMathematica пользователи.

Сюжетные выходы

Однако недавно я случайно обнаружил, что заменаBlock заWith в методе 2 работает точно так, как ожидалось.

Я могу, например, сделать что-то вроде следующего (что мне кажется очень универсальным подходом):

plot4 = Block[{vmax = {10, 10, 10}, km = { 10, 100, 1000}}, 
  Plot[Evaluate@f[x], {x, 0, 100}, AxesOrigin -> {0, 0}, 
   PlotStyle -> {Red, Green, Blue}]]

дающий

Мои вопросы следующие. Чем объясняется разница в поведении сWith в методе 1 и 2? Должен ли я ожидать, что метод 2 не сработает? Кроме того, чем объясняется разница в поведении сBlock а такжеWith в методе 2? Должен ли я быть в состоянии предсказать, чтоBlock должно сработать?

Как ни странно, многие опытные решения были предложены мне более опытными, чем я, но никто не предложил использоватьBlock.

Наконец, мне нужно сохранитьvmax а такжеkm местный. (Они были определены алгебраически в другом месте)

Ответы на вопрос(1)

Ваш ответ на вопрос