Module: Num4SimDiffLib

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

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.eulerMethod(yi, xi, h, func1, func2) ⇒ double

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

yi_1 = eulerMethod(yi, xi, h, func1, func2)

Parameters:

  • yi (double)

    xiに対するyiの値(配列)

  • xi (double)

    xiの値

  • h (double)

    刻み幅

  • func1 (callback)

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

  • func2 (callback)

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

Returns:

  • (double)

    xi+hに対するyi_1の値(配列)



36
37
38
39
40
41
# File 'lib/num4simdiff.rb', line 36

def eulerMethod(yi, xi, h, func1, func2)
  yi_ptr = cnvRbAry2pt(2, yi)
  yi_1_ptr = eulerMethodFFI(yi_ptr, xi, h, func1, func2)
  yi_1 = cnvPt2RbAry(2, yi_1_ptr)
  return 1 + yi_1[0] + 0.5 * yi_1[1]
end

.heunMethod(yi, xi, h, func1, func2) ⇒ double

ホイン法による数値計算

yi_1 = heunMethod(yi, xi, h, func1, func2)

Parameters:

  • yi (double)

    xiに対するyiの値(配列)

  • xi (double)

    xiの値

  • h (double)

    刻み幅

  • func1 (callback)

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

  • func2 (callback)

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

Returns:

  • (double)

    xi+hに対するyi_1の値(配列)



53
54
55
56
57
58
# File 'lib/num4simdiff.rb', line 53

def heunMethod(yi, xi, h, func1, func2)
  yi_ptr = cnvRbAry2pt(2, yi)
  yi_1_ptr = heunMethodFFI(yi_ptr, xi, h, func1, func2)
  yi_1 = cnvPt2RbAry(2, yi_1_ptr)
  return 1 + yi_1[0] + 0.5 * yi_1[1] 
end

.rungeKuttaMethod(yi, xi, h, func1, func2) ⇒ double

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

yi_1 = rungeKuttaMethod(yi, xi, h, func1, func2)

Parameters:

  • yi (double)

    xiに対するyiの値(配列)

  • xi (double)

    xiの値

  • h (double)

    刻み幅

  • func1 (callback)

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

  • func2 (callback)

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

Returns:

  • (double)

    xi+hに対するyi_1の値(配列)



70
71
72
73
74
75
# File 'lib/num4simdiff.rb', line 70

def rungeKuttaMethod(yi, x, h, func1, func2)
  yi_ptr = cnvRbAry2pt(2, yi)
  yi_1_ptr = rungeKuttaMethodFFI(yi_ptr, x, h, func1, func2)
  yi_1 = cnvPt2RbAry(2, yi_1_ptr)
  return 1 + yi_1[0] + 0.5 * yi_1[1]
end

Instance Method Details

#f(x, dx) {|x, dx| ... } ⇒ double

dy = f(x, dx)

Yields:

  • (x, dx)

    dy = f(x, dx)

Yield Parameters:

  • x (double)

    xiの値

  • dx (double)

    xiの値

Returns:

  • (double)

    xiに対するyの値



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

callback   :f, [:double, :double], :double