簡體   English   中英

如何在不使用指數運算符的情況下使用C編程轉換多項式?

[英]How do I translate a polynomial with C programming without exponent operators?

我正在看我的C教科書,里面有一個頁面,提示告訴我將多項式轉換為C代碼。 我們尚未討論指數運算符,現在已明確指示不要使用它們,而可以使用基本運算符找到另一種方法。 多項式如下: 5x^(2)+3x-2

我該怎么做呢?

注意ax^2 + bx + c可以寫成

c + x*(b + x*(a))

可以很容易地將其擴展為任意多項式。

在C語言中,沒有exponent operator 。雖然可以使用pow()完成相同的操作。 我懷疑您的書不想要這個。 鑒於此限制,您可以像簡單地x * x一樣執行x^2的運算,其中x是函數的變量。

即你可以做這樣的事情:

int poly(int x) {
    int y = ((5 * x * x) + (3 * x) - 2);
    return y;
}

附錄:

如果您想要一個可以輕松擴展為任意多項式的通用公式,則可以改用該公式,並輸入abcx

int poly(int a, int b, int c, int x) {
    int y = c + x*(b + x*(a));
    return y;
}

感謝chux和FredK。

我認為您應該在第二個多項式函數中設置參數a,b,c和x

int poly2(int a, int b, int c, int x)
{
    int y = a*x*x+b*x+c;
    return y; 
}

在您的情況下使用此功能時,您可以致電

int result = poly2(a,b,c, x) 

帶有一組特定的a,b,c,x

C沒有指數運算符。

對多項式建模的一種非常方便的方法是使用數組存儲系數,以使數組索引對應於x的冪。 IOW,建模5x 2 + 3x - 2 ,使用

double coef[] = {-2.0, 3.0, 5.0}; // -2.0 + 3.0x + 5.0x^2

要評估多項式,請使用循環,並考慮FredK在回答中提及的屬性-5x 5x 2 + 3x - 2 == ((5)x + 3)x - 2

size_t num_elements = sizeof coef / sizeof coef[0]; // yields 3 in this case
double result = 0;
for (size_t i = num_elements - 1; i > 0; i--)
  result += x * ( result + coef[i] );
result += coef[0];

此方法適用於任何程度的多項式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM