我有一个数组double x[]
长度为 11 的函数f(double x[])
。我想找到函数的最小值f()
通过离散化。所以对于给定的值val1, val2, ..., valn
我需要一个循环遍历 {val_1, ..., val_n}^11 中 x 的所有元组。我可以轻松地使用 11 个嵌套循环,但这真的是我能做的最有效的吗?
Edit:澄清一下:函数 f() 是在 11 维集上定义的。我想评估 11 维网格顶点上的函数。对于网格大小h
,数组条目的可能值x[]
可能0
, h
, 2*h
, ..., n*h
= val_1, val_2, ...,val_n 。所以一开始f(val_1, val_1, ..., val_1)
应该被评估,那么f(val_1, val_1, ...,val_1, val_2)
,...并且在和f(val_n, val_n, ..., val_n)
。我实际上并不关心顺序,但我确实关心速度,因为有很多这样的元组。准确地说,这样的元组有n^11个。所以对于 n=10f()
必须评估 10^11 次。我的电脑可以评估f()
每秒大约 5*10^6 次,因此对于 n=10 的评估f()
需要5个小时。这就是为什么我正在寻找最有效的方法来实现它。