本稿では,Igorで数値積分を実行する。

IgorにはIntegrate1dというコマンドがあり,シンプソン法やルンベルク法を用いた数値積分が簡単に行えるようになっている。
詳しくは,以下のリンクを参照のこと。
http://www.hulinks.co.jp/support/igor/reference/functions/integrate1D.html

例題として,sin(x)の数値積分を行った。
積分範囲は0からπまでとする。
結果は数値積分するまでもないが,2となる。

プロシージャーウィンドウで以下の関数(do_integとinteg_func)を記述する。
関数の名前は任意。
そして,エクスペリメントプロシージャウィンドウで,
Print do_integ(0,pi)
と記述する。
すると答えが得られて,
2
と出力される。

sin(x)の数値積分

 

Function do_integ(xmin,xmax)
    Variable xmin,xmax //積分範囲
    return Integrate1d(integ_func,xmin,xmax,1)  //引数の1はRomberg法の意
End

Function integ_func(inY) //積分したい関数を記述
    Variable inY
 Variable func
 func = sin(inY) //積分したい関数
    return (func) //Integrate1dに値を返す
End

積分範囲を0から2πにしたければ,
Print do_integ(0,2*pi)
とすればよい。
結果はNaN(0の意)が出力される。

積分したい関数をx^2にしたければ,
integ_func関数内のfunc = sin(inY)のところを,
func = inY*inY
とすればよい。

また,以下のように,関数内で積分結果を利用することも当然できる。
先の関数にmain関数を追加して,エクスペリメントプロシージャで,
main()
コマンドを入力すると,
answer = 2
と出力される。

数値積分の他の関数での利用

数値積分の他の関数での利用

Function main()
    Variable imin, imax, c
    imin = 0
    imax = pi
    c = do_integ(imin, imax)
    Printf “answer = %g”, c
End

Function do_integ(xmin,xmax)
    Variable xmin,xmax //積分範囲
    return Integrate1d(integ_func,xmin,xmax,1)  //引数の1はRomberg法の意
End

Function integ_func(inY) //積分したい関数を記述
    Variable inY
 Variable func
 func = sin(inY) //積分したい関数
    return (func) //Integrate1dに値を返す
End

広告