我有一個長度爲11的數組double x[]
和一個函數f(double x[])
。我想通過離散化找到函數f()
的最小值。所以對於給定的值val1, val2, ..., valn
我需要一個循環遍歷{val_1,...,val_n}^11中x的所有元組。我可以很容易地使用11個嵌套循環,但是這真的是我能做的最有效率的嗎?使用C生成所有元組 - 比嵌套循環更好的方法?
編輯: 澄清事情:函數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 = 10 f()
必須評估10^11次。我的電腦每秒可以評估f()
約5 * 10^6次,所以對於n = 10,評估f()
需要5個小時。這就是爲什麼我正在尋找最有效的方式來實施它。
你真的是「高效」,或者你的意思是「最整潔」? – 2012-01-10 14:36:17
我需要*真*快的東西。我期望該計劃運行數小時。但是,當然,如果代碼的*也是*可讀性和靈活性的話,那就太棒了。 – lumbric 2012-01-10 14:39:55
什麼是f()?你能用筆和紙找到最低限度嗎?你看過漸變下降算法嗎? – Phonon 2012-01-10 14:40:33