2013-10-30 84 views
2

是否存在一些算法,允許給定一組包含建立一個數學模型?生成模式的數學模型

我不知道我要問的是正確的......讓我再試一次...

鑑於一些輸入設置...

int Set[] = { 1, 4, 9, 16, 25, 36 }; 

是否存在一種算法,將能夠推斷出該集合中明顯的模式嗎?在這種情況下是...

Set[x] = x^2 

我能想到做這樣的事情的唯一途徑是一些地方GA健身是生成的模型是如何緊密地輸入設置一致。

編輯:

我要補充一點,我的問題域意味着集的包容性。這意味着,我正在爲該組找到最接近可能的功能,並且沒有使用該功能來推斷超出集合...

+1

我認爲這會更好math.stackexchange.com –

+6

不,因爲{1,4,9,16,25,36,-1,75,pi,...}是一樣的「有效「一組爲{1,4,9,16,25,36,49,...}。您需要知道您期望的封閉表單解決方案,然後嘗試將其與給定集相匹配。 – mbeckish

+1

@mbeckish同意。對於上面提供的簡單集合,您可以計算平方根並查看線性關係,或者計算反nth根等。還可以應用傅里葉變換並搜索峯值以確定是否存在週期性發生。如果沒有任何有關您期望的模式類型的信息,您可以做的最好的方法是應用多種方法,並查看是否有任何提供有用的關聯。 – DevNull

回答

3

curve fitting的問題可能是一個合理的開始尋找的地方。我不確定這是否正是您要查找的內容 - 它不會真正地識別該模式,因爲它只是生成一個儘可能緊跟模式的函數。

正如其他人所提到的,簡單的設置也很容易被無限多的這樣的功能,所以這樣的事情可能是你想要的東西,而不是正是你在你的問題已經描述。

維基百科似乎表明Gauss-Newton algorithmLevenberg–Marquardt algorithm可能是開始你的研究的好地方。

+3

我不認爲這是OP所要求的。這很適合於一組數據的通用函數,但對於任何一般數據集,我們強制使用特定類型的函數來適合任意數據集。我認爲OP在詢問如何進行自動模式分析以確定序列的性質,而不必事先知道生成函數。 – DevNull

+1

我認爲你是對的 - 儘管正如你和其他人所說的那樣,他所做的描述完全是根本不可能的,所以這可能仍然是有趣的。 – CmdrMoozy

+0

好點。這確實指出了無限可能的答案,所以它是完全有效的。加一 :) – DevNull

3

的數學論證解釋了爲什麼,在一般情況下,這是不可能的:

  • 只有可數,可以在所有的寫了很多計算機程序。
  • 有無數的無限序列整數。
  • 因此,存在對於其中沒有可能的計算機程序可以生成那些序列整數無限多的序列。

因此,這是不可能的在一般情況下。抱歉!

希望這會有所幫助!

2

如果你想知道,如果給定的數據適合一些多項式函數,你,直到你達到一個恆定的計算連續的差異。達到常數的差異數是多項式的次數。

x | 1  2  3  4 
y | 1  4  9 16 
y' |  3  5  7 
y" |   2  2 

因爲y」爲2,y」爲2×+ C ,因此y是X + C X + C 。ç是0,自2 × 1.5 = 3. C 爲0,因爲1 = 1。所以,我們有y = x 。

因此,該算法是:

  • 以連續的差異。
  • 如果它不收斂到一個常數,或者求助於曲線擬合,或者報告數據不足以確定多項式。
  • 如果確實收斂於一個常數,迭代地整合多項式表達式並評估尾隨常數直到達到該程度。