2013-03-04 55 views
3

對於Calculus的編程項目,我們被指示編寫一個模擬辛普森1/3和3/8規則的程序。如何傳入java中的多項式函數?

我們應該接受一個多項式(即5x^2 + 7x + 10),但我很困惑這個概念。我已經開始使用掃描儀,但有沒有更好的方法來正確讀取多項式?

任何示例或參考材料將不勝感激。

+3

如何在列表中告訴你索引號碼是哪個級別? (示例列表[10,7,5]) – gtgaxiola 2013-03-04 18:40:26

+0

或者你問如何解析用戶輸入以獲得多項式? – iamnotmaynard 2013-03-04 18:42:05

+0

我相信解析是我的問題。我對Java有點新鮮,所以這讓我很困擾。 – user2132947 2013-03-04 18:44:36

回答

1

我建議你開始與一個功能的界面,需要在多個輸入值,並返回一個輸出值:

public interface Function { 
    double evaluate(double x); 
} 

寫多項式實現:

public class Poly { 

    public static double evaluate(double x, double [] coeffs) { 
     double value = 0.0; 
     if (coeffs != null) { 
      // Use Horner's method to evaluate. 
      for (int i = coeffs.length-1; i >= 0; --i) { 
       value = coeffs[i] + (x*value); 
      } 
     } 
     return value; 
    } 
} 

將它傳遞給您的集成商,讓它做它的事情。

+0

在您的示例中,不是硬編碼值(10.0,7.0,5.0),我可以很好地傳遞係數與用戶輸入的功能一致,是否正確? – user2132947 2013-03-04 19:05:03

1

一個簡單的方法(讓你開始)是使用一個數組。
在你的例子中:5x^2 + 7x + 10應該是:
{10,7,5}
即,在索引0處,索引1處的x^0的因子10是7,而索引2處的x^1是x^2處的10。

當然這不是最好的方法。要弄清楚如何代表x^20

+0

非常感謝你Cratylus我會給這個方法一槍!謝謝你@Sotirios Delimanolis – user2132947 2013-03-04 18:55:24

1

在java中,預格式化您的輸入並只是要求常量 - 如在「請輸入X^2術語」(然後X項,然後是常數)。

如果這是不可接受的,那麼您將非常容易受到輸入樣式差異的影響。您可以在+和分離的String.split [婷術語 - ,這將離開你是這樣的:

[5倍^ 2],[7倍],[10]

然後,您可以搜索包含「x^2」和「x」的字符串以區分您的術語

當然,首先除去空格和.toLowerCase()以抵消用戶差異。

當你拆分你的字符串時,你將需要識別 - 個案例,這樣你可以否定這些常量。

你可以做兩個拆分,一個+另一個 - 。你也可以使用StringTokenizer選項來保留「令牌」,這可能會更直接,但StringTokenizer會讓一些人感到不舒服,所以請隨時爲你提供任何幫助。

請注意,即使用戶鍵入「5x^2 + 10 + 7 x」,這可能會得心應用。

+0

如果多項式的類型不受指數限制?所以輸入可能是一個函數(4x^7 + 10x^4 + 3x + 10)或(x^3)? – user2132947 2013-03-04 19:00:57

+0

你必須對輸入做一些假設或建立一個通用計算器。你做的假設越多,就越容易。你的建議輸入不會造成任何困難,只需稍作修改即可關閉電源以及常量...... – 2013-03-04 21:23:05

0

我相信解析是我的問題。我對Java有點新鮮,所以這讓我很困擾。

您應該使用parser generator

解析器生成器是一種讀取語法規範並將其轉換爲可識別語法匹配的Java程序的工具。除了解析器發電機本身,JavaCC的提供與解析器的生成其它的標準功能,如樹建築(通過附帶的JavaCC一個名爲JJTree的工具),行動,調試等

JavaCC的常見問題解答How do I parse arithmetic expressions?

請參閱JavaCC附帶的示例。

查看關於編譯的任何文本。

請參閱Parsing Epressions by Recursive DescentTheodore Norvell的教程。

而且,看到JavaCC - Parse math expressions into a class structure

相關問題