多項式求值的幾個簡單演算法(C語言)

2021-07-28 09:29:02 字數 1171 閱讀 7670

最近在讀 numerical recipes in c++ ,上面給了些多項式求值的演算法,很實用。放在這裡備用。三個函式,分別是多項式求值,多項式求導數值,多項式求各階導數值。

下面的**全都簡單驗算過,應該沒什麼問題,可以大膽的使用。

/**

*@brief poly 計算多項式的值,採用 horner 演算法

*@param coff 多項式的係數,c0, c1, ... cn

*@param n 多項式最高項的次數

*@param x 自變數的取值

*@return 多項式在 x 處的值

*/double poly(const

double coff, int n, double x)

return p;

}/**

*@brief dpoly 計算多項式的值和一階導數值

*@param coff 多項式的係數,c0, c1, ... cn

*@param n 多項式最高項的次數

*@param x 自變數的取值

*@param [out] d 多項式在 x 處的導數值

*@return 多項式在 x 處的值

*/double dpoly(const

double coff, int n, double x, double &dp)

return p;

}/**

*@brief ddpoly 計算多項式的第 0 階到第 m 階導數

*@param coff 多項式的係數,c0, c1, ... cn

*@param n 多項式最高項的次數

*@param x 自變數的取值

*@param dp 多項式在 x 處的各階導數值,從 0 階到 m 階

*@param m 需要求解的多項式的導數的最高端次

*/void ddpoly(double coff, int n, double x, double dp, int m)

int nnd = 0;

for(int i = n - 1; i >= 0; i--)

dp[0] = dp[0] * x + coff[i];

}double cnst = 1.0;

for(int i = 2; i < m + 1; i ++)

}

更快的多項式多點求值?

乙個奇妙的科技 定義卷積矩陣 m begin a 0 0 0 a 1 a 0 0 a 2 a 1 a 0 end 顯然,我們把多項式係數 a 0,a 1.拿下來放到這個方陣中,另乙個多項式寫成列向量的形式,用此矩陣乘向量即是對另乙個多項式模 x n 意義下的多項式乘法 冪和矩陣 a begin 1 ...

多項式相加(C語言)

多項式相加 include include define null 0 struct poly 設定結構體 struct poly jianli void 建立鍊錶 p1 next null return head1 int list struct poly head 求鍊錶長度 return l ...

C語言 多項式加法

c語言 多項式加法 乙個多項式可以表達為x的各次冪與係數乘積的和,比如 2x6 3x5 12x3 6x 20 現在,你的程式要讀入兩個多項式,然後輸出這兩個多項式的和,也就是把對應的冪上的係數相加然後輸出。程式要處理的冪最大為100。總共要輸入兩個多項式,每個多項式的輸入格式如下 每行輸入兩個數字,...