PostScriptで数値積分2

PostScriptで数値積分 - MasaHeroの日記からさらに書いてみた。

%!PS-Adobe-2.0
% f(x)の定義
% % 例としてf(x)=x^2
/F {
	/X exch def
	X dup mul
} def
% 積分範囲の定義
% 例として0から1
/Start 0 def
/End 1 def
% 区間幅を計算するマクロ
/Span { End Start sub Imax div } def
% 分割数を引数に中点則で数値積分
/Integ {
	10 dict begin
		% 微小区間への分割数の定義
		/Imax exch def
		0
		Start Span 2 div add Span End Span 2 div sub { F add } for
		Span mul
	end
} def
% 分割数を引数に台形則で数値積分
/Integ_daikei {
	20 dict begin
		% 微小区間への分割数の定義
		/Imax exch def
		0
		Start Span End Span sub {
			/XI exch def
			XI F XI Span add F add Span mul 2 div add
		} for
	end
} def

% ガウス・ルジャンドル積分
% n=2
/Integ_gauss_2 {
	30 dict begin
		/UI 0.577350269189626 def
		/KX End Start sub 2 div def
		UI KX mul KX add F UI KX mul KX sub F add
		2 div End Start sub mul
	end
} def
% n=3
/Integ_gauss_3 {
	40 dict begin
		/UI 0.774596669241483 def
		/KX End Start sub 2 div def
		UI KX mul KX add F UI KX mul KX sub F add 0.555555555555556 mul
		KX F 0.888888888888889 mul add
		2 div End Start sub mul
	end
} def
% main
Integ_gauss_2 =
Integ_gauss_3 =
100 Integ =
100 Integ_daikei =
1000 Integ =
1000 Integ_daikei =
10000 Integ =
10000 Integ_daikei =