2012-03-20 108 views
2

我打算開發一個可以計算用戶給定的表達式(函數)限制的應用程序。什麼是計算功能限制的最佳方法?

我已經有了一個函數式表達式求值器,它肯定會派上用場。我的想法是這樣計算:我給參數提供了一些越來越接近點的值,但沒有達到這一點。最後,我看到兩個連續的結果之間的差異是否接近或遠離0變得更小或更大。如果接近更小,則意味着該限制是有限的,否則是無限的。之後,很容易估算結果。

有沒有更好的方法呢?或者我應該去這個嗎?

應用程序將接受包含這些數學運算符的函數:+,-,*,/,%,^,函數(如floor,logarithms,trigonometry)和3個條件函數(abs,min,max)。 因此,例如,一個具有整數值的特定值和另一個非整數值的函數不被接受。

+2

這通常是不可能的。您是否對用戶可以輸入的功能類型進行約束? – Deestan 2012-03-20 14:35:00

+0

@sch你是對的......它接近於0而不是更小。而且我沒有受到任何限制......我認爲這是行得通的。 – Tibi 2012-03-20 14:39:21

+4

寫一個web服務,打電話給www.wolframalpha.com :-) – 2012-03-20 14:43:59

回答

2

在數學上,你可以使用微分微積分。這樣你只需要實現差分規則,你沒有用蠻力

,但你的WolframAlpha得到的評論是偉大的: 例如:thats exactly what you need

+0

這對我來說似乎很難......或者我錯了嗎? – Tibi 2012-03-20 14:44:47

+0

有沒有這麼多的規則,但要做好所有的事情會很困難是的:-) – fixagon 2012-03-20 14:49:15

+4

@Tibi它*很難。我並不是想諷刺或諷刺,但如果你剛纔意識到,你沒有必要的數學功能來解決這個問題。 – Deestan 2012-03-20 14:52:04

1

我只是打算寫一個簡短的評論,但我對它的想法越多,我就越覺得你的問題的答案是你不應該接受你的建議。您的建議中有一個循環:找出您提議爲系統提供一系列輸入的函數的限制,這些輸入的評估傾向於函數的(假定的)限制。如果不知道限制是什麼,你會如何開始?或者你是否想要實現一個能找到你已知的功能限制的程序?一個會比你少知道的人造白癡?

至於你應該做什麼,首先要認識到,這實際上是一個相當棘手的功能來實現,並且沒有適用於所有功能的通用解決方案,即使對於所有漂亮,功能良好的功能也沒有。您可能會發現,看看Sage(http://www.sagemath.org/)或您知道的任何其他開源計算機代數系統是如何做到這一點的,都是有益的。

2

這個答案比編程更適合數學,但它會告訴你爲什麼你不能做你正在尋找的東西(除非你添加更多關於函數的信息)。

我們定義f如下:

  • f(x) = 0如果x是有理數
  • f(x) = 1如果x是不是一個合理的數字

此功能甚至沒有在限制任何一點,但如果您使用您指定的方法,那麼對於您使用的浮點數(或雙倍數),f(x)將爲0,所以差異將是0

你的方法會說在5點的f的限制例如是0,但是f根本沒有限制。

+0

你是對的,但是這是不可能寫沒有if條款。而在編程中,很難(如果不是不可能的話)在理性和非理性數字之間做出區別。所以這將是一個約束,沒有條件從句。 – Tibi 2012-03-20 14:53:22

+0

你想讓你的程序接受什麼樣的功能?你可以編輯你的問題,並至少提供一些例子。 – sch 2012-03-20 14:56:37

相關問題