gpt4 book ai didi

wolfram-mathematica - 如何最大化 Mathematica 中将可变长度列表作为输入的函数?

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

我有一个类似时间序列的函数,它基于
实数列表(即您可以在列表上运行该函数
1,2,3,... 实数)。我遇到的问题是如何最大化
给定列表长度的函数(受一组约束)。
我可以将函数修复为固定数量的实数(即 f[x_Real, y_Real]而不是 f[x_List] ) 并治疗 xy作为第一个
列表的两个元素,并调用 Maximize在功能上,但这
不是很优雅。我希望能够轻松更改号码
列表中的元素。

像我描述的那样优化功能的最佳方法是什么?
将列表作为参数,对于固定的列表长度?

最佳答案

使用带有 SlotSequence 的纯函数(通常拼写为 ## )参数,如下所示:

In[1]:= f = With[{r = Total[{##}^2]}, Sin[r]/r]&;
In[2]:= NMaximize[f[x,y,z], {x,y,z}]
Out[2]= {1., {x -> -0.0000402914, y -> 0.0000278573, z -> -0.0000765568}}

编辑:
  • 点赞## , xs将绑定(bind)到 Sequence ,而不是 List , 所以 Total[xs]不会工作。 Plus[xs]Plus[##]将。
  • 我更喜欢纯函数而不是 DownValues对于简单的事情,因为它们是更简单的构造。其中一些是习惯,因为在旧版本的 Mathematica 中,您可以从纯函数中获得更好的性能。使用纯函数而不是 DownValues仍然是表明您没有对模式匹配调度或非标准评估做任何花哨的好方法。
  • 关于wolfram-mathematica - 如何最大化 Mathematica 中将可变长度列表作为输入的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1390785/

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