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 =