【问题标题】:Using the output of functions in mathematica for further computation使用mathematica中函数的输出进行进一步计算
【发布时间】:2014-03-31 22:12:34
【问题描述】:

Mathematica 有许多有用的函数(Solve、NDSolve 等)。这些函数以一种非常奇怪的方式输出,即{{v -> 2.05334*10^-7}}。主要问题是似乎没有任何方法可以在程序中使用这些函数的输出。也就是说,所有这些似乎都是终端功能,其输出仅供人类查看。

我已经厌倦了多种方法(Part/. 等)来尝试将函数的输出转换为变量,以便程序可以将它们用于进一步的步骤,但没有任何效果。文档说可以做到,但他们没有列出任何实际功能。例如,如果我尝试使用/。为了移动变量,它继续将我分配给的变量视为空变量,并用它进行符号数学运算,而不是查看值。如果我尝试访问变量,即[[1]],它会说变量不是那么深。

我发现的唯一方法是将后面的步骤放在单独的块中,然后复制粘贴输出以继续评估。有没有办法以编程方式将这些函数的输出转换为变量?

【问题讨论】:

    标签: wolfram-mathematica


    【解决方案1】:

    Solve 等生成替换规则列表。因此,您需要将这些规则应用于要替换的模式。比如

    solutions = x /. Solve[x^2 == 3, x]
    

    为您提供列表中的所有解决方案。

    这是获取解决方案变量名称的快速方法:

    x1 = solutions[[1]]
    x2 = solutions[[2]]
    

    【讨论】:

    • 是的,行得通。文档看起来就像您在没有 solutions = 的情况下输入并直接使用 x。
    • 我同意这在开始时可能会显得有些不透明。但是 Mathematica 方法实际上是相当明智的,一旦你有一个包含多个变量的解决方案的案例,你就会看到这一点。在像 Python 这样的语言中,您可能会返回“字典”映射类型。
    • 我主要使用python。列表推导和 numpy 数组使这种语言的数据处理变得非常简单。再说一次,据我所知,这种类型的解决方案在 python 中是不可能的;你能做的最好的事情就是自行编写一个非常复杂的循环搜索,以找到一个足够接近特定问题的解决方案,并且完全忽略符号解决方案。
    • Mathematica 中的约定不同。 solutions = x /. Solve[x^2 == 3, x] 如果你仔细想想,实际上与编写 Python 列表理解并没有太大区别。如果你喜欢 Python,你看过 Sympy 或 Sage 吗?参见例如stackoverflow.com/questions/17847902/…
    猜你喜欢
    • 1970-01-01
    • 2021-12-28
    • 2021-07-14
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    相关资源
    最近更新 更多