【问题标题】:Constants and independent variables in function definitions函数定义中的常量和自变量
【发布时间】:2011-12-07 11:06:48
【问题描述】:

我有一个方程式,我尝试在 Mathematica 中绘制并使用它,其形式为

f(x,y) = (x^2 - a^2)^2 + x^2 y^2

这里xy 是自变量,a 是一个常数。定义这样的函数的标准方法是什么:常量/参数应该出现在参数列表中还是应该只包含自变量?或者,参数是否应该出现在参数列表中但作为可选参数(具有默认值)?

【问题讨论】:

    标签: function wolfram-mathematica


    【解决方案1】:

    所有这些选项都是可能的,并且每个选项在某些情况下都是合理的。

    出现在参数列表中:

    f[x_, y_, a_] := (x^2 - a^2)^2 + x^2 y^2
    

    或者:

    f[a_][x_, y_] := (x^2 - a^2)^2 + x^2 y^2
    

    只有自变量:

    全局定义a

    a = 3.14;
    f[x_, y_] := (x^2 - a^2)^2 + x^2 y^2
    

    作为可选参数

    f[x_, y_, a_:3.14] := (x^2 - a^2)^2 + x^2 y^2
    

    如果我要提供更具体的答案,您需要更具体地了解您的用途。应该谨慎使用全局定义的a 值,但它肯定不是没有它的位置。

    【讨论】:

    • 我使用的函数定义了一系列曲线。在我的笔记本中,我想我会指定定义曲线形状的函数和参数。这些参数在整个笔记本中不会改变,所以我认为它们应该是全局变量,但我想问是否有定义此类函数的标准/通用方式。
    • f[a_][x_, y_]f[x_, y_, a_]有什么区别?
    • 如果a确实是Notebook中的一个常量,那么我相信直接定义它就可以了,即a = 3.14。如果您开始进行许多“全局”分配,您可能需要查看上下文Unique to This Notebook,以便它们不会干扰同一会话中的其他笔记本。
    • 模式f[a_][x_, y_] 可用于创建pseudo-Currying function,您可以在其中分两个单独的步骤传递参数。如果您将函数 Maping 或 Applying 到列表或数组中,这会很方便。
    • 感谢关于上下文的注释 - 这似乎非常有用。
    【解决方案2】:

    您也可以自己创建一个函数来生成您需要的函数。

    f[a_] := Function[{x, y}, Evaluate[(x^2 - a^2)^2 + x^2 y^2]]
    

    然后用它来生成函数

    f[23]
    

    然后你就可以使用它了

    f[23][2, 3]
    

    或存储 help = f[23] 并使用

    help[2,3]
    

    希望对你有帮助

    【讨论】:

    • 你喜欢这个而不是f[a_][x_,y_]
    • 这取决于您想要做什么:只需稍作改动,这种方法就可以让您进行部分评估,从而降低计算复杂度。
    猜你喜欢
    • 1970-01-01
    • 2021-07-15
    • 2018-05-25
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多