gpt4 book ai didi

wolfram-mathematica - 动态作为函数参数

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

Mathematica 提供了许多能够处理的函数 Dynamic作为论据。
例如,函数 FileNameSetter有以下变体:

FileNameSetter[Dynamic[name]] 
uses the dynamically updated current value of name, with the
value of name being reset if a different file is chosen.

我想知道如何定义一个将动态表达式作为参数的函数模式。例如,这是一种包装函数 LocatorPane 的动态变体的尝试。 :
SinLocatorPane[Dynamic[sinvalue_]] := 
LocatorPane[Dynamic[x, (x = #; sinvalue = Sin[First[#]]) &],
Plot[Sin[x], {x, 0, 10}]]

用于动态表达式参数的正确模式是什么?在函数定义中使用动态参数有什么注意事项吗?

最佳答案

如果您想编写一个函数来更新某个变量的值,这就像通过引用传递一个变量。在 Mathematica 中实现这一点的标准方法是使用 Hold*函数的属性。

SetAttributes[SinLocatorPane, HoldFirst];
SinLocatorPane[sinvalue_] :=
LocatorPane[Dynamic[x, (x = #; sinvalue = Sin[First[#]]) &],
Plot[Sin[x], {x, 0, 10}]]

然后
{Dynamic[sv], SinLocatorPane[sv]}

会按您的预期工作。您的代码有效,因为 Dynamic 有 HoldFirst属性,这允许您的代码更新变量 sinvalue .否则真的不需要动态

关于wolfram-mathematica - 动态作为函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5706927/

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