多項式計算はライブラリ関数 pow メソッドと Qin Jiugao アルゴリズムを呼び出し、その演算効率を測定してみましょう
計算関数 f(x)=1+(Σxi/i)(i は 1 から m までとります);
ctime time 関数を使用して実行時間をテストし、x=0.9 として
#include
#include
#include
を名前空間 std; を使用して計算します
double Fn1(double x) ;
double Fn2(double x);
#define m 1000000000
Clock_t start, stop;
int main(){
double x;
x = 0.9;
start = Clock();
cout << x) << endl;
stop = Clock();
cout << double(stop - start) / CLK_TCK << endl;
//---------- - ----------
start = クロック();
cout <
cout << double(stop - start) / CLK_TCK << endl;
return 0;
}
double Fn1(double x){
int i;
double f=1.0;
for (i = 1; i f += pow(x, i)/i;
return f;
}
double Fn2(double x){
int i;
double f = 0.0;
( i = m; i >= 1; i--) /*秦九超多項式アルゴリズム*/
f = f*x + 1.0 / i;
return f*x + 1.0;
}
下の表を参照実行時間
m | 100 | 1000 | 10000 | 100000 | 1000000 | 10000000 | 1000000 | 1000000000 |
Fn1 | 0.001 | 0.001 | 0.003 | 0.015 | 0.157 | 1.619 | 17.955 | 191.608 |
Fn2 | 0 | 0 | 0 | 0.001 | 0.005 | 0.0 49 | 0.472 | 4.706 |
できる実行時間の結果からわかるように、Qin Jiushao アルゴリズムは pow 呼び出しメソッドよりもはるかに効率的です
以上、多項式計算の効率テストをその側面も含めて紹介しましたが、PHP チュートリアルに興味のある友人の参考になれば幸いです。