よりみち

Remove["Global`@*"] ;

dy = 1/10000000 ;

y = 0.1 ;

g1 = Integrate[Sqrt[Abs[1 - x^2]]/(y - x), {x, -1, y - dy}] ;

g2 = Integrate[Sqrt[Abs[1 - x^2]]/(y - x), {x, y + dy, 1}] ;

Print[g1 + g2, " ", N[Pi * y]] ;

Null

0.314159 0.314159

これぐらい小さな隙間だと理論値とほぼ一致していますね . Abs[] を用いないと結果が変わってきますが, 理由は良くわかりません .

他にも何ポイントか計算して, グラフを描いてみましょう .

Remove["Global`@*"] ;

glist = Table[Null, {i, -9, 9}] ;

dy = 1/10000000 ;

p1 = Plot[Pi * x, {x, -1, 1}, DisplayFunction→Identity] ;

p2 = ListPlot[glist, DisplayFunction→Identity] ;

Show[p1, p2, DisplayFunction→$DisplayFunction] ;

Null

[Graphics:htmlfiles/genko_02_22.gif]

点が積分計算の結果です . 確かにy = π x と積分の結果が一致しています .

ただ, マニュアルをよく見てみるとこの隙間を空けた積分を自動的にやる方法が載っていました .

コ - シ - の主値を求める方法はもともとmathematicaには組み込まれていました . 積分の領域で発散するポイントを指定するだけで自動的に主値を求めるパッケ - ジがありました . 以下に示す, "NumericalMath`CauchyPrincipalValue`"を用いると可能です .

Needs["NumericalMath`CauchyPrincipalValue`"]

y = 0.1 ;

CauchyPrincipalValue[Sqrt[Abs[1 - x^2]]/(y - x), {x, -1, {y}, 1}]

0.314159

ただし, CauchyPrincipalValueは数値積分のNIntegrateの代わりに使用するものです . 数値としては求めることができますが, 式を求めるには別な方法を考える必要があります .


Created by Mathematica  (April 10, 2007) Valid XHTML 1.1!