num4simdiff 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.yardopts +1 -0
- data/CHANGELOG.md +8 -0
- data/lib/num4simdiff.rb +44 -39
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 95091b2bd9e2416f649f80e1e5448759e7886de139a14444b685052cf7b20ee1
|
4
|
+
data.tar.gz: 236099213bb0bbc094763d2417491da6ba4fb42eca0cc4c0b3e194dd4d3c4ed9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5707ff3d96a6f47054da58fa00b345d2099942d9c79c8461f86546c348c51a2205be8beeccdecfc0074ef39b46c825989a2a2a0b31229ce3d03d8cdde388fc93
|
7
|
+
data.tar.gz: e29c905c5df822e684813c9d6daa5e5aa2a2e51971fa7d767701773a8c12cf7313b3e491d3a5e13ce4f85113255715f8570fca5afcce16df94e938df80bb28ed
|
data/.yardopts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--no-private
|
data/CHANGELOG.md
CHANGED
data/lib/num4simdiff.rb
CHANGED
@@ -9,64 +9,64 @@ module Num4SimDiffLib
|
|
9
9
|
|
10
10
|
# @overload f(x, dx)
|
11
11
|
# dy = f(x, dx)
|
12
|
-
# @yield [x] dy = f(x, dx)
|
12
|
+
# @yield [x, dx] dy = f(x, dx)
|
13
13
|
# @yieldparam [double] x xiの値
|
14
14
|
# @yieldparam [double] dx xiの値
|
15
15
|
# @return [double] xiに対するyの値
|
16
16
|
callback :f, [:double, :double], :double
|
17
17
|
|
18
|
-
#
|
19
|
-
# オイラー法による数値計算
|
20
|
-
# @overload eulerMethod(yi, xi, h, func1, func2)
|
21
|
-
# yi_1 = eulerMethod(yi, xi, h, func1, func2)
|
22
|
-
# @param [double] yi xiに対するyiの値(配列)
|
23
|
-
# @param [double] xi xiの値
|
24
|
-
# @param [double] h 刻み幅
|
25
|
-
# @param [callback] func1 xiに対する傾きを計算する関数
|
26
|
-
# @param [callback] func2 xiに対する傾きを計算する関数
|
27
|
-
# @return [double] xi+hに対するyi_1の値(配列)
|
28
|
-
#
|
29
18
|
attach_function :eulerMethodFFI,
|
30
19
|
:CNum4SimDiff_eulerMethod, [:buffer_in, :double, :double, :f, :f], :pointer
|
31
|
-
#
|
32
|
-
# ホイン法による数値計算
|
33
|
-
# @overload heunMethod(yi, xi, h, func1, func2)
|
34
|
-
# yi_1 = heunMethod(yi, xi, h, func1, func2)
|
35
|
-
# @param [double] yi xiに対するyiの値(配列)
|
36
|
-
# @param [double] xi xiの値
|
37
|
-
# @param [double] h 刻み幅
|
38
|
-
# @param [callback] func1 xiに対する傾きを計算する関数
|
39
|
-
# @param [callback] func2 xiに対する傾きを計算する関数
|
40
|
-
# @return [double] xi+hに対するyi_1の値(配列)
|
41
|
-
#
|
42
20
|
attach_function :heunMethodFFI,
|
43
21
|
:CNum4SimDiff_heunMethod, [:buffer_in, :double, :double, :f, :f], :pointer
|
44
|
-
#
|
45
|
-
# 4次のルンゲ=クッタ法による数値計算
|
46
|
-
# @overload rungeKuttaMethod(yi, xi, h, func1, func2)
|
47
|
-
# yi_1 = rungeKuttaMethod(yi, xi, h, func1, func2)
|
48
|
-
# @param [double] yi xiに対するyiの値(配列)
|
49
|
-
# @param [double] xi xiの値
|
50
|
-
# @param [double] h 刻み幅
|
51
|
-
# @param [callback] func1 xiに対する傾きを計算する関数
|
52
|
-
# @param [callback] func2 xiに対する傾きを計算する関数
|
53
|
-
# @return [double] xi+hに対するyi_1の値(配列)
|
54
|
-
#
|
55
22
|
attach_function :rungeKuttaMethodFFI,
|
56
23
|
:CNum4SimDiff_rungeKuttaMethod, [:buffer_in, :double, :double, :f, :f], :pointer
|
57
24
|
class << self
|
58
|
-
|
25
|
+
#
|
26
|
+
# オイラー法による数値計算
|
27
|
+
# @overload eulerMethod(yi, xi, h, func1, func2)
|
28
|
+
# yi_1 = eulerMethod(yi, xi, h, func1, func2)
|
29
|
+
# @param [double] yi xiに対するyiの値(配列)
|
30
|
+
# @param [double] xi xiの値
|
31
|
+
# @param [double] h 刻み幅
|
32
|
+
# @param [callback] func1 xiに対する傾きを計算する関数
|
33
|
+
# @param [callback] func2 xiに対する傾きを計算する関数
|
34
|
+
# @return [double] xi+hに対するyi_1の値(配列)
|
35
|
+
#
|
36
|
+
def eulerMethod(yi, xi, h, func1, func2)
|
59
37
|
yi_ptr = cnvRbAry2pt(2, yi)
|
60
|
-
yi_1_ptr = eulerMethodFFI(yi_ptr,
|
38
|
+
yi_1_ptr = eulerMethodFFI(yi_ptr, xi, h, func1, func2)
|
61
39
|
yi_1 = cnvPt2RbAry(2, yi_1_ptr)
|
62
40
|
return 1 + yi_1[0] + 0.5 * yi_1[1]
|
63
41
|
end
|
64
|
-
|
42
|
+
#
|
43
|
+
# ホイン法による数値計算
|
44
|
+
# @overload heunMethod(yi, xi, h, func1, func2)
|
45
|
+
# yi_1 = heunMethod(yi, xi, h, func1, func2)
|
46
|
+
# @param [double] yi xiに対するyiの値(配列)
|
47
|
+
# @param [double] xi xiの値
|
48
|
+
# @param [double] h 刻み幅
|
49
|
+
# @param [callback] func1 xiに対する傾きを計算する関数
|
50
|
+
# @param [callback] func2 xiに対する傾きを計算する関数
|
51
|
+
# @return [double] xi+hに対するyi_1の値(配列)
|
52
|
+
#
|
53
|
+
def heunMethod(yi, xi, h, func1, func2)
|
65
54
|
yi_ptr = cnvRbAry2pt(2, yi)
|
66
|
-
yi_1_ptr = heunMethodFFI(yi_ptr,
|
55
|
+
yi_1_ptr = heunMethodFFI(yi_ptr, xi, h, func1, func2)
|
67
56
|
yi_1 = cnvPt2RbAry(2, yi_1_ptr)
|
68
57
|
return 1 + yi_1[0] + 0.5 * yi_1[1]
|
69
58
|
end
|
59
|
+
#
|
60
|
+
# 4次のルンゲ=クッタ法による数値計算
|
61
|
+
# @overload rungeKuttaMethod(yi, xi, h, func1, func2)
|
62
|
+
# yi_1 = rungeKuttaMethod(yi, xi, h, func1, func2)
|
63
|
+
# @param [double] yi xiに対するyiの値(配列)
|
64
|
+
# @param [double] xi xiの値
|
65
|
+
# @param [double] h 刻み幅
|
66
|
+
# @param [callback] func1 xiに対する傾きを計算する関数
|
67
|
+
# @param [callback] func2 xiに対する傾きを計算する関数
|
68
|
+
# @return [double] xi+hに対するyi_1の値(配列)
|
69
|
+
#
|
70
70
|
def rungeKuttaMethod(yi, x, h, func1, func2)
|
71
71
|
yi_ptr = cnvRbAry2pt(2, yi)
|
72
72
|
yi_1_ptr = rungeKuttaMethodFFI(yi_ptr, x, h, func1, func2)
|
@@ -74,7 +74,9 @@ module Num4SimDiffLib
|
|
74
74
|
return 1 + yi_1[0] + 0.5 * yi_1[1]
|
75
75
|
end
|
76
76
|
|
77
|
-
|
77
|
+
#
|
78
|
+
# @private
|
79
|
+
#
|
78
80
|
def cnvRbAry2pt(n, ary)
|
79
81
|
yi_ptr = FFI::MemoryPointer.new(:double, n)
|
80
82
|
n.times.map { |i|
|
@@ -82,6 +84,9 @@ module Num4SimDiffLib
|
|
82
84
|
}
|
83
85
|
return yi_ptr
|
84
86
|
end
|
87
|
+
#
|
88
|
+
# @private
|
89
|
+
#
|
85
90
|
def cnvPt2RbAry(n, pt)
|
86
91
|
rbAry = n.times.map { |i|
|
87
92
|
pt.get_double(i * Fiddle::SIZEOF_DOUBLE)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: num4simdiff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- siranovel
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi-compiler
|
@@ -57,6 +57,7 @@ extensions:
|
|
57
57
|
- ext/num4simdiff/Rakefile
|
58
58
|
extra_rdoc_files: []
|
59
59
|
files:
|
60
|
+
- ".yardopts"
|
60
61
|
- CHANGELOG.md
|
61
62
|
- Gemfile
|
62
63
|
- LICENSE
|
@@ -69,7 +70,7 @@ licenses:
|
|
69
70
|
- MIT
|
70
71
|
metadata:
|
71
72
|
changelog_uri: http://github.com/siranovel/num4simdiffrent/blob/main/CHANGELOG.md
|
72
|
-
documentation_uri: https://rubydoc.info/gems/num4simdiff/0.0.
|
73
|
+
documentation_uri: https://rubydoc.info/gems/num4simdiff/0.0.3
|
73
74
|
homepage_uri: http://github.com/siranovel/num4simdiffrent
|
74
75
|
post_install_message:
|
75
76
|
rdoc_options: []
|