maxima入門

シンプソン則を導く

この項ではシンプソン則を導きます。
シンプソン則はwikipediaにあります。
情報処理の試験にも出てきますが、この係数がどうやって出てくるのか疑問だったので
maximaでプログラムを書きました。

シンプソン則を導く

/* 区間x1,x2を2等分 */ h:(x1+x2)/2; /* 2次式で近似。係数を求める */ f(x):=a*(x-h)^2+b*(x-h)+c; solve([fx1=f(x1),fh=f(h),fx2=f(x2)],[a,b,c]); /* ここでa,b,cの値が求まる */ ansa:(2*fx2+2*fx1-4*fh)/(x2^2-2*x1*x2+x1^2); ansb:-(fx1-fx2)/(x2-x1); ansc:fh; /* 今度は求めた係数を変数とみなす */ g(a,b,c):=f(x); /* 求めた係数を代入して整理 */ factor(integrate(g(ansa,ansb,ansc),x,x1,x2)); /* ((fx2+fx1+4*fh)*(x2-x1))/6 */ /* これはシンプソン則の係数になっている */ /* 定数 * (fx1+fx2+4*fh) */
since 2014/03/23