#include #include #include /******* 表2.1のラグランジュ補間の誤差ε_1,2,3,4を出力するプログラム ******** ・実行すると,ラグランジュ多項式の次数n(textのεの添字に対応)と 補間区間の数N(textのNに対応)のデータ入力を求めます. ・コマンドラインの第一引数にnを,第二引数にNを与えることでも 即時に誤差を出力することができます. 例) >lagrange_N 2 12 ・L_2ノルムの2乗の計算には積分の台形公式(式(3.4))を用います. ・補間点で重複計算がありますが, 誤差はないので無視します. ****************************************************************************/ #define nn 100 //小区間中のきざみ数(L2nの精度に関わる) double f(double x){ //f(x)の計算式 double y; y = 1./(1.+25.*pow(x,2)); return y; } /*** x=xaにおけるラグランジュ補間の計算結果を返す関数 ***/ double Lagrange(int n, double xa, double *x, double *y){ int i, j; double temp, f=0.; for(j=0; j 1000){ printf("次数nの値が大きすぎます.\n"); return 2; } if(fmod(N, n) != 0){ printf("入力エラーです.\n"); printf(" N = %dとするなら\n n=",N); for(i=1; ilagrange_N 2 12 > data.csv などとコマンドライン上でファイルにリダイレクトしてください. *************************************************************/ for(j=0, x=Min; j