gpt4 book ai didi

wolfram-mathematica - 当参数改变时更新 Manipulate[]'d 图

转载 作者:行者123 更新时间:2023-12-04 08:12:46 26 4
gpt4 key购买 nike

在过去的几天里,我一直在为一个项目与 Mathematica 的 Manipulate 函数作斗争。

我正在调整进入物理模型的假设和边界条件。为此,我希望能够绘制不同的方程并调整参数并动态更新图表。 Manipulate 似乎是完成这项工作的完美工具——除了我无法让它工作。更改参数时,绘图不会更新。

基本示例:

a =.;
b =.;
c =.;
func1[x_] := a*x;
func2[x_] := a*x^2 + b*x + c;
funcNamesList := {"Linear", "Quadratic"};
funcList := {func1[x], func2[x]}
Manipulate[
Plot[function, {x, -5, 5}], {function,MapThread[Function[#1 -> #2],
{funcList, funcNamesList}]}, {a, -5, 5}, {b, -5, 5}, {c, -5, 5},
LocalizeVariables -> False
]

例如,我可以得到 func1点击 func1 刷新, 调整 a ,然后单击 func1再次,但我希望在我调整时更新 a因为我使用的实际函数在参数方面相当不稳定。

- 因为我将处理具有不同参数的长函数,所以使用函数列表很有用。

编辑:

如果它为任何人产生任何想法,以下是我想要做的各个组件的一些工作示例(来自 Wolfram 文档):

绘制图形并在更改参数时更新它们:
Manipulate[
Plot[Sin[a x + b], {x, 0, 6}], {{a, 2, "Multiplier"}, 1, 4},
{{b, 0, "Phase Parameter"}, 0, 10}
]

注意:当函数被带到外面时,这会中断:
func[x] := Sin[a x + b];
Manipulate[
Plot[func[x], {x, 0, 6}], {{a, 2, "Multiplier"}, 1, 4},
{{b, 0, "Phase Parameter"}, 0, 10}, LocalizeVariables -> False
]

更改正在绘制的函数的示例:
Manipulate[
Plot[f[x], {x, 0, 2 Pi}], {f, {Sin -> "sine", Cos -> "cosine", Tan -> "tangent"}}
]

编辑 2
将 func2 从 a*x^2 更改为至 a*x^2 + b*x + c以反射(reflect)函数可能具有不同参数的事实。

编辑 3 添加了我用来在功能按钮上获得好名字的花絮。

最佳答案

有两个问题会阻止您的 Manipulate工作声明。

首先,虽然Manipulate变量 a由于 LocalizeVariables -> False 是全局性的设置,Plot变量 x不是。 x是本地的 Plot表达。

第二个问题是Manipulate ,默认情况下,假定 TrackedSymbols -> Full .这意味着仅跟踪明确出现在操纵表达式中的符号。请注意 a未出现在表达式中,因此不会对其进行跟踪。

我们可以这样纠正这两个问题:

a =.;
function =.;
func1[x_] := a*x;
func2[x_] := a*x^2;
funcList := {func1, func2}
Manipulate[
Plot[function[x], {x, -5, 5}], {function, funcList}, {a, -5, 5},
LocalizeVariables -> False, TrackedSymbols :> {a, function}
]

变化是:
  • funcList改为 {func1, func2}
  • Plot表达式更改为 function[x] ,从而引用本地 x多变的。
  • Manipulate选项 TrackedSymbols :> {a, function}加入。
  • function最初未设置。
  • 关于wolfram-mathematica - 当参数改变时更新 Manipulate[]'d 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7126532/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com