Module: Num4EquLib

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

Overview

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

Class Method Summary collapse

Class Method Details

.bisection(a, b, func) ⇒ double

二分法による解法

Parameters:

  • a (double)

    aの値

  • b (double)

    bの値

  • func (callback)

    aに対する値を計算

Returns:

  • (double)

    xの値

Raises:

  • RangeError



43
44
45
46
47
48
49
50
51
52
# File 'lib/num4equ.rb', line 43

def bisectionMethod(a, b, func)
    ok_ptr = FFI::MemoryPointer.new :int 
    x = bisectionMethodFFI(a, b, func, ok_ptr)
    ok = ok_ptr.read_int
    ok_ptr.free()
    if ok < 0 then
        raise RangeError.new("a:" + a.to_s + " " + "b:" + b.to_s)
    end
    return x
end

.newtonMethod(a, func, dfunc) ⇒ double

ニュートン法による解法

Parameters:

  • a (double)

    aの値

  • func (callback)

    aに対する値を計算

  • dfunc (callback)

    fに対する微分関数

Returns:

  • (double)

    xの値

Raises:

  • RangeError



26
27
28
29
30
31
32
33
34
35
# File 'lib/num4equ.rb', line 26

def newtonMethod(a, func, dfunc)
    ok_ptr = FFI::MemoryPointer.new :int 
    x = newtonMethodFFI(a, func, dfunc, ok_ptr)
    ok = ok_ptr.read_int
    ok_ptr.free()
    if ok < 0 then
        raise RangeError.new("a:" + a.to_s)
    end
    return x
end