Module: Num4DiffLib

Extended by:
FFI::Library
Defined in:
lib/num4diff.rb

Overview

数値計算による常微分方程式の解法するライブラリ

Instance Method Summary collapse

Instance Method Details

#adamsBashforthMethod(k, a, b, y0, h, func) ⇒ double

アダムス・バッシュフォース法(k段)による数値計算

Examples:

yi = 1.0
h = 0.001
a = 1
func = Proc.new{|x|
    1.0 + a * x 
}
yi_1 =  Num4DiffLib::adamsBashforthMethod(2, 0, 1, yi, h, func)  

Returns [a,b]の積分値.

Parameters:

  • k (int)

    k段アダムス法

  • a (double)

    下限値

  • b (double)

    上限値

  • y0 (double)

    y(x0=a)の値

  • h (double)

    刻み幅

  • func (callback)

    xiに対する傾きを計算する関数

Returns:

  • (double)

    [a,b]の積分値



94
95
# File 'lib/num4diff.rb', line 94

attach_function :adamsBashforthMethod,
:CNum4Diff_Multistage_adamsBashforthMethod, [:int, :double, :double, :double, :double, :f], :double

#adamsMoultonMethod(k, a, b, y0, h, func) ⇒ double

アダムス・ムルトン法(k段)による数値計算

Examples:

yi = 1.0
h = 0.001
a = 1
func = Proc.new{|x|
    1.0 + a * x 
}
yi_1 =  Num4DiffLib::adamsMoultonMethod(2, 0, 1, yi, h, func)  

Returns [a,b]の積分値.

Parameters:

  • k (int)

    k段アダムス法

  • a (double)

    下限値

  • b (double)

    上限値

  • y0 (double)

    y0 y(x0=a)の値

  • h (double)

    刻み幅

  • func (callback)

    xiに対する傾きを計算する関数

Returns:

  • (double)

    [a,b]の積分値



115
116
# File 'lib/num4diff.rb', line 115

attach_function :adamsMoultonMethod,
:CNum4Diff_Multistage_adamsMoultonMethod, [:int, :double, :double, :double, :double, :f], :double

#eulerMethod(yi, xi, h, func) ⇒ double

オイラー法による数値計算

Examples:

yi = 1.0
h = 0.001
a = 1
func = Proc.new{|x|
    1.0 + a * x 
}
yi_1 =  Num4DiffLib::eulerMethod(yi, 0.0, h, func)  

Returns xi+hに対するyi_1の値.

Parameters:

  • yi (double)

    xiに対するyiの値

  • xi (double)

    xiの値

  • h (double)

    刻み幅

  • func (callback)

    xiに対する傾きを計算する関数

Returns:

  • (double)

    xi+hに対するyi_1の値



35
36
# File 'lib/num4diff.rb', line 35

attach_function :eulerMethod,
:CNum4Diff_Tier_eulerMethod, [:double, :double, :double, :f], :double

#f(xi) {|x| ... } ⇒ double

dy = f(xi)

Yields:

  • (x)

    dy = f(x)

Yield Parameters:

  • xi (double)

    xiの値

Returns:

  • (double)

    xiに対するyの値



16
# File 'lib/num4diff.rb', line 16

callback   :f, [:double], :double

#heunMethod(yi, xi, h, func) ⇒ double

ホイン法による数値計算

Examples:

yi = 1.0
h = 0.001
a = 1
func = Proc.new{|x|
    1.0 + a * x 
}
yi_1 =  Num4DiffLib::heunMethod(yi, 0.0, h, func)  

Returns xi+hに対するyi_1の値.

Parameters:

  • yi (double)

    xiに対するyiの値

  • xi (double)

    xiの値

  • h (double)

    刻み幅

  • func (callback)

    xiに対する傾きを計算する関数

Returns:

  • (double)

    xi+hに対するyi_1の値



54
55
# File 'lib/num4diff.rb', line 54

attach_function :heunMethod,
:CNum4Diff_Tier_heunMethod, [:double, :double, :double, :f], :double

#rungeKuttaMethod(yi, xi, h, func) ⇒ double

4次のルンゲ=クッタ法による数値計算

Examples:

yi = 1.0
h = 0.001
a = 1
func = Proc.new{|x|
    1.0 + a * x 
}
yi_1 =  Num4DiffLib::rungeKuttaMethod(yi, 0.0, h, func)  

Returns xi+hに対するyi_1の値.

Parameters:

  • yi (double)

    xiに対するyiの値

  • xi (double)

    xiの値

  • h (double)

    刻み幅

  • func (callback)

    xiに対する傾きを計算する関数

Returns:

  • (double)

    xi+hに対するyi_1の値



73
74
# File 'lib/num4diff.rb', line 73

attach_function :rungeKuttaMethod,
:CNum4Diff_Tier_rungeKuttaMethod, [:double, :double, :double, :f], :double