#include #include"Akima(simple).h" //for MAX & etc. int main(void) { //左端2つ、右端2つには区間外の分点が入る為使用不可 double x[MAX]={0, 0, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8}; //教科書P34 問3.6 double f[MAX]={0, 0, 1.266, 1.159, 1.047, 0.927, 0.795, 0.644}; int N=6; //ユーザーが設定した分点の数 aki_set(x,f,N); //aki_hokan() の前に必ず実行しなければならない //この時点で x[] と f[] に区間外の分点がコピーされている for(double d=0;d<=1;d+=0.1) //表示したい範囲を指定して下さい printf("x = %f\tf = %f\n",d,aki_hokan(d)); printf("*** 以下は追加された区間外の分点 ***\n"); printf("x[0] = %f\tf[0] = %f\n",x[0],f[0]); //左外側 printf("x[1] = %f\tf[1] = %f\n",x[1],f[0]); //左内側 printf("x[n+1] = %f\tf[n+1] = %f\n",x[N+2],f[N+2]); //右内側 printf("x[n+2] = %f\tf[n+2] = %f\n",x[N+3],f[N+3]); //右外側 return 0; } /* 最低3点与える必要があります(アキマの補間法の性質) x[] は不等間隔でも問題ありません(アキマの補間法の性質) x[] に同じ値を複数与える事は出来ません(アキマの補間法の性質) ソートは行いません(x[] に格納する値は小さい順でなければならない) aki_hokan() に渡せる x の値に制限はありません このプログラムでは円は描けません(区分多項式なら工夫次第で描けるようになります) 先ずは教科書と見比べて全く同じ式である事を確認してみよう! c3-02058 Koyama Atsushi */