最近在讀 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。總共要輸入兩個多項式,每個多項式的輸入格式如下 每行輸入兩個數字,...