永井 貴博(ながい たかひろ)

東京大学大学院新領域創成科学研究科
基盤情報学専攻金田研究室修士2年

〒113-8658 東京都文京区弥生2-11-16

研究室:情報基盤センター3階


Email: takahiro.nagai + at + klab.cc.u-tokyo.ac.jp


研究業績

1.永井貴博,吉田仁,黒田久泰,金田康正.SR11000モデルJ2における4倍精度積和演算の高速化.情報処理学会先進的計算基盤シンポジウム(SACSIS2007),pp.129-136,2007

2.T.Nagai, Y.Hitoshi, H.Kuroda, Y.Kanada.Fast Quadruple Precision Arithmetic for Multiply/Add Operation on SR11000/J2,Proceedings of The 2007 International Conference on Scientific Computing (CSC'07),pp.151-157,2007

3.永井貴博,吉田仁,黒田久泰,金田康正.SR11000モデルJ2における4倍精度積和演算の高速化.情報処理学会論文誌コンピューティングシステム Vol.48, No.SIG 13 (ACS 19), pp.214-222,2007

研究活動

情報処理学会 学生会員

ルジャンドル・ガウスの積分公式(Legendre-Gauss)

 一般に、ガウス型積分公式(Gaussian quadrature)は不等間隔にx(i)を定め、少ない点数で精度よく積分値を計算するものである。 その中でもルジャンドル・ガウスの積分公式は、重み関数を1にしている。 区間[-1,1]における積分値の算法としては、分点x(i)と重みw(x)の積の総和である。

 ところで、ある規格ではdouble型の仮数部ビットは52であり、有効桁数は約15から16桁である。 この状況でルジャンドル・ガウスの積分計算を行うにあたり、多くの参考書に記載されている分点x(i)や重みw(x)の 有効桁数が少なく(10桁程度)、誤差を少なく計算するためには上記の理由から実用的でない。 さらに、long double型を扱うにあたっては有効桁数が約33から34桁である。 よって、ここでは有効桁数が十分な分点x(i)と重みw(x)を以下に示す。具体的には小数点以下30桁までである。 この値は参考書[山内81]とほぼ等しいことを確認している。

 手法としては、ルジャンドル多項式の漸化式から零点x(i)をニュートン法で求め、x(i)から重みw(x)を求めている。 具体的には、ニュートン・コーツ型の積分公式の1次補間多項式を用いる台形公式や、2次の補間多項式を用いる シンプソンの公式より、少ない点数で精度よく計算できる。 ルジャンドル・ガウスの積分公式におけるlong double型の精度では、N=24位までは計算誤差を確認できる。

          x(i)                    w(x)

N=1

0.000000000000000000000000000000  2.000000000000000000000000000000

N=2

0.577350269189625764509148780501   1.000000000000000000000000000000
-0.577350269189625764509148780501  1.000000000000000000000000000000

N=3

0.774596669241483377035853079956   0.555555555555555555555555555555
0.000000000000000000000000000000   0.888888888888888888888888888888
-0.774596669241483377035853079956  0.555555555555555555555555555555

N=4

0.861136311594052575223946488892   0.347854845137453857373063949222
0.339981043584856264802665759103   0.652145154862546142626936050778
-0.339981043584856264802665759103  0.652145154862546142626936050778
-0.861136311594052575223946488892  0.347854845137453857373063949222

N=8

0.960289856497536231683560868569   0.101228536290376259152531354309
0.796666477413626739591553936475   0.222381034453374470544355994426
0.525532409916328985817739049189   0.313706645877887287337962201986
0.183434642495649804939476142360   0.362683783378361982965150449277
-0.183434642495649804939476142360  0.362683783378361982965150449277
-0.525532409916328985817739049189  0.313706645877887287337962201986
-0.796666477413626739591553936475  0.222381034453374470544355994426
-0.960289856497536231683560868569  0.101228536290376259152531354309

N=16

0.989400934991649932596154173450   0.027152459411754094851780572456
0.944575023073232576077988415534   0.062253523938647892862843836994
0.865631202387831743880467897712   0.095158511682492784809925107602
0.755404408355003033895101194847   0.124628971255533872052476282192
0.617876244402643748446671764048   0.149595988816576732081501730547
0.458016777657227386342419442983   0.169156519395002538189312079030
0.281603550779258913230460501460   0.182603415044923588866763667969
0.095012509837637440185319335424   0.189450610455068496285396723208
-0.095012509837637440185319335424  0.189450610455068496285396723208
-0.281603550779258913230460501460  0.182603415044923588866763667969
-0.458016777657227386342419442983  0.169156519395002538189312079030
-0.617876244402643748446671764048  0.149595988816576732081501730547
-0.755404408355003033895101194847  0.124628971255533872052476282192
-0.865631202387831743880467897712  0.095158511682492784809925107602
-0.944575023073232576077988415534  0.062253523938647892862843836994
-0.989400934991649932596154173450  0.027152459411754094851780572456

N=32

0.997263861849481563544981128665   0.007018610009470096600407063738
0.985611511545268335400175044630   0.016274394730905670605170562206
0.964762255587506430773811928118   0.025392065309262059455752589789
0.934906075937739689170919134835   0.034273862913021433102687732252
0.896321155766052123965307243719   0.042835898022226680656878646606
0.849367613732569970133693004967   0.050998059262376176196163244689
0.794483795967942406963097298970   0.058684093478535547145283637300
0.732182118740289680387426665091   0.065822222776361846837650063706
0.663044266930215200975115168663   0.072345794108848506225399356478
0.587715757240762329040745476401   0.078193895787070306471740918828
0.506899908932229390023747474377   0.083311924226946755222199074604
0.421351276130635345364119436172   0.087652093004403811142771462751
0.331868602282127649779916805730   0.091173878695763884712868577111
0.239287362252137074544603209165   0.093844399080804565639180237668
0.144471961582796493485186373598   0.095638720079274859419082002204
0.048307665687738316234812570440   0.096540088514727800566764830063
-0.048307665687738316234812570440  0.096540088514727800566764830063
-0.144471961582796493485186373598  0.095638720079274859419082002204
-0.239287362252137074544603209165  0.093844399080804565639180237668
-0.331868602282127649779916805730  0.091173878695763884712868577111
-0.421351276130635345364119436172  0.087652093004403811142771462751
-0.506899908932229390023747474377  0.083311924226946755222199074604
-0.587715757240762329040745476401  0.078193895787070306471740918828
-0.663044266930215200975115168663  0.072345794108848506225399356478
-0.732182118740289680387426665091  0.065822222776361846837650063706
-0.794483795967942406963097298970  0.058684093478535547145283637300
-0.849367613732569970133693004967  0.050998059262376176196163244689
-0.896321155766052123965307243719  0.042835898022226680656878646606
-0.934906075937739689170919134835  0.034273862913021433102687732252
-0.964762255587506430773811928118  0.025392065309262059455752589789
-0.985611511545268335400175044630  0.016274394730905670605170562206
-0.997263861849481563544981128665  0.007018610009470096600407063738


参考文献

1.[山内81] 電子計算機のための数値計算法V,山内二郎 宇野利雄 一松信,1971
2.[佐藤01] よくわかる数値計算,佐藤次男 中村理一郎,2001

2007年7月現在

リンク